Text
                    ЛЕКЦИИ
по ДИСКРЕТНОЙ
МАТЕМАТИКЕ
Множества. Отношения. Комбинаторика
Основные алгебраические структуры:
полугруппы, группы, кольца, поля,
булевы алгебры, решетки
Алгоритмические системы,
их свойства и приложения
Элементы математической логики
Основные положения теории графов,
теория автоматов и формальных грамматик
УЧЕБНОЕ ПОСОБИЕ


ЛЕКЦИИ по ДИСКРЕТНОЙ МАТЕМАТИКЕ Санкт-Петербург «БХВ-Петербург» 2004
ЧУДК 681.3.06X075.8) ББК 32.973.26-018.2я73 К20 Капитонова Ю. В. и др. К20 Лекции по дискретной математике / Авторы: Ю. В. Капитонова, С. Л. Кривой, А. А. Летичевский, Г. М. Луцкий / - СПб.: БХВ- Петербург, 2004. — 624 с: ил. ISBN 5-94157-546-7 Изложены методы и средства дискретной математики как инструментария при обработке информации в компьютерах. Книга состоит из трех частей: математические основы, математические модели и приложения, в которых представлены наиболее часто употребляемые в теоретической и прикладной информатике математические конструкции. Освещаются основные математические свойства той или иной теории вместе с данными, необходимыми для решения упражнений. Материал пособия построен на использовании аксиоматического метода и может служить основой для таких курсов как базы данных и базы знаний, теории сетей Петри и традиционных систем, методы оптимизации и обоснования алгоритмов и программ, системы искусственного интеллекта, компьютерная алгебра и геометрия. Для студентов и аспирантов высших учебных заведений УДК 681.3.06(075.8) ББК32.973.26-018.2я73 Группа подготовки издания: Главный редактор Екатерина Кондукова Зам. гл. редактора Людмила Еремеевская Зав. редакцией Григорий Добин Редактор Алексей Семенов Компьютерная верстка Натальи Караваевой Корректор Светлана Симу ни Дизайн обложки Игоря Цырульникова Зав. производством Николай Тверских Лицензия ИД № 02429 от 24.07.00. Подписано в печать 19.07.04. Формат 70x1001/ie. Печать офсетная. Усл. печ. л.50,31. Тираж 3000 экз. Заказ № 3427. "БХВ-Петербург", 190005, Санкт-Петербург, Измайловский пр., 29. Гигиеническое заключение на продукцию, товар № 77.99.02.953.Д.001537.03.02 от 13.03.2002 г. выдано Департаментом ГСЭН Минздрава России. Отпечатано с готовых диапозитивов в ГУЛ Типография "Наука" 199034, Санкт-Петербург, 9 линия, 12 ISBN 5-94157-546-7 © ОМД Групп, 2004 О Оформление, издательство НБХВ-Петербург", 2004
Содержание Предисловие 1 ЧАСТЬ I. МАТЕМАТИЧЕСКИЕ ОСНОВЫ 5 Глава 1. Множества, отношения, комбинаторика 7 1.1. Множества, отношения, функции, операции 7 1.1.1. Интуитивное понятие множества. Основные принципы 7 1.1.2. Операции над множествами. Законы для операций 11 1.1.3. Декартово произведение множеств. Отношения 17 1.1.4. Примеры отношений 19 1.1.5. Примеры отображений 32 1.1.6. Аксиоматика Цермелло-Френкеля 39 1.1.7. Контрольные вопросы 39 1.1.8. Задачи и упражнения 40 1.2. Элементы комбинаторного анализа 46 1.2.1. Основное правило комбинаторики 46 1.2.2. Число различных ^элементных подмножеств я-элементного множества 47 1.2.3. Число подмножеств данного множества 50 1.2.4. Перестановки и размещения упорядоченных множеств 51 1.2.5. Перестановки с повторениями 52 1.2.6. Размещение элементов множества 53 1.2.7. Комбинации элементов с повторениями 55 1.2.8. Бином Ньютона 56 1.2.9. Свойства биномиальных коэффициентов 58 1.2.10. Метод рекуррентных соотношений 59 1.2.11. Метод включений и исключений 62 1.2.12. Метод производящих функций 65 1.2.13. Контрольные вопросы 69 1.2.14. Задачи и упражнения 69
IV Содержание Глава 2. Основные понятия общей алгебры 72 2.1. Универсальные алгебры 72 2.1.1. Общие сведения 72 2.1.2. Отношение конгруэнтности 73 2.1.3. Гомоморфизмы универсальных алгебр 75^ 2.1.4. Язык (алгебра) термов 78 2.1.5. Производные операции и конечные алгебры 80 2.2. Свободные аглебры и их основные свойства 82 2.2.1. Абсолютно свободные алгебры 82 2.2.2. Свободный группоид 82 2.2.3. Свободная полугруппа 83 2.2.4. Свободная коммутативная полугруппа 84 2.2.5. Свободные группы 85 2.2.6. Свободные абелевы группы 89 2.2.7. Свободное кольцо 94 2.2.8. Векторные пространства 100 2.2.9. Булевы алгебры 102 2.2.10. Структуры 114 2.2.11. Многоосновные алгебры. Алгебра алгоритмов Глушкова 121 2.3. Полные структуры и полукольца 125 2.3.1. Полные структуры 125 2.3.2. Замкнутые полукольца 126 2.4. Контрольные вопросы 129 2.5. Задачи и упражнения 129 Глава 3. Элементы теории алгоритмов и математической логики 133 3.1. Понятие алгоритма и алгоритмической системы 133 3.1.1. Интуитивное понятие алгоритма : 133 3.1.2. Вычислимые и частично рекурсивные функции. Тезис Черча 134 3.1.3. Алгоритмические проблемы < 140 3.1.4. Машины Поста и машины Тьюринга 142 3.1.5. Алгоритмическая система Маркова 147 3.1.6. Контрольные вопросы 162 3.1.6. Задачи и упражнения 162 3.2. Исчисление высказываний 165 3.2.1. Алфавит и формулы 165 3.2.2. Интерпретация формул логики и высказываний 167 3.2.3. Полные системы связок 168 3.2.4. Система аксиом для исчисления высказываний 170 3.2.5. Теорема дедукции 173 3.2.6. Непротиворечивость и полнота исчисления высказываний 177 3.2.7. Исчисление высказываний и булевы алгебры 180
Содержание 3.3. Методы проверки тождественной истинности формул исчисления высказываний 181 3.3.1. Алгебраический метод 182 3.3.2. Метод Куайна 182 3.3.3. Метод редукции 183 3.3.4. Метод Девиса-Патнема 184 3.3.5. Метод резолюций 186 3.3.6. Контрольные вопросы 188 3.3.7. Задачи и упражнения 189 3.4. Исчисление предикатов первого порядка 191 3.4.1. Алфавит и формулы 191 3.4.2. Истинность интерпретации, модели 193 3.4.3. Аксиоматика и правила вывода 197 3.4.4. Основные свойства теории первого порядка 198 3.4.5. Нормальные формы формул логики предикатов первого порядка ; 209 3.4.6. Скулемовские стандартные формы 212 3.4.7. Классификация логик 215 3.4.8. Понятие о неклассических логиках 217 3.4.9. Понятие алгебраической системы 234 3.4.10. Контрольные вопросы 238 3.4.11. Задачи и упражнения 238 Глава 4. Элементы теории графов 241 4.1. Определение графов, разновидности графов 241 4.1.1. Определение неориентированного графа 241 4.1.2. Разновидности графов 243 4.1.3. Изоморфизм графов. Подграфы .....246 4.1.4. Контрольные вопросы 247 4.1.5. Задачи и упражнения 247 4.2. Операции над графами 248 4.2.1. Операция удаления ребра 248 4.2.2. Операция удаления вершины 248 4.2.3. Операция введения ребра 249 4.2.4. Операция введения вершины в ребро 249 4.2.5. Операция объединения графов 249 4.2.6. Произведение графов 250 4.2.7. Отождествление (слияние) вершин 250 4.2.8. Операция стягивания ребра 251 4.2.9. Операция раздвоения (расщепления) вершины 251 4.2.10. Операция соединения графов 252 4.2.11. Операция дополнения графа 252 4.3. Свойства графов 253 4.3.1. Маршруты, циклы, связность 253
W Содержание 4.3.2. Свойства регулярных графов 254 4.3.3. Свойства двудольных графов 255 4.3.4. Свойства связных графов 257 4.3.5. Метрические характеристики связных графов 260 4.3.6. Свойства эйлеровых графов 261 4.3.7. Свойства гамильтоновых графов 264 4.4. Матрицы и фафы 265 4.4.1. Матрицы смежностей и достижимости : 265 4.4.2. Матрица Кирхгофа 268 4.4.3. Матрица инцидентности графа 269 4.5. Планарность и укладка графов 269 4.5.1. Плоские и планарные графы 269 4.5.2. Грани плоского графа. Формула Эйлера 276 4.6. Раскраска графов. Хроматическое число 277 4.6.1. Правильная раскраска 278 4.6.2. Практические задачи, сводящиеся к задаче раскраски 279 4.6.3. Хроматические числа некоторых графов 280 4.6.4. Гипотеза четырех красок 283 4.6.5. Гипотеза четырех красок для карт 283 4.7. Бесконечные фафы 284 4.7.1. Конфольные вопросы 287 4.7.2. Задачи и упражнения 288 4.8. Деревья 289 4.8.1. Определение дерева. Свойства деревьев 289 4.8.2. Фундаментальная система циклов фафа 293 4.8.3. Остов наименьшего веса 295 4.9. Ориентированные фафы и деревья 296 4.9.1. Основные понятия 296 4.9.2. Бинарные отношения и орфафы 299 4.9.3. Размеченные фафы и представление термов 300 4.9.4. Конфольные вопросы 303 4.9.5. Задачи и упражнения 304 ЧАСТЬ II. МАТЕМАТИЧЕСКИЕ МОДЕЛИ 307 Глава 5. Абстрактная теория автоматов 309 5.1. Основные определения 309 5.1.1. Определение автомата и его разновидности 309 5.1.2. Таблицы переходов и выходов 312 5.1.3. Граф переходов и выходов 313 5.1.4. Подавтоматы. Гомоморфизмы автоматов 315 5.1.5. Теорема о приведенном автомате 320
Содержание VII 5.2. Представление событий в автоматах. Автоматы Мура и недетерминированные автоматы 323 5.2.1. Автоматные отображения 323 5.2.2. Автоматные системы событий 327 5.2.3. Автоматы Мура 329 5.2.4. Недетерминированные автоматы 333 5.2.5. Задачи и упражнения 335 Глава 6. Теория конечных автоматов 337 6.1. События, алгебра регулярных событий. Основная теорема теории конечных автоматов 337 6.1.1. Регулярные события 337 6.1.2. Теорема анализа конечных автоматов 339 6.1.3. Теорема синтеза конечных автоматов 343 6.1.4. Задачи и упражнения 351 6.2. Практические методы анализа и синтеза конечных автоматов 353 6.2.1. Уравнения в алгебре событий 353 6.2.2. Системы линейных уравнений 354 6.2.3. Применение уравнений в алгебре событий к задачам анализа и синтеза конечных автоматов 356 6.2.4. Основной алгоритм синтеза конечных автоматов 358 6.2.5. Контрольные вопросы 363 6.2.6. Задачи и упражнения 363 6.3. Минимизация конечных автоматов без выходов 364 6.3.1. Общий алгоритм минимизации 365 6.3.2. Алгоритм минимизации конечных автоматов без выходов 366 6.3.3. Алгоритм минимизации ациклических автоматов 368 6.4. Алгоритмы построения конгруэнтных замыканий для конечных автоматов 374 6.4.1. Определение отношения конгруэнтного замыкания 374 6.4.2. Общий алгоритм вычисления конгруэнтного и симметричного конгруэнтного замыканий 376 6.4.3. Алгоритм вычисления конгруэнтных замыканий для ациклических автоматов 384 6.4.4. Контрольные вопросы 387 6.4.5. Задачи и упражнения 388 Глава 7. Модели алгоритмов и программ 389 7.1. Машины Тьюринга 389 7.1.1. Определение и функционирование 389 7.1.2. Словарное представление машины Тьюринга 393 7.1.3. Алгоритмически разрешимые и неразрешимые проблемы 393 7.1.4. Контрольные вопросы 398 7.1.5. Задачи и упражнения 398
VIII Содержание 7.2. Конечные автоматы с одной лентой 398 7.2.1. Определение автомата с одной лентой 398 7.2.2. Проблема пустоты 400 7.2.3. Проблема бесконечности 400 7.3. Магазинные автоматы 401 7.3.1. Определение магазинного автомата 401 7.3.2. Представление языков в магазинных автоматах 404 7.3.3. Анализ магазинных автоматов 405 7.3.4. Синтез магазинных автоматов 407 7.3.5. Контрольные вопросы 409 7.3.6. Задачи и упражнения 409 7.4. Дискретные динамические системы 410 7.4.1. Контрольные вопросы 413 7.4.2. Задачи и упражнения 413 7.5. U—Y-схемы программ над памятью 414 7.5.1. Контрольные вопросы 418 7.5.2. Задачи и упражнения 418 Глава 8. Формальные грамматики и формальные языки 419 8.1. Регулярные грамматики и их свойства 419 8.1.1. Определение формальной грамматики 419 8.1.2. Классификация грамматик 424 8.1.3. Правоволинейные и леволинейные грамматики (регулярные грамматики) и конечные автоматы 427 8.1.4. Задачи и упражнения 431 8.2. Контекстно-свободные грамматики и их свойства 433 8.2.1. Контекстно-свободные грамматики и уравнения 433 8.2.2. Уравнения, КС-языки и магазинные автоматы 438 8.2.3. Задачи и упражнения 440 ЧАСТЬ III. ПРИЛОЖЕНИЯ 441 Глава 9. Алгебры в компьютерных информационных технологиях 443 9.1. Преобразования в векторных пространствах..... 443 9.1.1. Перемещения плоскости 443 9.1.2. Группы преобразований плоскости 448 9.1.3. Перемещения пространства 450 9.1.4. Группы преобразований пространства 456 9.1.5. Масштаб 458 9.1.6. Проекции 459 9.2. Реляционная алгебра и понятие реляционной базы данных 462 9.2.1. Определение реляционной алгебры 462
Содержание IX 9.2.2. Некоторые свойства операций реляционной алгебры 468 9.2.3. Контрольные вопросы 470 9.2.4. Задачи и упражнения 471 9.3. Алгебраическая система списковых структур 472 9.3.1. Списки. Операции над списками 472 9.3.2. Реализация списков в памяти ЭВМ 479 9.3.3. Сложность выполнения операций над списками 480 9.3.4. Разновидности списков 481 9.3.5. Задание графов с помощью списков 482 9.3.6. Задание множеств и термов с помощью списков 483 9.3.7. Контрольные вопросы 486 9.3.8. Задачи и упражнения 486 Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 487 10.1. Универсальный программный автомат 487 10.2. Применение в системах подготовки и редакции текстов 493 10.2.1. Идентификация слов при построении текстовых редакторов 493 10.2.2. Понятие гипертекста 498 10.2.3. Контрольные вопросы 499 10.2.4. Задачи и упражнения 499 10.3. Компьютерная алгебра 499 10.3.1. Задача упрощения алгебраических выражений 499 10.3.2. Важные упрощения 502 10.3.3. Полные системы редукций, критические пары, алгоритм пополнения 503 10.3.4. Алгоритм Кнута-Бендикса критической пары 506 10.3.5. Алгоритм пополнения Кнута-Бендикса 509 10.3.6. Проблема общих подвыражений и канонизации для свободных групп 511 10.3.7. Задачи и упражнения 526 10.4. Теорема Холла и ее применение 527 10.4.1. Трансверсали 529 10.4.2. Латинские квадраты 530 10.5. Теорема Менгера и потоки в сетях 531 10.5.1. Задачи и упражнения 539 Глава 11. Методы поиска доказательств теорем в логике предикатов 540 11.1. Метод Эрбрана 541 1.1.1. Основные определения 541 11.1.2. Семантические деревья 545 11.1.3. Теорема Эрбрана 547
X Содержание 11.2. Метод резолюций 548 11.2.1. Контрарные пары и подстановки 548 11.2.2. Алгоритм унификации 550 11.2.3. Метод резолюций для логики предикатов первого порядка 555 11.2.4. Примеры применения метода резолюций 560 11.2.5. Правило поглощения 562 11.3. Контрольные вопросы 567 11.4. Задачи и упражнения 567 Глава 12. Основные понятия теории программных инвариантов 570 12.1. Инварианты в состояниях U-Y-программ и языки инвариантов 570 12.1.1. Определение программного инварианта 570 12.1.2. Методы поиска программных инвариантов 573 12.2. Язык равенств. Основные задачи 575 12.2.1. Основные задачи теории программных инвариантов 575 12.2.2. Алгоритмы поиска программных инвариантов 577 12.3. Поиск инвариантов в программах над свободными алгебрами данных 586 12.4. Векторные пространства 596 12.4.1. Решение основных задач 596 12.4.2. Свободные абелевы группы и коммутативные полугруппы 601 12.4.3. Примеры 602 12.5. Задачи и упражнения 609 Список литературы 611
Предисловие Учебник посвящен выдающемуся деятелю отечественной науки Виктору Михайловичу Глушкову, Герою Социалистического труда, вице-президенту Академии наук Украины, профессору, доктору физико-математических наук, действительному члену Академии наук Украины и Академии наук СССР, лауреату Ленинской премии, дважды лауреату Государственной премии СССР, дважды лауреату Государственной премии Украины, кавалеру многих орденов и медалей, заслуженному деятелю науки и техники, творческое наследие которого включает более 800 научных трудов, в том числе и 30 монографий. В. М. Глушков является автором многочисленных плодотворных научных идей, которые не утратили своего значения и сегодня. Первая идея — это идея представления облика вычислительной системы в виде системы алгебрологических выражений, над которыми можно выполнять ряд преобразований, а также в виде сети алгоритмических модулей. Эти модули в свою очередь можно рассматривать как сети алгоритмических модулей и т. п. Идея алгебрологических преобразований имеет универсальный характер и может воплощаться как в аппаратуре, так и в программе. Вторая идея, плодотворно используемая ныне, — это идея алгоритма очевидности. Суть этой идеи состоит в создании специализованной программы для автоматизированной обработки математических текстов. Математический текст служит входными данными, а программа сама определяет, что именно расшифровывается, а что нет, и выдает запрос на то, как определить, что она не может расшифровывать. Третья идея — это идея рекурсивной вычислительной машины новой формации с неограниченным наращиванием памяти и быстродействия. Эта идея частично была реализована в макроконвейерном вычислительном комплексе. Машины с массовым параллелизмом преодолевают границы классического стиля организации вычислений и фактически представляют новый тип вычислительных систем (такие системы сейчас изготавливаются в Японии и США).
2 Предисловие Макроконвейерная организация вычислений была использована в суперЭВМ ЕС 1766, что дало возможность решать задачи с предельной скоростью около 532 млн операций в секунду. Макроконвейерный принцип подтвердил возможность почти линейного наращивания быстродействия путем использования арифметических процессоров. Четвертая идея — это идея создания искусственного интеллекта как отдельной системы, которая определяется своим разумом, размещаемым в базах знаний, и динамически самоорганизующимися системами преобразований. Идея носит незаурядный характер, поскольку дает возможность воплощать универсальные способы работы со "знаниями". Эти идеи и творческое наследие В. М. Глушкова были признаны международной общественностью, которая оценила В. М. Глушкова как выдающегося организатора, создавшего Институт кибернетики в 1962 году. Институт кибернетики объединил многих людей, способных заниматься научными исследованиями. С научной школой В. М. Глушкова успешно сотрудничали школы других выдающихся деятелей отечественной науки: академиков А. А. Дородницына, Ю. Л. Ершова, А. П. Ершова, В. С. Михалевича, А. И. Кухтенко, И. В. Сергиенко, В. М. Кунцевича, Б. Б. Тимофеева, В. И. Скурихина, М. 3. Згуровского, И. И. Ляшко, Б. М. Пшеничного, Н. 3. Шора и многих других. Переходя непосредственно к характеристике данного учебника, необходимо отметить еще одну идею, которую развивал В. М. Глушков. Основу современных скоростных и качественных технологий обработки информации составляют компьютеры — от персональных до суперЭВМ. Представление информации для ЭВМ дискретное, и ее обработка состоит из последовательностей элементарных преобразований тех или других информационных единиц (слов, букв, цифр и т. п.). Следовательно, фундаментальной идеей для отображения реального мира в компьютере является идея дискретизации объектов. Для эффективной работы на компьютере необходимо научиться строить модели реальных объектов и процессов их преобразования. Достаточно часто в качестве подобных моделей встречаются такие конструкции дискретной математики как алгебра, формула, автомат, граф, алгоритм и др. Последнее время благодаря потребностям компьютерной области дискретная математика развивается достаточно динамично. Ее разделы пополняются новыми результатами, возникающими от своеобразного взаимодействия разных областей знаний, обслуживающих компьютеры. Авторы ставят целью систематическое изложение способов дискретной математики как инструментария для представления и обработки информации в компьютерах, а также алгебрологических методов решения задач. В частности, в первый том вошли такие разделы, как теория множеств и отношений,
Предисловие 3 основные понятия общей алгебры, элементы математической логики и теория графов. При этом отражаются основные математические свойства той или иной теории наряду с фактами, которые будут нужны в дальнейшем. К сожалению, достаточно ограниченный объем учебника в целом повлиял на полноту изложения материала. Пришлось сократить число задач и исключить доказательства некоторых теорем, а отдельные разделы изложены достаточно сжато, хотя авторы стремились, чтобы приведенные факты давали полное понимание сути той или иной теории и ее проблематики. Материал дается на основе аксиоматического метода, поэтому от читателя требуется определенная математическая культура и минимальное знание высшей алгебры и математического анализа. Материал учебника может служить основой для таких спецкурсов, как базы данных и базы знаний, теория алгоритмов, компьютерная алгебра и компьютерная геометрия, текстовые и графические редакторы и тому подобных.
ЧАСТЬ I МАТЕМАТИЧЕСКИЕ ОСНОВЫ Глава 1. Множества, отношения, комбинаторика Глава 2. Основные понятия общей алгебры Глава 3. Элементы теории алгоритмов и математической логики Глава 4. Элементы теории графов
Глава 1 Множества, отношения, комбинаторика Понятие множества — одно из основных, если не основное, понятий математики. Оно не имеет точного определения, и его следует отнести к аксиоматическим понятиям. Такими аксиоматическими понятиями, например, в элементарной геометрии являются понятия точка, прямая, плоскость. Как правило, термин множество объясняется с помощью примеров, а потом указываются правила его использования в математических применениях. Последнее можно сделать на разных уровнях строгости. Детальное и строгое изложение теории множеств требовало бы скрупулезного анализа логики математических суждений, а это — специальная самостоятельная тема, которая относится к области основ математики. Для наших целей достаточно выбрать уровень так называемой интуитивной теории множеств. 1.1. Множества, отношения, функции, операции 1.1.1. Интуитивное понятие множества. Основные принципы Как было сказано выше, понятие множества относится к аксиоматическим понятиям математики, и точное его определение дать невозможно. Часто принимается формулировка интуитивного понятия множества Г. Кантора, основоположника этой теории: "Произвольная совокупность определенных предметов нашей интуиции или интеллекта, которые можно отличить один от другого и которые представляются как единое целое, называется множеством. Предметы, которые входят в состав множества, называются его элементами".
8 Часть /. Математические основы Существенным пунктом канторовского понятия множества является то, что совокупность предметов рассматривается как один предмет ("представляется как единое целое"). Основное внимание тут переносится с отдельных предметов на совокупности предметов, которые, в свою очередь, можно рассматривать как предметы. Что касается "предметов нашей интуиции или интеллекта", то эта формулировка дает значительную свободу прежде всего тем, что никак не ограничивает природу предметов, составляющих множество. Множество может состоять, например, из людей, точек плоскости, простых чисел, планет Вселенной. Заметим также, что канторовская формулировка множества дает возможность рассматривать множества, элементы которых по определенной причине точно задать невозможно. В связи с этим вспомним, что элементы любого бесконечного множества, даже теоретически, нельзя собрать в законченную совокупность (с этой проблемой связана философская абстракция так называемой актуальной бесконечности). Известны также и конечные множества, которые имеют такую же меру неопределенности, как и любое бесконечное множество. Выясним, наконец, смысл выражений: "которые можно отличить один от другого" и "определенные предметы". В первом случае для любых двух предметов, которые рассматриваются как элементы данного множества, должна существовать возможность выяснить, различные это предметы или одинаковые. В другом случае, если задано некоторое множество и какой-нибудь предмет, то можно определить, является ли этот предмет элементом данного множества. Отсюда следует, что всякое множество полностью определяется своими элементами. Это канторовское требование формулируется как: Интуитивный принцип объемности или аксиома экстенсиональности. Два множества равны тогда и только тогда, когда они состоят из одних и тех же элементов. Равенство двух множеств А и В обозначают А= В. Таким образом, два множества равны, если каждый элемент одного из них является элементом другого и наоборот. Множество называется конечным, если оно состоит из конечного числа элементов. Запись a e A (a £ А) означает, что а является (не является) элементом множества А. Однозначно определенное множество, элементами которого являются а/, <?2,..., ап, обозначается { я/, <?2, —»<*п }• Пример 1.1.1 □ Множество {а} — так называемое одноэлементное множество — это множество, единственным элементом которого является элемент а. □ Множества Л = {2,4,6}, В = {2,6,4}, С ={2,2,6,4,4}, С'= {2,2,4,4,6,6}, ... равны, поскольку состоят из одних и тех же элементов. Первое и второе
Глава 1. Множества, отношения, комбинаторика 9 множества отличаются одно от другого порядком своих элементов, а третье, четвертое и т. д. от первых двух тем, что в них элементы 2, 4 и 6 присутствуют в двух экземплярах каждый. □ Множества {{я, b}, {b, с}} и {я, Ъ, с} не равны, поскольку первое состоит из элементов {я, Ь} и {Ь, с}, а второе — из элементов я, Ъ, с. П Множества {{1, 2}} и {1, 2} не равны, поскольку первое множество одноэлементное, а второе — двухэлементное. Последний пример показывает, что необходимо различать предмет и множество, единственным элементом которого является этот предмет. * Рассмотрим более детально ситуацию, которая имеет место во втором пункте примера 1.1.1. Из принципа объемности следует, что все множества типа множеств С, С и т.д., которые были приведены в этом примере, равны между собой и равны множеству^. Множество, которое состоит из элементов некоторого множества А так, что эти элементы могут входить в состав этого множества в каком угодно коли честве экземпляров, будем называть мультимножеством множества Л и обозначать его М(А). С точки зрения теории множеств, множество и его мультимножество — это один и тот же объект, и они могут между собой не различаться. Однако часто, особенно когда речь заходит о представлении множества в памяти вычислительной машины, возникает потребность отличать мультимножество от множества. Задание множества с помощью фигурных скобок с явным перечислением его элементов целесообразно лишь тогда, когда множество имеет их ограниченное количество. Если же множество имеет хотя и конечное, однако большое количество элементов, такое задание множества достаточно громоздко, а в случае бесконечного множества его применение вообще невозможно. Возникает вопрос: как задавать множества, которые имеют большое или бесконечное число элементов? Ответ связан с понятием свойства. Пока что ограничимся интуитивным понятием свойства. Под свойством предмета х будем понимать такое повествовательное пред ложение, в котором нечто утверждается относительно предмета х и которое можно характеризовать как истинное или ложное по отношению к х. Пример 1.1.2 □ Свойствами являются такие записи: • 3 делит*; • jc <jc;
10 Часть I. Математические основы • х2 = 2- • х2+1>0. □ Выражения: • для всех х, у ху = ух; • существует такой х, что 2х < 0; не являются свойствами, потому что их нельзя характеризовать как истинные или ложные относительно х. * Пусть Р(х) означает некоторое свойство, тогда Р(а) будет означать то же самое свойство, но с заменой х на а. Задание множества в терминах свойств достигается с помощью такого принципа: Интуитивный принцип абстракции или аксиома свертки. Всякое свойство Р(х) определяет некоторое множество А с помощью условия: элементами множества А являются те и только те предметы я, которые имеют свойство Р. В силу принципа абстракции всякое свойство Р(х) определяет единственное множество, которое обозначают {а \ Р(а)} и читают так: "множество всех тех предметов я, что Р(а)". Заметим, что свойство Р может представлять собой способ построения элементов множества {а \ Р(а)}. Пусть А — некоторое множество, а Р(х) имеет вид х*х, тогда множество {а | Р(а)} = {а \ а * я}, очевидно, не имеет элементов. Из принципа объемности следует, что может существовать только одно множество, которое не имеет элементов. Это множество называется пустым множеством и обозначается 0. Пример 1.1.3. Множества □ Множество натуральных чисел {0, 1,2, ...,п, ...}, которое обозначают буквой N. Это множество можно задать с помощью принципа свертки. Пусть А = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} — множество из десяти элементов, которое будем называть алфавитом. Всякий набор символов из этого алфавита, записанных один за другим, назовем словом в алфавите А. Например, р = 0020034985700 — слово в алфавите А, а р - 00я26543с не является словом в алфавите Л, поскольку в его запись входят символы а и с, не принадлежащие множеству А. То есть р будет словом в алфавите А тогда и только тогда, когда каждый символ этого слова принадлежит алфавиту А. Тогда множество N = {р = ху...z \х,у, ..., г е А] составляет множество натуральных чисел. Заметим, что слово р = 00...0 и р -Q— одно и то же число 0, так же, как и числа 00057 и 57. Следовательно, запись одного и того же элемента множества N может быть различной. Для однозначности
Глава 1. Множества, отношения, комбинаторика 11 записи чисел необходимо потребовать, чтобы первый символ в слове р, которое состоит более чем из одного символа, был отличен от нуля, т. е. N= {p-xy...z \x,y, ..., z е А ихФ О или 0}. □ Множество натуральных положительных чисел N+= {1, 2, ..., п, ...}. То есть множество натуральных положительных чисел — это такое множество слов в алфавите Л, среди которых нет слова 0. □ Множество целых чисел Z= {...,-п, ...,-2, -1, 0, 1, 2, ..., п, ...}— это множество слов в алфавите В = {-, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9} таких, что Z= {p = xy...z | х, у, ..., z е В их* о и у, ..., г*- или 0, если/? = 0}. Слово, первым символом которого является символ "-", называется отрицательным, а слово, первым символом которого является символ, отличный от символа"-", называется положительным. □ Множество рациональных чисел RC состоит из множества всех целых чисел и всех несократимых рациональных дробей вида ml п, где m, n e Z, п Ф 0, т. е. RC = {т / п \ т, п е Z и п Ф 0}. < Подводя итоги, прежде всего отметим, что множества задаются или с помощью явного перечисления своих элементов (случай конечного множества с небольшим количеством элементов), или с помощью свойств, которым удовлетворяют их элементы (свойство также может выражать способ построения элементов множества). Задание множества будем называть неизбыточным, если каждый его элемент входит в данное множество в единственном экземпляре, и избыточным, если хотя бы один элемент этого множества входит в его состав более чем в одном экземпляре (случай мультимножества). Более детальное изложение основ теории множеств и ее аксиоматику можно найти в монографиях: [32, 39, 72]. 1.1.2. Операции над множествами. Законы для операций Введем символы "<=>", "Ebc", "Vjc", "=>", которые далее будут служить для сокращения выражений "тогда и только тогда, когда", "существует х такой, что", "для всякого х" и "следует" или "вытекает" соответственно. Множество А называется подмножеством множества В (А с В), если все его элементы являются также элементами множества В ((Л с В) о {а е А => а е В)). При этом множество В называется надмножеством множества Л. Теперь принцип объемности можно записать так: А = В о (А с В и В с А).
12 Часть I. Математические основы Л с В означает, что Л с В и Л не равно В (А Ф В). Если Л с В, то множество А называется собственным подмножеством множества В, а множество В — собственным надмножеством множества А. Покажем, что пустое множество является подмножеством любого множества Л. Допустим, что утверждение "0 с Л" ложно, т. е. существует хотя бы один элемент х, который принадлежит множеству 0, который не является элементом множества Л. Но множество 0 не имеет элементов. Значит, утверждение "0 с Л" истинно. Пример 1.1.4 □ Множество А - {я, Ь, с} является собственным подмножеством множества В= {я, Ъ, с, d9 e}. □ Множество студентов юридического факультета — подмножество множества всех студентов университета. □ Множество четных натуральных чисел является собственным подмножеством множества всех натуральных чисел. □ Множество натуральных чисел является подмножеством множества всех целых чисел, а множество целых чисел — подмножеством множества всех рациональных чисел. Пусть U— некоторое множество, тогда B(U)— множество всех подмножеств множества U. В этом случае множество U называют универсальным, а множество В(U) — множеством-степенью или булеаном множества U. Например, если [/={1,3,5}, то B{U) = {0, {1}, {3}, {5}, {1, 3}, {1, 5}, {3,5},{1,3,5}}.< Объединением множеств Л и В называется множество, в состав которого входят те и только те элементы, которые входят в состав хотя бы одного из этих множеств. Полученное множество обозначается Ли В, т. е. ЛиВ={д|яеЛ или а Е В}. Пример 1.1.5 □ Пусть А = {1, 2, 3}, В = {1, 3, 4, 6}, тогда А и В = {1, 2, 3, 4, 6}. □ Пусть Ч— множество всех четных натуральных чисел, а Н— множество всех нечетных натуральных чисел, тогда 4kjH=N, где N— множество всех натуральных чисел. * Пересечением множеств Л и В называется множество, которое состоит из элементов, входящих в состав как множества Л, так и множества В. Полученное множество обозначается An В, т. е. А п В= {а\ае А и я е В}. Если А п В = 0, то множества Л и В называются непересекающимися.
Глава 1. Множества, отношения, комбинаторика 13 Пример 1.1.6 □ Пусть Л, В, Ч, Я означают множества из предыдущего примера, тогда: • ЛпВ={1,3}; • ЧпН=0\ • Nnff = ff; • Nn4=4. □ Пусть А — множество прямых, которые проходят через точку а некоторой плоскости, а В— множество прямых, которые проходят через точку с этой же плоскости. Тогда Дпй={/}, где I— прямая, которая проходит через точки а и с. * Если множество А представляет собой объединение подмножеств Ль Л2, ■••> Ап, ..., то совокупность подмножеств {ЛьЛ2, ..., Л„, ...} называется покрытием множества А. Если же совокупность подмножеств покрытия множества А такова, что А[ nAj = 0 при i *у, то совокупность {A ь ... ^4п, ...} называется разбиением множества Л, а подмножества Л,- — классами этого разбиения, /= 1, 2, ..., л, ... . Пример 1.1.7. Покрытие и разбиение множеств □ Пусть А — множество всех студентов некоторого вуза X, которые его закончили, а Л,- — подмножество tex студентов вуза X, которые закончили /-и факультет этого вуза. Поскольку не исключена возможность, что некто из множества студентов А закончил несколько факультетов данного вуза, и такой человек попадает в несколько соответствующих подмножеств совокупности, то ясно, что совокупность подмножеств Л ЬЛ2, ---,Ak является покрытием множества Л. Если же взять совокупность всех студентов вуза X, которые учатся в данное время, то совокупность студентов А\, А2, ..., Ak является, очевидно, разбиением множества всех студентов данного вуза, которые учатся в данное время. ^ Разностью множеств Л и В называется множество В\А = {а\ае В и я g Л}. Очевидно, что В \ А = В \ (Л п В). Если Л с В, то В \ А называется дополнением множества Л в множестве В и обозначается Л'д или просто Л', когда В можно определить по контексту. Симметричной разностью множеств Л и В называется множество Л-В = (Л\В)и(В\Л).
14 Часть I. Математические основы Пример 1.1.8 □ Пусть А = {1, 2, 3}, В = {1, 3, 4, 5}, тогда й\А = {1,3,4,5}\{1,2,3} = {4,5}=А\(ЛпВ)={1,3,4,5}\{1,3} = {4,5}. □ Множество N\4=H, т.е. N\4, представляет собой множество всех нечетных натуральных чисел. Наоборот, N\H=4.* Введенные операции называют теоретико-множественными операциями. Их можно иллюстрировать графически с помощью так называемых диаграмм Венна (рис. 1.1.1). На этих диаграммах множества-аргументы изображаются в виде областей плоскости, а результат выполнения операции — в виде заштрихованной области. Рис 1.1.1. Диаграммы Венна: а — диаграмма для А и В, б — диаграмма для А п В; в — диаграмма для А'\ г — диаграмма для А + В Из приведенной диаграммы для операции А ■*- В очевидным образом вытекает такое равенство: А -г- В = (А и В) \ (А п В). Введенные операции объединения, пересечения и дополнения удовлетворяют определенным законам. Имеет место такая теорема. Теорема 1.1.1. Для произвольных подмножеств А, В, С некоторого универсального множества U имеют место такие тождества'. 1 □ Ml AuB = BuA,AnB = BnA (коммутативность); □ М2Ди(ВиО = (Дий)иС,Ап(йпС) = (Апй)пС (ассоциативность);
Глава 1. Множества, отношения, комбинаторика 15 □ МЗ А и (В п О = (Л и В) п (Л и С), Л п (В и С) = (Л п В) и (А п С) (dwcw/?w6>7wweH0C/wb); □ М4ЛиЛ'=[/,ЛпЛ' = 0; □ М5Ли0 = Л,Лп[/ = Л. Доказательство. Покажем справедливость второго соотношения из М2: Ап(ВпС) = (АпВ)пС Пусть а е А п (В п С) => a e A, as В, aEC=>ae(AnB) и а Е С => а Е (А п В) п С и Л п (В п С) с (Л п В) п С. Получение обратного включения выполняется аналогично. Покажем справедливость первого соотношения из МЗ. С одной стороны, поскольку (BnC)QB, то А и (В п С) с Л и В. Аналогично (ВпС)сС и Л и (В п С) с Л и С. Следовательно, А и (В п С) с (Л и В) п (А и Q. С другой стороны, если я Е (А и 8) п (А и С), то я Е Л и В и я Е Л и С. Если ае А, то а е А и (В n Q. А если я £ Л, тояеВияеСи тогда я Е В п С. Следовательно, (Л и В) п (Л и С) с Л и (В n Q. Вместе с полученным ранее включением имеем необходимое равенство. Равенства доказаны. Остальные соотношения доказываются аналогично. Их доказательство предлагается читателю в качестве упражнения (см. упр. в конце раздела). Теорема доказана. Используя законы ассоциативности для операций объединения и пересечения множеств, можно ввести такие сокращения. Выражение AluA2u...uAn= 1)А( означает объединение множеств Ль Л2, ..., Лп, т. е. совокупность тех элементов, которые являются элементами хотя бы одного из множеств А\, А2, ..., Ап, а выражение /I А] п А2 п ... п Ап = р|Л,- . i=i означает пересечение множеств, т. е. совокупность тех предметов, которые являются элементами каждого из множеств А\,А2, ...,ЛП. Кроме тождеств, которые были приведены в теореме 1.1.1, существуют и другие полезные тождества для операций над множествами.
16 Часть I. Математические основы Теорема 1.1.2. Для любых подмножеств А и В некоторого универсального множества U имеют место такие тождества: d Мб Ли А = А,АпА = Л; П М7 А и (Л п В) =Л, An (Л и В) = Л; О М8Аи£/=£/,Лп0 = 0; П М9 (0)' = U,V = 0, (Л')' = А; П М10 (Л и В)' = А'пВ,(Ап В)'=А' и В'. Доказательство. Покажем, например, справедливость тождеств Мб и М8. В силу законов М1-М5 можем записать: А = А и 0 = А и (Л п А') = (A u A) n (A и А') = (А и A) n U = А и Л, Л=Лп{/ = Ап(Аи/1') = (ЛпД)и(/1п/1')=(АпД)и0=АпД. Далее, пользуясь только что установленными тождествами, имеем: A u £/ = А и (Л и Л') = (А и Л) и А' = А и А' = U, An0 = An(AnA') = (AnA)nA' = AnA' = 0. Доказательство остальных тождеств предлагается читателю в качестве упражнения (см. также разд. 2.2.9). Теорема доказана. Пользуясь тождествами, приведенными в теоремах 1.1.1 и 1.1.2, можно упрощать сложные выражения, содержащие множества, аналогично тому, как проводится упрощение выражений в элементарной алгебре. Рассмотрим примеры. Пример 1.1.9 ГП (А п В п О и (А' п В п С) и В' и С = = [(А и А') п В п С] и В' и С = = ((/ п В п С) и В' и С = (В п С) и В' и С = = (ВпС)и(Вп С)' = U. П (А п В о С n D') u (A' n С) и (В' nQu(CnD) = = (AnBnCnZr)u[(A'uB'uD)nC] = = [(AnBnD')u(AnBnD')']nC = = f/nC = C. □ (A n В')' и В = (А' и В") и В = А' и (В и В) = А' и В. «
Глава 1. Множества, отношения, комбинаторика 17 1.1.3. Декартово произведение множеств. Отношения Пусть А и В— два множества. Рассмотрим множество С= {(я, b) \ a e А, Ъ Е В}. Это множество называется декартовым произведением множеств А и В и обозначается Ах В. Если множества Л и В конечные и состоят соответственно из тип элементов, то очевидно, что С состоит из тп элементов. Самостоятельный интерес вызывает случай, когда множества А и В равны: А = В. Для его рассмотрения введем понятие упорядоченной пары. Упорядоченной парой элементов множества А будем называть объект (а, а'), состоящий из двух, не обязательно различных, элементов а и а множества Л, для которых указано, какой необходимо считать первым, а какой — вторым. Так, если А = {1, 2, 3, 4, 5}, то упорядоченные пары (3, 4) и (4, 3) следует считать различными, поскольку в первой паре первым элементом является 3, вторым, — 4, а во второй паре — наоборот. Упорядоченными парами являются также пары (1, 1), (2, 2), (3, 3), (4,4), (5, 5). Множество С = {(а, а') \ а, а е А} всех упорядоченных пар (а, а') элементов из множества А называется декартовым квадратом множества А и обозначается Л2. Понятие упорядоченной пары можно расширить на упорядоченные тройки элементов (дь а2, яз), упорядоченные четверки (дь ^2, яз, а*) и т.д. Вообще, упорядоченная л-ка элементов из множества А — это п не обязательно различных элементов из Л, заданных в определенной последовательности. Если (дь Д2,..., а„) = (а/, а2\ ..., ап'\ Toai=a\\a2 = а2\ ..., ап = а„. Для того чтобы отличать упорядоченные пары, тройки и т. д. от неупорядоченных, введем такое обозначение: если А — некоторое множество, то Д(2), А°\ ... будут соответственно означать множество неупорядоченных пар элементов, троек элементов и т. д. из множества Л, т. е. Л(2) представляет собой множество всех двухэлементных подмножеств множества Л, Л(3)— множество всех трехэлементных подмножеств множества Л и т. д. Приведенные выше определения декартового произведения двух множеств и декартового квадрата множества можно обобщить и на случай произвольной конечной совокупности множеств. Декартовым произведением А\ хА2 х ... хАп множеств Ль А2, ..., Ап называется совокупность последовательностей (то есть совокупность упорядоченных п-ок элементов) вида (дь а2, ..., ап), где я, е Л/, 1 < i < п.
18 Часть I. Математические основы Элементы декартового произведения называют еще кортежами. Произвольное подмножество множества А\ хА2х ••• хАп называется отношением, заданным или определенным на множествах Ль А 2, ••, А„. Если А\ - А2 = ... = Ап = А, то декартово произведение А\ х А2 х ... х Ап называется декартовым произведением п~й степени множества А (А"), а отношение /?, заданное на множествах А \, А 2, • • •, А„, — п-арным отношением на множестве А. Когда (дь а2, ..., ап) е R, то говорят, что элементы я, (i =1,2,..., /г) находятся между собой в отношении /?, или отношение R истинно для а\, а2, ..., ап. Если (дь (32, • •., ап) g R, то считают, что R ложно для а\,а2, ..., ап. При л = 1 отношение называется унарным, при п =-2 — бинарным, при л = 3 — тернарным и т. д. Поскольку отношения, заданные на Аь Аг» •••> А„, — подмножества множества Ai х А2 х ... х А„, то для них определены операции объединения, пересечения, разности и дополнения: (аиа2, ...,я„)е RkjR\ t=>(aua2, ...,я„)е /?или(я1,а2, ...,я„)е /?г, (дь д2, ...,я„)е /?n/?i o(ai,«2, ..., Дл)е /?и(яьа2, ...,^)е /?i; (яь д2, ...,ап)е R\R{ <=>(аиа2, ...,an)e /?и(дь д2, ...,an)<£ R{; (ах,а2, ...,я„)е R' вА{ хА2х ... хАп<^>(аи а2, ..., Дл)£ /?. Часто /?' обозначают —■ R и называют отрицанием отношения /?. Довольно часто как в теории, так и на практике используются бинарные отношения. Если R— бинарное отношение, то запись aRb означает, что (а, Ь) Е /?, т. е. что R истинно для (а, Ь). Пусть /?сД хВ, RiCiBxC. Отношение /Г1, заданное на множестве ВхА, называют обратным к R, если /Г1 = {{b, a) | aRb}, а отношение /? * /?ь заданное на множестве Ах С, — произведением или суперпозицией отношений R и /?i, если /?*/?! = {(а, с) | а е А, с е С и (3 Ь е В) {aRb и fe/?ic)}. Следует заметить, что операция умножения отношений может быть и неопределенной, если в множестве В для данных элементов а из А и с из С не существует соответствующего элемента &. Но, если А = В = С, то эта операция всегда определена. Рассмотрим некоторые полезные свойства бинарных отношений. Теорема 1.1.3. Если R, R\, R2— бинарные отношения, заданные на множестве А, то: 1. (Я, и Я2) * Я = Я, * Я u Я2 * Я; Ki с Я2 => fii * Л с Я2 * Я; 2. (/?"')"' =R\RqRi=> Я-1 с Я,-1; 3. (Я* Я,)'1 = (/?,-')* (Я"1);
Глава 1. Множества, отношения, комбинаторика 19 4. (RnR{y' = (R-l)n(R{1)- 5. (/? * /?i) * /?2 = R * (/?1 * /?2). Доказательство. 1. Если (я, Ь) Е (/?i u /?2) * /?, то существует элемент се Л такой, что (а, с) Е /?i u /?2 и (с, &) Е /?. Следовательно (я, с) Е /?i или (а, с) е R2 и (с, ft) E R. Отсюда имеем, что (я, b) e /?i * /? или (а, ft) E /?2 * /?, т. е. (а, ft) Е /?i * R u /?2 * R. Обратное включение доказывается аналогично. Вторая часть утверждения следует из того, что, если R\ с /?2, то /?i u /?2 = /?2, отсюда имеем (в силу выше доказанного), что (/?i u R2) * /? = R\ * /? u /?2 * R = Ri * R, т. е. /?i * R с /?2 * /?. 2. (a, ft) E /Г1 *=> (ft, а) Е (/Г1)"1 <=> (ft, a) E Я. Откуда следует, что R = ((/Г1)"1). Для доказательства второй части заметим, что (я, ft) e R <=> (ft, а) Е /Г1 => => (я, ft) е Л => (a, ft) E /?i => (ft, я) Е Л"1 => (ft, a) E flf1, т. е. /Г1 с fif1. з. (я,Ь)е (/? * /г,)-1 о (ft,а)е (/г * /го =>(ЗсЕЛ)(^,с)Е/г и (с,я)е /?ь Но тогда (с9Ь)е(НГ1) и (я, с) е (flf1) => (a, ft) e (flf1) * (Л-1), т.е. (/? * /?i)_1 с (/ff1) * (/Г1). Обратное включение доказывается аналогично. 4. (a, b)E(Rn Rifl <=> (ft, a) E R n /?! <=> (ft, a) e /? и (ft, й)е«,о (a, ft) e (/Г1) и (я, ft) e (/г,-1), т. е. (/г п /г,)"1 = (/г1) п (/?,-'). 5. Пусть (a, d) е (/? * /?0 * /?2, тогда существует с Е А такой, что (я, с) Е /? * /?! и (с, d) E /?2. Следовательно, существует Ъ такой, что (я, ft) Е /?, (6, с) Е /?i и (с, rf) E Я2, а это означает, что (ft, rf) E /?i * R2 и (a, rf) E /? * (/?! * /?2), т. е. (/? * /?0 * /?2 с /? * (/?! * /?2). Обратное включение доказывается аналогично. Теорема доказана. 1.1.4. Примеры отношений Рассмотрим примеры наиболее важных отношений. Отношение тождества Бинарное отношение тождества, заданное на множестве Л, состоит из всех пар вида (я, я), где я е Л, и обозначается iA или просто /, если А фиксировано. Пары вида (я, я) называют диагональными, а отношение iA — диагональю. Очевидно, что для любого бинарного отношения Я, определенного на множестве Л, имеет место равенство iA */? = /? * iA = R.
20 Часть I. Математические основы Рефлексивное отношение Бинарное отношение /?, заданное на множестве Л, называется рефлексивным, если iA с /?, т. е., когда оно включает диагональ. Примером рефлексивных отношений могут служить такие бинарные отношения: □ прямая х параллельна прямой у в плоскости г\ П студент х — ровесник студента у. Действительно, в первом случае из элементарной геометрии известно, что две прямые, которые лежат в одной плоскости, параллельны, если они либо совпадают, либо не имеют ни одной общей точки, сколько бы их не продолжали. Поскольку прямая х совпадает сама с собой, то пара (х, х) принадлежит данному отношению. Во втором случае очевидно, что каждый студент — сам себе ровесник. Иррефлексивные отношения Бинарное отношение R называется иррефлексивным, если aRa не имеет смысла. Например, отношение строгого порядка х < х на множестве действительных или рациональных чисел не имеет смысла, потому что оно всегда ложно. Симметричные отношения Бинарное отношение /?, заданное на множестве Д, называется симметричным, если aRb =» bRa (R с Л"1). Примером симметричных отношений могут служить такие бинарные отношения: □I прямая х перпендикулярна прямой у в плоскости г\ 3 студент х является соседом по парте студента у. Действительно, в первом случае из элементарной геометрии известно: если прямая х перпендикулярна прямой у, то и прямая у перпендикулярна прямой х. Во втором случае каждый студент может убедиться, что когда студент у приходится ему соседом, то студенту у приходится соседом он сам. Заметим, что приведенные отношения не являются рефлексивными. Транзитивные отношения Бинарное отношение Л, заданное на множестве Л, называется транзитив- ным, если из aRb и bRc следует aRc(R с R).
Глава 1. Множества, отношения, комбинаторика 21 Примером транзитивных отношений могут служить такие бинарные отношения: □ город х связан с городом у шоссейной дорогой; □ студент х ровесник студента у; □ треугольник х подобен треугольнику у\ □ действительное число х больше действительного числа у. В первом случае, если между городами х и у есть шоссейная дорога и между городами у, z также есть шоссейная дорога, то ясно, что между городами х, z тоже есть шоссейная дорога, которая проходит, например, через город у. В последних трех случаях транзитивность очевидна. Антисимметричные отношения Бинарное отношение R, заданное на множестве А, называется антисимметричным, если из aRb и bRa следует a = b(Rr\ /Г1 с iA). Примером антисимметричного отношения может служить бинарное отношение включения для множеств, т. е. отношение "множество А является подмножеством множества В". В самом деле, если А ей и В с А, то из аксиомы объемности следует, что множества Ли В состоят из одних и тех же элементов, т. е. А = В. Отношение эквивалентности Бинарное отношение /?, заданное на множестве А, называется отношением эквивалентности или просто эквивалентностью на Л, если для любых элементов а, Ь, с из А справедливы такие свойства: П aRa(iA с R) (рефлексивность); □ aRb => bRa(R с /Г1) (симметричность); □ из aRb и bRc следует aRc(R2 с R) (транзитивность), где iA — отношение тождества, a R2 = R * R. Нетрудно показать, что эти условия эквивалентны условиям: iA с /?, R = (/Г1), R2 = R (см. упр. 29 в конце разд. 1.1). Отношение эквивалентности, заданное на множестве Л, тесно связано с разбиением множества Л на классы. Эта связь выражается такими утверждениями. Лемма 1.1.1. Всякое разбиение множества А на классы задает на множестве А отношение эквивалентности. Доказательство. Пусть a, be А, положим aRb о а и b лежат в одном классе разбиения. Покажем, что полученное бинарное отношение является отношением
22 Часть I. Математические основы эквивалентности. Для этого необходимо доказать, что оно рефлексивно, симметрично и транзитивно. Действительно, поскольку а лежит в некотором классе разбиения, то aRa, т. е. оно рефлексивно. Пусть К— некоторый класс разбиения и a, be К тогда и Ьуае К, т.е. aRb => bRa. Симметричность доказана. Из aRb и bRc следует а,Ь,се К. Следовательно aRc, что и следовало доказать. Лемма 1.1.2. Всякое отношение эквивалентности R, определенное на множестве А, задает разбиение множества А на классы. Доказательство. Назовем классом элемента а множество К(а) = {х е А \ aRx]. Из рефлексивности отношения R следует, что а е К(а), т. е. система классов К(а) (ае А) покрывает все множество А. Далее симметричность отношения R показывает, что если Ъ е К(а), то ае К(Ь\ а транзитивность отношения R приводит к тому, что если b е К(а\ то из с £ К(Ь), следует с е К(а), т. е. K(b)QK(a). Но если аеК(Ь\ то К(а)<^К(Ь\ значит К(а) = К(Ь). Отсюда следует, что каждый класс определяется любым своим элементом. Если К{а) г\ К(Ь) Ф 0, то существует такой элемент с из этого пересечения, что cRa и cRb и тогда К(а) = К(Ь) = К(с), т. е. классы К(а) и К(Ь) совпадают. Таким образом доказано, что система всех различных классов вида К(а) является разбиением множества Л. Что и требовалось доказать. Очевидно, что переход от разбиения 5 множества А, определяемого отношением /?, к отношению эквивалентности /?, а после этого переход от отношения R к разбиению множества А снова приводит к разбиению 5. Таким образом, справедлива следующая теорема. Теорема 1.1.4. Между разбиениями множества на классы и отношениями эквивалентности, заданными на этом множестве, существует взаимно однозначное соответствие [42]. Если R— эквивалентность на Л, то классы разбиения, определенные отношением /?, называют классами эквивалентности отношения /?, а множество классов — фактор-множеством множества А и обозначают AIR. Число классов эквивалентности отношения эквивалентности R называется индексом множества А. Когда число классов эквивалентности конечное, то множество А называется множеством конечного индекса. Выясним, какие из операций теории множеств сохраняют свойство отношения быть отношением эквивалентности, а какие нет. Теорема 1.1.5. Если R, R\— отношения эквивалентности, заданные на множестве А, то: 1. /Г —отношение эквивалентности на Л;
Глава 1. Множества, отношения, комбинаторика 23 2. R* R\ — отношение эквивалентности на А тогда и только тогда, когда R * /?i = R\ * /?, т. е. когда отношения R и R\ можно менять местами; 3. /?n/?i — отношение эквивалентности на А; 4. R' не является отношением эквивалентности на А. Доказательство. 1. Поскольку R— отношение эквивалентности, то /Г1 = R и, следовательно, /Г —тоже отношение эквивалентности. 2. Если /?*/?i — отношение эквивалентности, то по доказанному выше (R * /?i)_1 —тоже отношение эквивалентности и по теореме 1.1.3 (R * Л,)"1 = (Л"1) * (Л"1) = Я, * Я. Наоборот, если /? * /?i = /?i * Л, то из того, что xRx и xRi*, следует xR * /?i*, следовательно, /? * R\ рефлексивно. Далее, из того, что (Л * ЛО"1 = (Л"1) * (Л"1) = Л, * Я = R * Л,, следует симметричность Л * Ль И, наконец, (R * /?0 * (/? * /?i) = Л * R * /?! * /?i = Л * /?,, поскольку их можно менять местами и из ассоциативности умножения отношений (см. теорему 1.1.3). Следовательно, R * R\ транзитивно. 3. Поскольку R и R\ — эквивалентности на Л, то iA Q R и iA Q /?/, откуда следует, что iA с R n /?i. По теореме 1.1.3 и из того, что Л и /?i— эквивалентности, имеем (R n R\)~l = (/Г1) п (ЛГ1) = Rr\R\. Значит отношение RnR\ рефлексивно и симметрично. Покажем транзитивность. Пусть (я, b)e RnR{ и (Ь,с)е /? п /?ь тогда (а, Ь) е Л, (а, Ь) е /?i и (6, с) е Л, (Ь,с) е R\. Из (а, £) е Л, (Ь, с)бй следует что (а,с)€Й, а из (fl,&)e/?i, (b,c)eR\,— что (а, c)e/?i. Отсюда заключаем, что (я, с) е (Rn R\), т. е. R n /?i транзитивно. 4. Из того, что R — эквивалентность, следует, что iA Q /?, но тогда iA не может быть подмножеством множества /?', т. е. /?' не рефлексивно и, следовательно, не является отношением эквивалентности. Теорема доказана. Объединение отношений эквивалентности в общем случае не является отношением эквивалентности, как показывает следующая теорема. 2 Зак 3427
24 Часть I. Математические основы Теорема 1.1.6. Объединение ЛиЛ/ отношений эквивалентности Ru Rj является эквивалентностью тогда и только тогда, когда пересечение любого класса эквивалентности по Re любым классом эквивалентности по Rj либо совпадает с одним из них, либо пусто. Если R u Rj — эквивалентность, то R и /?/ = /?*/?/ [50]. Замыкание отношений Пусть R — некоторое бинарное отношение на множестве А: О рефлексивным замыканием /?, отношения R называется отношение R u i, где i — отношение тождества на А (диагональ); □ симметричным замыканием Rs отношения R называется отношение R u /Г1, т. е., если (af b) e Л, то (a, b) e Rs и (b, a) e Rs', П транзитивным замыканием Rt отношения R называется отношение R, = R u R2 u /?3 и ... u R" u ..., т. е. (a, b) e /?, тогда и только тогда, когда существуют элементы ах = а, а2, ..., ап = b e А такие, что (axRa2, а^Даз, ..., an-\Ran). Если некоторое отношение включает свое симметричное, рефлексивное и транзитивное замыкания, то оно является отношением эквивалентности и наоборот. Пример 1.1.10 Пусть А = {аи а2> аъ, а*} и /? = {(ах, аъ), (яз, Лд), (а*, а2), (аз, Дз)}. Тогда Ri = {(ах, аз), (аз, аА), (а*, а2\ (аз, аз), (ах, ах), (а2, а2), (а4, аА)}, Rs = {(аи аз), (аз, а\), (аъ, аА), (а4, аз), (а4, а2), (а2, а4), (а3, аъ)}, Rt = {(ах, аъ), (аз, аА\ (аА, а2), (аз, аз), (аи аА), (ах, а2), (аъ, а2)}. < Отображения и операции Отношение F, заданное на множествах А\, А2, ..., Ап, В, называется функциональным, если для любого элемента (ах, а2, ..., ап) изАх хА^х ... х Ап существует не более одного элемента Ъ из В такого, что (а\, а2, ..., ап, b) е F. Если такой элемент Ъ из В существует для некоторого (ах, а2, ..., ап\ то он обозначается F(ax, а2, ..., ап) и записывается так: Ъ = F(ax, а2, ..., ап). Пусть F~\b)={(ax, а2, ..., ап) е Ах хА2х ... хАп \ F(ax, a2, ..., ап) = Ь} и Dom(F)= u F~](b). Очевидно, что для всякого функционального ОТНОШе- ния F, заданного на А\, А2, ..., Ап, В, имеет место включение Dom(F)QAx xA2x ... хАп.
Глава 1. Множества, отношения, комбинаторика 25 В случае, когда Dom(F) -А\ хА2 х ... хАп, F называется полностью определенным, когда Dom(F) сА\ хАг х ... хАп,— частично определенным, или просто частичным. Отношение F, заданное на множествах Аи А2, ..., Ап, В, называется отображением или функцией из ^i х ... хАп в fl (F: А\ х А2 х ... хАп —» В), если F функциональное и полностью определенное. Отношение F называется частичным отображением или частичной функцией, если F функциональное и частичное. Число п называется арностью функции F. Если F: А\ хАгХ ... хАп-> В и существует Ъ из В такой, что F(au аг, ..., ап) = Ъ, то элемент Ъ называют образом элемента (аи а2, •••> ап) при отображении F, а элемент (аи а2, ..., ап) — прообразом элемента Ъ. Множество F~\b)= {(aua2, ...,ап)\ F(aua2, ...,an) = b}, введенное ранее, называют полным прообразом элемента Ъ в множестве А\ хА2х ... хАп. Отношение F: А\ хА2 х ... х Ап —> В называют отображением на В тогда и только тогда, когда (\/b e В) (F~ (b) Ф 0). Отображение F множества А\ х А2 х ... хАп на множество В называется взаимно однозначным отображением, или взаимно однозначным соответствием, тогда и только тогда, когда обратное к отношению F отношение Кх является отображением В на А \ х А2 х ... х Ап. Мы знакомы с операцией произведения отношений. Поскольку отображение — это отношение специального вида, то выясним, что собой представляет произведение отображений. Пусть F\: А —> В, a F: В—> С— некоторые отображения. По определению произведения отношений имеем: (а, с) € F\ * F тогда и только тогда, когда существует элемент Ъ € В такой, что (а, Ь) е F\ и (Ь, с) е F, т. е. F\(a) = b и F(b) = с, или F(F\(a)) = с согласно с принятыми выше обозначениями. Таким образом, произведение отношений представляет собой хорошо известную операцию суперпозиции функций. Покажем, что произведение отношений является ассоциативной операцией. Пусть F: А —> В, F\: В —> С, F2: С —> D— произвольные отображения. Необходимо показать, что (F * F\) * F2 = F * (F\ * F2). Найдем, чему равняются правая и левая части этого равенства для произвольного элемента а из А. Для левой части имеем: F * (F, * F2)(a) = F * ((F, * F2)(a)) = (F, * F2) (F(a)) = F2(F,(F(a))),
26 Часть I. Математические основы а для правой части: (F * F,) * F2(a) = F2((F * F,)(a)) = F2(F{(F(a))). Значит обе части уравнения выражаются одинаково и поэтому равны. Примером отображения на множество и взаимно однозначного отображения может служить отображение, которое связывает множество А с его фактор-множеством AIR, где R— некоторое отношение эквивалентности на А. Отображение F: А —> АI /?, которое задает для любого элемента а из А тот класс разбиения, которому принадлежит о, называется натуральным отображением А на AIR. Между отношениями эквивалентности, заданными на некотором множестве, и отображениями этого множества на другие множества существует тесная связь. Действительно, если F\\ А —> В— отображение на, то ему соответствует полностью определенное отношение эквивалентности R на А: если а, be А, то aRb <=> F\(a) = F\(b). Сопоставляя каждому элементу х из В его полный прообраз в А, получаем отображение F2: В —> А I /?, основное свойство которого доказывает следующая теорема. Теорема 1.1.7. Отображение F2: В —> A IR является взаимно однозначным отображением, причем Fj * F2 = F, где F— натуральное отображение А на AIR. Доказательство. Определим F2: В -> A IR так, чтобы F2(b) = K(b) = = {ае A\Fi(a) = b}. Ясно, что если &*6', то К(Ь)Ф Кф'). Следовательно, отображение F2 взаимно однозначное. Далее, пусть F\(a) = fe, a F2(b) = A^fe), тогда а е К(Ь). Таким образом, произведение F\ * F2 совпадает с натуральным отображением F. Теорема доказана. Если F: Ап -> Я, то F называют п-арной функцией из А в Я, а если при этом В = {0, 1}, то F называется п-арным предикатом на множестве Л, а элементы О, 1 — соответственно ложью и истиной. Если предикат F имеет то свойство, что для всех (яь #2, • • •, ап) е А F (яь tf2, • •., я*) = 1 (F(tf 1, я2, • • -, я*) = 0), то предикат F называется тождественно истинным {ложным) на ,4. Между отношениями и предикатами, заданными на одном и том же множестве Л, существует взаимно однозначное соответствие. Действительно, пусть F — n-арный предикат на А. Совокупность тех последовательностей из А", для которых F(ai,a2,...,a„)= 1, является отношением на А, соответствующим предикату F. Наоборот, пусть задано произвольное и-арное отношение R с: А" на А. Полагая [1, если (а{9 аъ ..., ап)е Л, 10, если (я,, аъ ..., ап)£ Л,
Глава 1. Множества, отношения, комбинаторика 27 получаем n-арный предикат, который соответствует отношению R. Таким образом, и-арные отношения и и-арные предикаты на произвольном множестве находятся во взаимно однозначном соответствии. Если F—и-арная функция из Ап в Л, то F еще называют п-арной операцией на А. При и = О F называется нульарной операцией, значением которой является фиксированный элемент множества А. Операция F называется частичной, если F— частичная функция. Пусть F: A\XA2x ...хАп=ь В и F~\b) — полный прообраз элемента Ь в А\ХА2х ...хАп при отображении F. Введенное выше множество Dom(F) = u F~\b) называется областью определения отображения F, be В a Im(F) = {b | F~\b) * 0} — областью значений. Если F: А\ хА2 х ... хАп => В и F\: А1 х А2 х ... х Ап => В, то F = F\ тогда и только тогда, когда Dom(F) = Dom(F0, Im(F) = Im(Fi) и F(ab a2f ..., an) = Fx(au a2y ..., an) для любого (fli, #2, ..., яя) е i4i хЛгХ ... хЛя. Далее будем обозначать предикаты, функции, операции строчными латинскими буквами, и если О, — некоторое множество предикатов, функций или операций, то функция ar: Q => N, где N — множество натуральных чисел, называется функцией арности и, т. е. аг(со) = и, если со е Q и имеет арность п. Отношение частичного порядка Бинарное отношение 0, заданное на множестве Л, называется частичным порядком на А, если для любых а, Ь, с из А выполняются свойства: □ aOa(iA с 0) (рефлексивность); □ аОЬ и ЬОс => аОс(02 с 0) (транзитивность); □ аОЬ и ЬОа => а = 6(0 п О"1 с /д) (антисимметричность). Частичный порядок на множестве Л, как правило, обозначают символом "<м. Если а < Ъ для некоторых a, be А, то говорят, что а меньше или равно Ь, а также, что а включается в Ъ либо равно Ь. Если а < Ъ и а Ф Ь9 то говорят, что а строго меньше Ъ (а < Ь). Определение 1.1.1. Транзитивное и иррефлексивное отношение называется отношением строгого порядка. Это отношение обозначают "<". Определение 1.1.2. Транзитивное и рефлексивное отношение называется отношением квазипорядка. Это отношение обозначают " <". С каждым отношением частичного порядка < связано отношение строгого порядка < (этот порядок называют строгой частью отношения < ): (а < Ъ) <=» а < Ъ и а Ф Ъ.
28 Часть I. Математические основы Наоборот, с каждым отношением строгого порядка < связано отношение частичного порядка <: (а < Ь) о а < Ъ или а = Ь. С каждым отношением квазипорядка < связаны отношение строгого порядка < и эквивалентности ~ : (а < Ь) о а < bw -i(fe < a)\ (a~b)s=$ а < Ъ и Ъ < а. Любое отношение квазипорядка ■<, заданное на множестве А, индуцирует отношение частичного порядка < на фактор-множестве А/~: ([а]~ < [Ь]~ <^>а <Ь. Действительно, поскольку отношение < транзитивно и рефлексивно, то и отношение < тоже будет транзитивным и рефлексивным. Покажем антисимметричность. [а]~ < [Ь]~ и [&]- < [а]~ означают, что а < b wb < а. Однако отсюда следует, что а ~ Ь9 т. е. что [а]~ ~ [Ь]~. Простейшие свойства частично упорядоченных множеств Теорема 1.1.8. (принцип двойственности). Отношение, обратное к отношению частичного порядка, также будет отношением частичного порядка. Доказательство. Пусть О"1 — отношение, обратное к отношению 0: □ поскольку iA с 0, то iA = iA~x с О"1; □ если 0 * 0 с 0, то по теореме 1.1.3 О"1 * О"1 = (0 * О)"1 с О"1; □ если 0 п О"1 с iA, то 0"'пОс iA э О"1 п (О-1)"1 из соотношения Ml и теоремы 1.1.3, что и требовалось доказать. Отношение частичного порядка О"1 называется двойственным к отношению частичного порядка 0. Определение 1.1.3. Отношение частичного порядка <~1 называется двойственным к отношению частичного порядка <. Отношение <~1 обозначается ">". Таким образом, a(<~l)b означает b > а. Если а < Ъ или b < а, то элементы a, b называют элементами, сравнимыми относительно порядка <. Из принципа двойственности следует, что когда в каком-нибудь утверждении о частично упорядоченном множестве заменить частичный порядок на двойственный к нему порядок, то полученное утверждение тоже будет верным.
Глава 1. Множества, отношения, комбинаторика 29 Теорема 1.1.9. Любое подмножество частично упорядоченного мноэюества также будет частично упорядоченным множеством. Доказательство предлагается как простое упражнение. Определение 1.1.4. Элемент х из множества (Л, <) называется минимальным (максимальным) элементом А, если для всякого элемента а из Д, сравнимого с х, имеет место неравенство х < а (х > а). Определение 1.1.5. Элемент х из А называется наибольшим (наименьшим), если (\/а G А) х > а (х < а). Теорема 1.1.10. В каждом частично упорядоченном множестве существует не более одного наименьшего (а в силу принципа двойственности и наибольшего) элемента. Доказательство. Предположим, что а и Ъ— два наименьших элемента в множестве Л, тогда а < Ъ, поскольку а — наименьший элемент и Ъ < а, поскольку Ъ — наименьший элемент. Однако тогда из транзитивности отношения < следует, что а = Ъ. Если произвольные два элемента из множества А сравнимы относительно <, то такое отношение называется линейным порядком на Л, а множество А — упорядоченным или линейно упорядоченным, или цепочкой. Ясно, что если линейно упорядоченное множество А имеет наибольший (наименьший) элемент, то этот элемент будет единственным максимальным (минимальным) элементом. Определение 1.1.6. Пусть (А, <)— частично упорядоченное множество и а, be А. Говорят, что элемент Ъ доминирует над элементом а, если Ъ>а и ни для какого элемента х из А неверно, что Ь> х> а. Следующая простая теорема показывает, что отношение частичного порядка < можно однозначно восстановить по отношению доминирования в любом конечном частично упорядоченном множестве. Теорема 1.1.11. Пусть а<Ь в конечном частично упорядоченном множестве (А, <). Тогда в (А, <) существует хотя бы одна цепочка а <х\ <Х2 < ... <хп < Ъ, в которой каждый*; доминирует над *,_/, i = 1, 2, ..., п. Доказательство индукцией по числу п элементов у, удовлетворяющих условию а<у<Ь (см. ниже метод трансфинитной индукции). При п = 0 Ъ доминирует над а по определению. Шаг индукции. Предположим, что теорема верна для всех т < п. Рассмотрим случай п = т, где п > 0. Поскольку п > 0, то существует такой элемент с G А, что а<с <Ь и число элементов у, z, удовлетворяющих условиям
30 Часть I. Математические основы a<y<cuc<z<b, не превышает п - 1. По предположению индукции существуют конечные цепочки, связывающие а и с, с и Ь, средние элементы, которых находятся в отношении доминирования. Соединив эти две цепочки, получим искомую цепочку. Пример 1.1.11. Линейно упорядоченные множества □ Множества N, N+, Z, RC и множество D действительных чисел с их естественным порядком; множество N часто называют натуральным рядом, а любое его подмножество вида {0, 1, 2, ..., п) — начальным отрезком, либо просто отрезком натурального ряда. □ Множество точек числовой оси (прямой). < Пример 1.1.12. Частично упорядоченные множества □ Булеан В{А\ т. е. множество всех подмножеств некоторого множества А с отношением теоретико-множественного включения с как отношением частичного порядка. □ Множество N* с отношением п < п\ <=> щ делится нацело на п. * Линейно упорядоченное множество А называется полностью упорядоченным, если любое его непустое подмножество В имеет наименьший элемент. С понятием полностью упорядоченного множества связан один из основных постулатов теории множеств. Аксиома полной упорядоченности. Любое непустое множество молено полностью упорядочить. Заметим, что эта аксиома логически эквивалентна другой аксиоме теории множеств — аксиоме выбора [42, 50, 65]. Аксиома выбора. Если дано множество А, то существует функция f, которая ставит в соответствие каждому непустому подмножеству В множества А один определенный элемент f(B) из множества В. Логическую эквивалентность аксиом следует понимать так: если одну из них принять за аксиому, то другую можно строго доказать как теорему и наоборот. Так, если принимается аксиома выбора, то аксиома полной упорядоченности становится утверждением, известным в теории множеств как теорема Цермелло. Благодаря аксиоме полной упорядоченности многие свойства полностью упорядоченных множеств можно доказывать методом трансфинитной индукции. Теорема 1.1.12. (метод трансфинитной индукции). Пусть е — наименьший элемент полностью упорядоченного множества А и Р(х) — некоторое свойство элемента х е А. Тогда если из истинности Р(е) и Р(х) для всех х<а следует истинность Р(а), то Р(х) истинно для всех хизА.
Глава 1. Множества, отношения, комбинаторика 31 Доказательство. Допустим противное, существует такое непустое подмножество А' элементов из А, что для всех у е А' Р(у) ложно при выполнении условий теоремы. Пусть Ъ— минимальный элемент в А'. Поскольку Р{е) истинно, то Ъ * е и Ь > е. Из условий теоремы следует, что Р(х) истинно для всех х < Ь, но тогда из этих же условий должна следовать истинность и Р(у\ а это противоречит нашему предположению. Теорема доказана. Метод трансфинитной индукции дает возможность не только доказывать свойства по индукции, но и выполнять построение по индукции или давать определение по индукции. Действительно, пусть А — полностью упорядоченное множество, и пусть мы хотим определить на этом множестве функцию fix), которая ставит в соответствие каждому элементу х из А некоторый элемент множества В. Допустим также, что fix) должна удовлетворять некоторым рекуррентным соотношениям, т. е. соотношениям, которые однозначно задают для каждого a e A значение Да) по значениям ДЬ) для всех Ь < а. Теорема 1.1.13. Метод построения по индукции. Существует единственная функция f(x), которая определена на всем множестве А, удовлетворяет указанным рекуррентным соотношениям и принимает произвольно заданные значения на минимальном элементе множества А. Доказательство. Покажем сначала единственность такой функции. Допустим, что существуют две разные функции/(х) и g(x) на множестве А, которые удовлетворяют нашим условиям. Пусть существует непустое подмножество элементов х из А, для которых f(x) Ф g(x). Поскольку А полностью упорядочено, то это подмножество имеет минимальный элемент а. Этот элемент не может быть минимальным для всего множества А, потому что тогда, по условию, на этом элементе f(a) и g(a) совпадали бы. Значит существует Ь < а такой, что f(b) = g(b). По условию теоремы рекуррентные соотношения однозначно задают значения наших функций для х = а по их значениям для всех Ь < а, следовательно,/^) = g{a). Полученное противоречие доказывает единственность/(jc). Докажем теперь существование функции. Допустим, что на минимальном элементе множества А значение искомой функции уже задано. Обозначим через Р такое свойство: элемент а € А удовлетворяет свойству Р, если на множестве С всех таких jc, что х < а, может быть определена функция fa(x), которая удовлетворяет рекуррентным соотношениям и принимает заданное значение на минимальном элементе множества А. По предположению Р истинно на минимальном элементе а е А. Далее, если элементы Ъ и с удовлетворяют свойству Р и Ъ < а, то в силу доказанной выше
32 Часть I. Математические основы единственности искомой функции не на множестве Л, а на множестве В = {л: € А | х < Ь}, имеем fb(x) =fa(x). Отсюда следует, что, если все элементы Ъ строго меньше элемента а удовлетворяют свойству Р9 то и сам элемент а удовлетворяют этому свойству. Получаем функцию fa{x\ удовлетворяющую всем требованиям, если для каждого Ъ < а положить fa(b) =/^(Ь), а за/л(я) взять то значение, которое однозначно задается рекуррентными соотношениями. На основе метода трансфинитной индукции можно говорить, что для всех a из А истинно Р{а). Полагая теперь (\/а е A)fa(a) =/(«), определяем функцию f(x), которая обладает необходимыми свойствами. Теорема доказана. Заметим, что метод трансфинитной индукции, как и метод построения по индукции, можно применять и к частично упорядоченным множествам. Ограничимся только формулировками этих фактов. Теорема 1.1.14. (условие индуктивности). Все элементы частично упорядоченного множества А удовлетворяют свойству Р, если: О все минимальные элементы из множества А удовлетворяют свойству Р (в том случае, если они существуют); О из того, что Р(х) истинно для всех х<а, где x,aG А, следует истинность Р(а). Теорема 1.1.15. (построение по индукции). Существует единственная функция f(x), которая задана на всем множестве А, удовлетворяет указанным рекуррентным соотношениям и принимает произвольные заданные значения на всех минимальных элементах множества А [42, 50]. 1.1.5. Примеры отображений В завершение этого подраздела рассмотрим несколько примеров отображений. Мощность множества Пусть А и В — некоторые множества. Определение 1.1.7. Множества А и В называются равномощнымщ если между их элементами существует взаимно однозначное соответствие. Очевидно, что отношение равномощности является отношением эквивалентности, поэтому равномощные множества часто называют эквивалентными. Определение 1.1.8. Мощностью или кардинальным числом множества А называется класс эквивалентности, которому принадлежит множество А по отношению равномощности.
Глава 1. Множества, отношения, комбинаторика 33 Если А и В — конечные множества, то их равномощность означает, что они имеют одно и то же число элементов. При этом пустому множеству 0 соответствует число нуль, а конечному множеству, которое состоит из п элементов — число п. Право на такое сопоставление нам дает следующая теорема. Теорема 1.1.16. (основная теорема о конечных множествах). Любое конечное множество не может быть эквивалентно никакому своему собственному надмножеству. Доказательство. Предположим, что В— некоторое конечное надмножество конечного множества А, которое эквивалентно Л, т. е. существует взаимно однозначное соответствие/: А —> В. Пусть а\, ...,ап — элементы множества Д, a/(fli),/(#2), •••»/(я,,) — их образы. Среди образов должны быть все элементы множества А и хотя бы один элемент, который обозначим ап + \. При п = 1 противоречие очевидно, ибо единственный элемент а\ не может иметь двух разных образов — аи а2. Пусть невозможность существования отображения/с указанными свойствами доказана для множества из п - 1 элементов. Докажем ее для множества из п элементов. Можно считать, f(an) = ап + и ибо если это не так, т. е. f(an) = a' и ап + \*а\ то ап +1 имеет другой прообраз — at\ f(a,) = я„ + ь i±n. Тогда можно построить другое, отличное от / отображение, которое будет сопоставлять элементу ап элемент ап +1, элементу а,— элемент я', и во всем остальном не будет отличаться от/. Подмножество А' = {яь аг,..., ап-\) отображается функцией / на некоторое множество/(Л'), которое строится из/(Л) = В с помощью отбрасывания элемента/(а„) = ап + {. Множество ДА') включает элементы яь ..., ап и, следовательно, является собственным надмножеством множества А' и вместе с тем его взаимно однозначным образом. Однако по предположению индукции это невозможно. Теорема доказана. Из этой теоремы следует, что конечное множество никогда не может быть эквивалентно двум разным отрезкам натурального ряда, потому что в противном случае эти отрезки были бы равномощными, и при этом один из них должен был бы включать другой. Таким образом, любое конечное множество эквивалентно одному и только одному отрезку (0, 1,2, ..., п) натурального ряда. Однозначно определенное число т — число элементов множества А — может служить мерой мощности этого множества.
34 Часть I. Математические основы Теорема 1.1.17. EcnuAu Л 2, • • •» Ап — конечные множества, то \АхХА2х...хАп\ = \Ах\\А2\...\Ап\. Доказательство. Сначала покажем, что \Ах хА2\ = |Ail Иг|. Пусть А\ = {flibflu. ....flin}» ^2= [агиагъ -^a2k} и fi(tfw) = {(tfw, tf2/)}, где tfi,— некоторый фиксированный элемент множества А\. Тогда \А2\ = |B(tfi,)|, поскольку эти множества эквивалентны (элементу (a\h a2j) соответствует элемент a2j). Отсюда имеем: Hi хЛ2| = \В(ап)\ + \В(а12)\ + ... + |fi(*i*)| = Щ \А2\, потому что множества А(аи) и A(axj) попарно не пересекаются при i *j. Принимая во внимание то, что множества А\ х (А2х... х Ап) и А\ хА2х ... хА„ эквивалентны (элементу [яь (а2, ..., ап)] соответствует элемент (яь а2у ..., а„)), можем записать: \АХ хА2 х ... х Ап\ = И,| (Игх ... хЛя|) = = \4х\ \А2\ (Из х ... хАп\) = ... = Hil Ш ... И-1- Теорема доказана. Множество, эквивалентное множеству натуральных чисел, называется счетным множеством. Непосредственно из определения счетного множества вытекает следующее утверждение. Утверждение 1.1.1. Любое бесконечное подмножество счетного множества само счетное. Действительно, пересчет элементов подмножества В счетного множества А можно выполнить в порядке их следования в множестве Л. Как показывает следующая теорема, в случае бесконечных множеств аналог теоремы 1.1.16 не имеет места. Теорема 1.1.18. Объединение конечного или счетного множества счетных множеств снова является множеством счетным [9]. Доказательство. Рассмотрим сначала случай конечного числа счетных множеств. Пусть А\, ...,Ak— эти множества и а^е At— их элементы. Рассмотрим последовательность ЯП, ..., Я*1, ..., #12, ..., Я*2, ..., ахп* •••» Clkn, .... Такую последовательность можно перечислить, и, если некоторый элемент при перечислении уже встречался раньше и получил номер, то он пропуска- it ется в дальнейшем. Таким образом, множество А = и А( счетно.
Глава 1. Множества, отношения, комбинаторика 35 Пусть имеем счетное множество счетных множеств Аи А2, ..., Апу ..., где Aj = [an, tfj2, ...}. Существует только конечное число элементов я,*, для которых i + к = 2, аналогично существует только конечное число элементов я,*, для которых i + & = 3, и т. д. Перенумеруем сначала все элементы, для которых \; + к = 2 (например, по возрастанию значения /), а потом (с помощью других чисел) — элементы, для которых i + к = 3 и т. д. При этом каждый элемент я,* получит некоторый номер, и различные элементы будут иметь различные номера. Отсюда следует справедливость теоремы. Следствие 1.1.1. Множество Z всех целых чисел счетно. Действительно, Z = N u N', где N' = {-1, -2,..., -я, ...}. Следствие 1.1.2. Множество RC всех рациональных чисел счетно. Множество рациональных чисел — это объединение счетной совокупности счетных множеств RC = Zu/?2u/?3u... ий„и..., где/?„ = [ml n\me Z, п = 2, 3, ...}. Следствие 1.1.3. Декартово произведение Ах В счетных множеств является счетным множеством. Действительно, если А = {яь ...,я„, ...} и В- [Ьи .,&я,...}, то множество всех элементов множества Ах В можно представить как объединение счетной совокупности счетных множеств вида: А\ = [(аиЬ\\(аиЪг)> ..., (яь Ь„), ...}, А2= {(я2, Ь{), (я2, b2\ ...,(я2, К), ...}, Лл = {(я„, b\), (я„, Ь2), ..., (я„, Ь„), ...}, В силу теоремы 1.1.7 заключаем, что множество Ах В счетно. Следствие 1.1.4. Декартово произведение А\ХА2х ... хАп счетных множеств А\,А2, ...,Ап является счетным множеством для любого п. Далее будем иметь дело с конечными или бесконечными счетными множествами. Однако для полноты заметим, что существуют множества, элементы которых перечислить невозможно. Такие множества логично называть несчетными. Имеет место важная теорема. Теорема Кантора. Мноэюество всех действительных чисел из интервала (0, 1) несчетно. Доказательство этой теоремы базируется на диагональном методе Кантора [19].
36 Часть I. Математические основы Из курса школьной математики известно, что каждому действительному числу из интервала (0, 1) можно однозначно сопоставить правильную бесконечную десятичную дробь 0, a\ а2-. •#*••-, которая имеет бесконечно много отличных от нуля цифр. (Если число— конечная десятичная дробь, например, 0, 243, то ему сопоставляется бесконечная десятичная дробь вида 0, 24299.. .99...). Предположим, что теорема не верна и множество действительных чисел из интервала (0, 1) счетно. Тогда для этого множества должно существовать перечисление х\ =0,ац #12... а\п ..., *2 = 0, аг\ ац ... а2п ..., хп = 0, ап\ апг... апп ..., Идя по диагонали (т.е. по элементам ац, ац, ..., апп, ...), получим новую дробь а\\ ац' ... annf ..., такую что ац * aj для любого /=1,2,.... Построенная дробь не входит в рассмотренное перечисление, поскольку отличается от любого элемента xt числом а,,, которое расположено на диагонали. Следовательно, перечисление для всех чисел из интервала (0, 1) не существует, и предположение про счетность этого множества неверно. Теорема доказана. Следствие 1.1.5. Если А — несчетное множество иВсЛ — некоторое счетное подмножество множества Л, то множество С = А \ В несчетно. Действительно, если бы множество С было счетным, то счетным было бы и множество А = С и В по теореме 1.1.18. Следствие 1.1.6. Множество IR всех иррациональных чисел несчетно. Множество, эквивалентное множеству действительных чисел из интервала (О, 1), называется множеством мощности континуум. Теорема о булеане. Булеан B(U) некоторого счетного множества U— несчетное множество. Доказательство. Не ограничивая общности, возьмем U = N. Сопоставим каждому подмножеству N, с N цепочку, которая состоит из нулей и единиц таким образом, что элемент ау9 который стоит на /-м месте в множестве N,, равен нулю, если щ е N,, и 1, если щ £ N. Очевидно, что такое соответствие будет взаимно однозначным. Используя диагональный метод Кантора, построим новую цепочку ci\\ агг ... апп ...,
Глава 1. Множества, отношения, комбинаторика 37 где Jl, если au = 0, " ~" [0, если ан Ф 0, / = 1, 2, ..., я, ... . Ясно, что такая цепочка не совпадает ни с какой цепочкой для множества N, и соответствует некоторому подмножеству N' с N, которое не совпадает ни с одним N,,,/ = 1, 2, ..., л, ... . Следовательно, элементы B(U) невозможно перечислить. Теорема доказана. Матрицы Рассмотрим еще один интересный пример отображения. Пусть р, q e N+, Np и Nq означают множества чисел {1,2, ...,/?} и {1,2, ...,q} соответственно, а Р — произвольное множество чисел. Отображение A: NpxNq—>P, где /?, q G N+, называется прямоугольной матрицей над множеством чисел Р. Образ A(i,j) часто обозначают ау и называют элементом матрицы А, а саму матрицу А задают с помощью таблицы элементов-образов из множества Р, которые соответствуют отображению Л, т. е. Д = аи ап ... aXq а2\ а22 - «2^ \ар\ ар2 - apq\ При этом говорят, что матрица А состоит из р строк и q столбцов и имеет размерность р х q. Если р = q, то матрица А называется квадратной. Когда элементы квадратной матрицы таковы, что щ = 0 при / Ф], и а„ Ф 0 при i =j4 то матрица А называется диагональной. Диагональная матрица называется единичной, если а„ = 1 для всех /. Матрица представляет собой один из удобных способов задания бинарных отношений на конечных множествах. Пусть R— бинарное отношение, заданное на конечных множествах А = {яь д2, -.., ар} и В= {Ьь Ь2у ..., bq). Рассмотрим матрицу A(R): NpxNq=> {0, 1}, которая связана с отношением R (с помощью отображения А) таким образом: II, если (ahbj)e R 0, если (ahbj)<£R.
38 Часть I. Математические основы Например, если А = {яь аъ аъ, а4}, В = {bu Ьъ Ь3}, R = {(au b2\ (яь &з), («2, Ъ\), (яз» ЬО, (я4, Ьг)}, то матрица A{R) имеет такой вид: А(Л) = 0 1 1 0 1 0 0 1 1 0 0 0 Заметим, что в отдельном случае, когда R—бинарное отношение, заданное на конечном множестве А, то: □ если R = i — отношение тождества на Л, то A(i) = 1 0 0 0 0 . 1 . ... . 0 . 0 . . 0 . 0 . ... . 1 . 0 0 0 ••J о 1 является единичной диагональной матрицей (откуда и название отношения). Отсюда легко найти рефлексивное замыкание некоторого заданного отношения R на множестве А. Для этого в матрице А{К) необходимо всюду поставить на диагонали 1 вместо 0; □ если R— симметричное отношение, то матрица A(R) будет, очевидно, симметричной. Действительно, в силу симметричности отношения /?, если (я,, bj) e R (aij = 1), то (bj9 at) e R (я/, = 1). Принимая во внимание это обстоятельство, легко построить матрицу симметричного замыкания A(RS) при условии, что A(R) является матрицей некоторого отношения R. Для этого необходимо в A(R) заменить 0 на 1 в соответствующих местах с учетом симметрии. Например, если А = {аи а2, а3, я4}, /?={(яьЯз), (яь яд), (а2,а2), (а2,а4), (яз,я4))},и A(R) = Более того, если отношение R имеет к элементов, среди которых г (г < \А\) диагональных, то /?s имеет 2(к - г) + г = 2к - г элементов. Следовательно, если A(RS) имеет нечетное число элементов равных единице, то Rs должно включать хотя бы одну диагональную пару. 0 0 11 0 10 1 0 0 0 1 0 0 0 0 , то А(/?,) = 0 0 11 0 10 1 10 0 1 1110
Глава 1. Множества, отношения, комбинаторика 39 1.1.6. Аксиоматика Цермелло-Френкеля Приведем для полноты картины полное перечисление аксиом теории множеств, которое носит название аксиоматики Цермелло-Френкеля [32]. □ Аксиома объемности. Два множества равны тогда и только тогда, когда они состоят из одних и тех лее элементов. □ Аксиома свертки. Любое свойство Р(х) определяет некоторое множество А с помощью условия: элементами множества А являются те и только те предметы а, которые имеют свойство Р. О Аксиома пары. Если а и Ъ — различные предметы, то существует множество {а, Ъ}, которое состоит в точности из предметов а и Ь. П Аксиома объединения. Для произвольного множества А существует множество В, которое состоит в точности из всех элементов, входящих в элементы множества А. П Аксиома бесконечности. Существует хотя бы одно бесконечное множество — множество натуральных чисел N. □ Аксиома булеана. Для любого множества А существует множество В(А) всех подмножеств множества А. П Аксиома выбора. Если дано множество А, то существует функция f, которая ставит в соответствие каждому непустому подмножеству В из множества А один определенный элемент f(В) из множества В. П Аксиома подстановки. Для любого множества А и однозначной функции/, определенной на множестве А, существует множество, которое состоит в точности из элементов f(x) для х Е А. Приведенная система аксиом является недостаточно определенной. Это связано с вопросом высказывания, которое используется в аксиоме свертки. Язык высказываний должен описываться более точно, иначе это приводит к противоречиям, которые известны как парадоксы теории множеств типа "я говорю неправду" (парадокс обманщика), "пусть А — множество всех множеств, не являющихся элементами самих себя, тогда каждое из двух возможных высказываний является противоречивым: А является элементом А и А не является элементом Л" (парадокс Рассела) и т. п. Уточнение формального языка высказываний детально рассмотрено ниже. 1.1.7. Контрольные вопросы □ Что такое множество? □ Какие существуют способы задания множеств? ' □ Какие основные операции выполняются над множествами?
40 Часть I. Математические основы □ Что такое булеан некоторого множества £/? □ Что такое: • декартово произведение множеств Д, fl, С, Е\ • декартова степень некоторого множества А\ • бинарное отношение, заданное на множестве Л? □ Назовите основные свойства бинарных отношений. Какое отношение называется рефлексивным, симметричным, антисимметричным, транзитивным? □ Будут ли отношениями эквивалентности отношения /?!=/? П Г,/?!=/?* Г, /?1=/Г\ если R и Т — отношения эквивалентности? □ Будет ли бинарное отношение R вида (я, b) R (с, d) <=> a + d = b + c, где a, b,c,de N+, отношением эквивалентности? □ Будет ли отношением частичного порядка отношение, обратное к отношению частичного порядка? □ Какие свойства будет иметь матрица рефлексивного, симметричного, антисимметричного отношения, заданного на некотором непустом конечном множестве? □ Будут ли эквивалентными множества {а, Ь, с, d} и {я, Ь, с, d, d}l Докажите, что множества четных и нечетных натуральных чисел эквивалентны. 1.1.8. Задачи и упражнения 1. Доказать, что условия ДсВ, АиВ = В эквивалентны. 2. Доказать, что AnBQAQAvB, ЛпВсВсЛиВ, A\BqA. 3. Доказать, что 0*{0}, {{а},{Ь,с}}*{ауЬ,с}.
Глава 1. Множества, отношения, комбинаторика 41 4. Объяснить, почему Зе {1,2,3,4}, {1,2}« {{1,2,3},{2,3},1,2}. 5. Описать словами каждое из множеств: • {х G N | х делится на 2 и х делится на 3}; • {* |*е Аихе В}\ • {х\хе А их£ В}\ • {(*,.y)eD2|x2 + y2=l}; • {(х,у)еЪ2\у = 2хиу = Зх]. 6. Пусть универсальным множеством U служит множество натуральных чисел N, т. е. U = N, а А = {х G N | для некоторого у е N*х = 2у}, В = {* G N | для некоторого yGN+x = 2y-l}, C={jcg N|jc<10}. Построить или описать словами множества А\ (A u B)\ С Л \ С Г \ (Л и В). 7. Найти множества: • 0П{0}; • {0}П{0}; • {0,{0}}\0; • {0,{0}}\{0}; • {0,{0}}\{{0}}. 8. Доказать, что множество всех корней многочлена F(x) =f\(x) -/г(х)— это объединение множеств корней многочленов/К*) и/гС*). 9. Доказать: • законы М1-М5 — алгебры множеств; • ((AnBnX)v(AnBnCnXnY)v(AnXnX')) = AnBnX. 10. Доказать тождества: • AuA' = t/; • А \ (В и С) = (А \ В) п (А \ О; • Л\(ВиС) = (Л\В)\С;
42 Часть I. Математические основы • Д\(ВпО = (А\й)и(Д\0; • A\(B\Q = (A\B)v(AnQ\ • (Д\Я)\С = (Д\С)\(Я\С); • АпВ = А\(А\В)\ • Аий = Аи(В\А); • (A/uB)nA=Anfl; • Лп(В\Л) = 0; • (ДиВ)\С = (Д\С)и(В\0; • ДиВсС^ДсСиВсС; • Дс(ВпОоАсВиАсС; • Ап(В\0 = (ДпВ)\(ДпО = (АпВ)\С; • (AnB)u(AnB,) = (AuB)n(AuB,) = A; • А = В^ДиВ = ВоАпВ = А«А\В = 0иА,иВ={/, где U — универсальное множество, а Л' — дополнение множества А в U. 11. Существуют ли такие множества Л, В, С, что Л п В Ф 0, Л п С = 0, (Л n fi) \ С = 0? 12. Найти все подмножества множеств: 0, {0}, {дс}, {1, 2}. 13. Доказать, что множество Л, которое состоит из п элементов, имеет 2п подмножеств. 14. Что представляет собой множество D x D, если D — множество действительных чисел? 15. Доказать, чтоАс(ВиС)о(АпВ,)сС. 16. Какие из приведенных ниже утверждений справедливы для любых множеств Л, В, С? • АсВиВсС=»АсС; • АфВ\\ВфС=>АфС\ • Ас(ВиО/иВс(АиО/=>В = 0. 17. Пусть U— универсальное множество и Д с £/. Доказать, что U = A=>A = U. 18. Доказать, чтоД = В/«ЛпЯ = 0иДиЯ=£Л 19. Доказать, что когда А\ эЛ2э • •• Ап~эА\, то А\ = Лг = ... =Ап для произвольных множеств^!,Аь ...,Л„.
Глава 1. Множества, отношения, комбинаторика 43 20. Доказать, что: А + В = В + А\ А - (В + О = (А - В) - С; Л = В<=>А-В = 0; А п (В - О = (Л п В) - (Л п О; А + (Л + В) = В; Л и В = А - В + (Л п В); Д\В = Дн-(ДпВ); А-0 = Л; Л-Л = 0; A-t/ = A/. 21. Доказать, что: АиВ = АпВ<=>Л = В; (AnB)uC = An(BuQ<=>C = A; AcB=>AuCcBuC; AcB=>AnCcBnC; АсВ=>А\СсВ\С; АсВ=>С\ВсС\А; АсВ=>В/сЛ/; (AnB)uC = An(BuQ»CcA. 22. Доказать, что если Л, В,С, D — непустые множества, то: A = BuC = D*=>AxC = BxD\ AcBhCcD»AxCcBxD. 23. Доказать, что: В(Л п О = В(Л) п В(С); В(пД) = пВ04,); В(иЛ,)={иС,|С,еВ(Л,)}, где i пробегает некоторое множество целых чисел /. 24. Доказать, что n(Bu A) = Bn(u А). i=i i=i 25. Доказать, что {{*},{.*, .у}} = {{z}, {z, u}} <=>x = z иj> = и. 26. Доказать, что А х (В х Q * (Л х В) х С, (А п В) х (Cn D) = (А х Q n (В х D).
44 Часть I. Математические основы 27. Дать геометрическую интерпретацию отношений: • {(x,y)eD2\y = x); . {(x,y)eD2\y>x); • {(х,у)е D210<jc< 1 или0<^<1}; • {(х,у)е D2|0<jc<1 и0<у<1). 28. Найти R2 и /Г1 для отношения R = {(х, у) \ х, у е N* и х делит у}. 29. Доказать, что для любых бинарных отношений имеют место равенства: • (ЯиЯ1)_1 = Я_1иЯ,_1; 30. Доказать, что когда бинарное отношение R на Л: • симметричное, то R = /Г1; • рефлексивное и транзитивное, то R2 = /?; • рефлексивное и антисимметричное, то R п /Г = i. 31. Привести пример бинарного отношения, которое: • рефлексивно, симметрично, нетранзитивно; • рефлексивно, несимметрично, транзитивно; • рефлексивно, антисимметрично, нетранзитивно; • нерефлексивно, симметрично, транзитивно. 32. Пусть А = {а, Ъ, с, rf, е}, а Л = {(д, Ь\ (я, с), (Ь, Ь), (с, с), (в, е), (d, rf), (d, a), (rf, Ь), (с, J), (е, d)} и /?i = {(а, J), (rf, а), (с, d)> (с, с), (й, £)} — бинарные отношения на множестве Л. Построить /Г1, RnRuRvRuR\ Ru R + Ru Будет ли отношение /?, /?п/?ь /? + /?ь RvR\, R\R\ рефлексивным, симметричным, транзитивным? Построить матрицы отношений для /?, /?ь /?п/?ь /?и/?ь /?,-, /?s, /?t, /?i u /?s, отношения /?2, /?3. 33. Какое отношение является транзитивным замыканием отношения "X— прямой потомок У"? 34. Пусть А = {2, 3, 5, 6, 11, 12, 14} и <— отношение частичного порядка на Л, такое, что х < у <=> х делит у. Построить множество отношения < и упорядочить множество А относительно этого порядка. 35. Показать, что отношение с для множеств является отношением частичного порядка.
Глава 1. Множества, отношения, комбинаторика 45 Для каких множеств А булеан В(Л) будет линейно упорядоченным множеством относительно отношения с? 36. Доказать, что когда /— функция из А в В, a g — функция из В в С, то/* g является функцией из Л в С. 37. Доказать, что для того чтобы отображение R: А —> В было взаимно однозначным, необходимо и достаточно, чтобы iA = R * /Г1, /Г1 * R = iB. 38. Доказать, что когда/— произвольная функция, то ДЛ п В) с ДД) nj{B), (ДсВ)=^ДЛ)сДВ). 39. Установить взаимно однозначное соответствие между множествами А х В иВхЛ. 40. Доказать следствие 1.1.4. 41. Доказать следствие 1.1.6. 42. Доказать, что множество действительных чисел несчетно. 43. Доказать методом математической индукции, что: • п -п кратно 5; • л • (2л2 - Ъп + 1) кратно 6; • п -п кратно 7; • б-г^-Чз^кратно^; • 13 + 23 + ...+л3 = (л-(л+1)/2)2; • I2 + 22 + ... + (2и - I)2 - л • (4м2 - 1) / 3; • (1 - 1 /4) • (1 - 1 /9) • ... • (1 - 1 / (п + I)2) = (л + 2)/ (2и + 2); • 1 / (л + 1) + 1 / (и + 2) + ... + 1 / 2п > (13 / 24); • 1-2 + 2-5 + ...+!!• (Зл - 1) = л2 • (л + 1); • 1/2-3/4-...-(2л-1)/2л<л/Зл + 1. 44. Доказать, что когда х\, Х2, ..., хп— положительные действительные числа, такие что х\ • хг • ... • хп = 1, то х\ + хг + ... + хп > л, то *1+*2+- + *,! „ ГГГ — г.^ххх2.~хп . л 45. Доказать, что если *ь *2, •••> хп— положительные действительные числа, такие что х\ + Х2 + ... + хп < 1 / 2, то (I -д:,) - (1 -д:2) • ... • (I -д:п)> 1 /2. 46. Доказать, что произвольную сумму денег, больше 7 рублей, можно разменять купюрами стоимостью 3 и 5 рублей.
46 Часть I. Математические основы 1.2. Элементы комбинаторного анализа На практике часто встречаются задачи, в которых необходимо подсчитать число всех возможных способов размещения некоторых предметов конечного множества или число всех возможных способов выполнения определенного действия из конечного множества таких действий. Например, сколькими разными способами можно расставить скобки в выражении a + b + c + d + e +/, если операция + ассоциативна, а буквы а, 6, с, d, e,f— некоторые действительные числа? Сколькими способами могут распределиться медали на чемпионате мира по футболу среди шестнадцати команд-участниц финальной группы? Задачи такого типа называются комбинаторными, а методы их решения — методами комбинаторного анализа. Поскольку комбинаторика имеет дело с конечными множествами, то ее часто называют теорией конечных множеств. s 1.2.1. Основное правило комбинаторики Рассмотрим такую задачу. Пусть из пункта А города Киева в пункт В можно доехать тремя видами транспорта: ((7) троллейбус, (А) автобус и (М) метро), а из пункта В в пункт С — только двумя видами транспорта: ((7) троллейбус и (А) автобус). Сколькими способами можно доехать из пункта А в пункт С города Киева? Решение этой задачи сводится, очевидно, к подсчету числа элементов в декартовом произведении множеств {А, Г, М] х {А, Т). Число таких элементов, как мы знаем, равно произведению числа элементов первого множества на число элементов второго множества, т. е. в нашем случае это 3-2 = 6. Следовательно, существует шесть способов доехать из пункта А в пункт С. Оказывается, что за этой простой задачей стоит правило, которое называется основным правилом комбинаторики. Пусть необходимо выполнить последовательно к действий. Если первое действие можно выполнить п\ способами, второе — п2 способами и так далее до к-го действия, которое можно выполнить пк способами, то все к действий можно выполнить п\ • пг- ... • и* способами. Справедливость этого правила непосредственно вытекает из теоремы 1.1.17. Пример 1.2.1 □ Сколькими способами на первенстве мира по футболу могут распределиться медали, если в финальной части играют 24 команды? Решение. Золотую медаль может получить любая из 24 команд, т. е. имеем 24 возможности. Серебряную медаль может выиграть одна из 23 команд, а бронзовую — одна из 22 команд. По основному правилу комбинаторики общее число способов распределения медалей 24 • 23 • 22 = 12 144.
Глава 1. Множества, отношения, комбинаторика 47 □ Сколько трехзначных чисел можно составить из цифр 0, 1,2, 3, 4, 5, если: • Цифры могут повторяться. Решение. Первой цифрой может быть одна из цифр 1, 2, 3, 4, 5, поскольку 0 не может быть первой цифрой, ибо в таком случае число не будет трехзначным. Если первая цифра выбрана, то вторая может быть выбрана шестью способами, как и третья цифра. Следовательно, общее число трехзначных цифр 5 • 6 • 6 = 180. • Ни одна из цифр не повторяется дважды. Решение. Первой цифрой может быть одна из пяти цифр — 1, 2, 3, 4, 5. Если первая цифра выбрана, то второй может быть также одна из пяти цифр (тут уже учитывается 0), а третья может быть выбрана четырьмя способами из четырех цифр, что остались. Следовательно, общее количество таких трехзначных чисел 5 • 5 • 4 = 100. • Цифры нечетные и могут повторяться. Решение. Первой цифрой может быть одна из трех цифр: 1, 3, 5. Второй тоже может быть одна из этих трех цифр. Аналогично и третья цифра может быть выбрана тремя способами. Таким образом, общее количество таких чисел равняется 3 • 3 • 3 = 27. < 1.2.2. Число различных /с-элементных подмножеств л-элементного множества Посмотрим теперь, сколько существует разных подмножеств из к элементов в множестве, состоящем из п элементов (к < п). Теорема 1.2.1. Число различных к-элементных подмножеств п-элементного множества равно С* = , (1.2.1) где сокращение и! = и-(и-1)-...-3-2-1 называется факториалом числа п (читается w-факториал). Причем 0! = 1. Доказательство. Чтобы построить ^-элементное подмножество множества Л, необходимо к (к - 1)-элементному множеству присоединить один из п - к + 1 элементов, которые не входят в это подмножество. Поскольку число (к- 1)- элементных подмножеств равно Сп , и каждое из этих подмножеств можно сделать ^-элементным п - к + 1 способами, по основному правилу комбинаторики получаем число Сп~ -(п-k+l) подмножеств. Однако не все эти
48 Часть I. Математические основы подмножества будут различными, поскольку любое ^-элементное множество можно также построить к способами. Следовательно, к _n-k+l k.x _(n-k+l)(n-k + 2) k_2 _ к п k-(k-l) n '" ^(п-к + 1)(п-к + 2)...(п-1) х Ь(*-1)-...-2 Поскольку Сп — число одноэлементных подмножеств множества Л — равно и, то с* ^n(n-l)...(n-k+l) = п\ к\ к\(п-к)\' Теорема доказана. Произвольное ^-элементное подмножество множества А называется комбинацией, или выборкой, а число Сп — числом комбинаций или сочетаний из п элементов по к элементов. Числа Сп называют биномиальными коэффициентами. Смысл этого названия будет понятен несколько позже. А ( 77, П) L—► Рис. 1.2.1. Прямоугольная шахматная доска Биномиальные коэффициенты имеют интересную геометрическую интерпретацию. Пусть имеем прямоугольную шахматную доску размером т на и, размещенную на координатной плоскости так, как это показано на рис. 1.2.1. Эта доска состоит из т • п элементарных квадратов, разделенных п - 1 горизонтальной линией и т -1 вертикальной. Определим, сколькими разными самыми короткими путями можно попасть из точки (0,0) в точку (w, n) на этой доске. Каждый самый короткий путь, ведущий из точки (0, 0) в точку (т, и), состоит, очевидно, изт + n сторон элементарных квадратов, среди которых т гори-
Глава 1. Множества, отношения, комбинаторика 49 зонтальных и п вертикальных. Эти пути отличаются между собой только числом вертикальных и горизонтальных сторон. Значит, общее количество путей равно числу способов, какими из т + п сторон можно выбрать п вертикальных, т. е. это число равно С"1+п. Заметим, что можно было бы вести подсчет не по вертикальным сторонам, а по горизонтальным. То есть, существует С^+л различных самых коротких путей и, следовательно, справедливо равенство Ст+п = С'т+п (формула симметрии). Следствие 1.2.1. Доказательство. С* = С*_, + С*_/ (формула сложения).( 1.2.2) = (я-1) ( п-к к\(п-к-1)1 (к-1)\(п-к)\ (п-1)\-п п\ к = СК к\(п-к)\ к\(п-к)\ п' к\(п-к)\ к\(п-к)\) Следствие доказано. Пример 1.2.2 □ Сборная команда университета по волейболу насчитывает 15 человек. Сколько разных вариантов должен рассмотреть тренер перед игрой, чтобы заявить список игроков на игру? Решение. Число игроков волейбольной команды равно шести. Значит, число всех возможных вариантов — это число различных подмножеств, состоящих из шести элементов в множестве из пятнадцати элементов. Следовательно, по теореме 2 имеем С&-^-И-14-Ц-12-"-|О-5-7-13-11Ч0Ю. 15 6!9! 6-5-4-3-21 □ В скольких точках пересекаются диагонали выпуклого десятиугольника, если никакие три из них не пересекаются в одной точке? Решение. Каждой точке пересечения двух различных диагоналей соответствуют четыре вершины десятиугольника, а каждым четырем вершинам — одна точка пересечения. Таким образом, число всех точек пересечения равно числу способов, какими из десяти вершин можно выбрать четыре вершины, т. е.
50 Часть I. Математические основы eu-»L.i2±12.2,o 10 4!6! 4-3-2 точек пересечения. * 1.2.3. Число подмножеств данного множества Пусть А = {й|, й2, ..•, fln| — некоторое конечное множество, элементы которого перенумерованы. При работе с конечными множествами на вычислительных машинах такие множества часто задают с помощью характеристических векторов. Пусть Д' сД — произвольное подмножество множества А. Характеристический вектор v(A') = (vb v2, ..., vn) для множества А определяется с помощью такого соответствия: f 1, если элементу из А принадлежит множеству А'\ [О,если элементу из А не принадлежит множеству А\ Например, если А = {а, Ъ, с, d, e,f), и А' = {a, e,f), то v(A') = (1, 0, 0, 0, 1, 1). Теорема 1.2.2. А' - А" <=> v(A') = v(A"), где А\ А" — некоторые подмножества множества А. Доказательство. Пусть V и v" — характеристические векторы множеств А' и А" соответственно. Если А' = А", то для всякого / имеем v/ = v;". Отсюда следует, что v'(A') = v"(A"). Наоборот, если v'(A") = v"(A"), то для всякого / имеем v/ = v,". По определению характеристического вектора, если v/ = v,"= 1, то а, принадлежит как подмножеству А', так и подмножеству А'\ а если v/ = v," = 0, то элемент а, не принадлежит ни тому, ни другому подмножеству. Отсюда следует, что подмножества А' и А" состоят из одних и тех же элементов, т. е. А' = А". Теорема доказана. Следствие 1.2.2. Число различных подмножеств n-элементного множества равно 2п. Действительно, поскольку число компонент характеристического вектора равно п и каждая компонента может принимать одно из двух значений — О или 1, то число различных возможных характеристических векторов по основному правилу комбинаторики равно 2 • 2 • ... • 2 = 2п. Следствие 1.2.3. £скп=2". *=0
Глава 1. Множества, отношения, комбинаторика 51 Действительно, поскольку Сп — число различных ^-элементных подмножеств л-элементного множества, то сумма всех таких чисел составляет число всех подмножеств данного л-элементного множества. 1.2.4. Перестановки и размещения упорядоченных множеств Комбинаторные формулы, которые были установлены выше, не зависят от порядка элементов в множествах. Формулы, которые будут установлены ниже, относятся к упорядоченным множествам. Два упорядоченных множества считаются различными, если они отличаются между собой или своими элементами, или порядком элементов. Ясно, что когда множество имеет более одного элемента, то его можно упорядочить более чем одним способом. Рассмотрим сколькими разными способами можно упорядочить конечное л-элементное множество Л. Упорядоченные множества, которые отличаются одно от другого только порядком своих элементов (то есть, могут быть получены из одного и того же множества только перестановкой своих элементов), называются перестановками. Обозначим число всех перестановок л-элементного множества Рп. Теорема 1.2.3. Рп = п\. Доказательство. Будем последовательно выбирать элементы множества А и размещать их в заданном порядке на п местах. На первое место можно поставить любой из п элементов множества Л, т. е. имеем п возможностей. После того как первое место заполнилось, на второе место можно поставить любой из п - 1 элементов и т. д. По основному правилу комбинаторики имеем Рп = п- (п- 1) • ... • 3 • 2 • 1 = и! возможностей упорядочения л-элементного множества Л. * Пример 1.2.3 □ Сколькими разными способами можно разместить пять книжек на книжной полке? Решение. Искомое число размещений является числом способов упорядочения множества из пяти элементов. Следовательно, это число равно Р5 = 5-4-3-2- 1 = 120. □ Сколькими способами можно упорядочить л-элементное множество А = {1, 2, ..., п] (п > 2) так, чтобы последние два элемента были п - 1 и nl Решение. Число способов будет Рп-2 = (п - 2)!. *
52 Часть I. Математические основы 1.2.5. Перестановки с повторениями Рассмотрим такую задачу. Сколькими способами можно представить и-элементное множество в виде объединения его подмножеств АХуА2, ..., Аш попарно не пересекающихся, так что |Ai| = fcb И2| = А:2, ..., \Am\ = kmy &,>0, к\ + к2 + ... + кт = п. Поставленную задачу можно решать таким образом. Возьмем произвольное к\-элементное подмножество Ах множества А (это можно сделать Сп способами). Среди оставшихся п - к\ элементов возьмем ^-элементное подмножество А2 множества А (это можно сделать С 1к способами) и т. д. По основному правилу комбинаторики имеем, что число искомых отношений эквивалентности равно С*,.С*2 Ckm = П\ (П-кх)\ т п п-кг- п-кх.кг^-кт_{ к^п_кхуа кг\{п-кх-к2)\ '" (n-kl-k2-...-km_l)\ = п\ 'кт\(п-кх-к2-...-кт_х-кт)\ kx\k2L.km\ Таким образом, имеет место теорема. Теорема 1.2.4. Пусть kjy k2t ..., кт— некоторые натуральные числа, такие что kj + к2+ ... + кт-п. Количество способов, какими молено построить разбиение п-элементного множества на классы A], A2t ..., А^ число элементов которых соответственно к и къ ..., кт равно Сл(М2.---.*ш)=, "' , ,- О'2'3) кх\к2\„кт\ Числа Сп(кх, к2, .., кт) называются полиномиальными коэффициентами. Рассмотрим одну полезную интерпретацию теоремы 1.2.4. Пусть имеем некоторый алфавит Х= {а, Ь, с, ..., d] из т символов и множество из п символов этого алфавита, причем среди п элементов этого множества содержатся к\ букв а, к2 букв Ь, ...,кт букв d и кх + к2 + ... + кт = п. Необходимо найти количество различных слов, которые можно построить из этих п букв. Перенумеруем места, на которых стоят буквы, числами от 1 до п. Каждое слово однозначно определяется множествами Ах (номера мест, на которых стоит буква а) А2 (номера мест, на которых стоит буква Ь), ..., Ат (номера мест, на которых стоит буква d). Следовательно, число различных слов равно числу различных представлений n-элементного множества! 1, 2, ..., п) в виде объединения его подмножеств, т. е.
Глава 1. Множества, отношения, комбинаторика 53 СЛ(М2.-А.)- , ' k ,- *1 •/с2-"'сш * Из этой задачи следует другая формулировка предыдущей теоремы. Теорема 1.2.5. Число различных перестановок, которые молено построить из п элементов, среди которых находятся к\ элементов первого типа, &2 элементов второго типа, ...,кт элементов т-го типа, равно Сп(к\, £2, • • •> кт). Пример 1.2.4 □ Сколько различных слов можно построить перестановкой букв в слове "лаваш"? Решение. Слово "лаваш" включает по одному экземпляру букв "л", "в", "ш" и два экземпляра буквы "а", а общее количество букв — 5. По формуле 1.2.3 находим ± 5-43 = 60. 2!1!1!1! □ Сколько слов длиною в восемь букв можно составить из букв "а" и "б", таких, что количество букв "а" в этих словах не превышает трех? Решение. Указанным условиям будут удовлетворять слова, которые не имеют ни одной буквы "а", слова, которые имеют только одну букву "а", слова, которые имеют две буквы "а", и, наконец, слова, которые имеют три букви "а", т. е. общее количество слов равно С8(0,8) + С8(1,7) +С8(2,6) + С8(3,5) = — + — + — + —= 4 0!8! 1!7! 2!6! 3!5! = 1 + 8 + 28 + 56 = 93 1.2.6. Размещение элементов множества Пусть дано некоторое неупорядоченное и-элементное множество Л. Сколько разных упорядоченных ^-элементных подмножеств может иметь множество А? Рассмотрим два возможных варианта этой задачи: □ подмножества имеют к различных элементов; □ подмножества имеют к не обязательно различных элементов. Следовательно, в первом варианте задачи подмножества задаются неизбыточно, а во втором, — избыточно, однако число всех различных элементов подмножества вместе с числом всех экземпляров каждого из его элементов равно к. Упорядоченное ^-элементное подмножество множества А, все элементы которого различны, называется размещением без повторений, а любое упорядоченное ^-элементное подмножество множества А, все к элементов которого
54 Часть I. Математические основы не обязательно различны, называется размещением с повторениями. Заметим, что в первом случае к < п, причем если к = л, то в этом случае размещение является перестановкой. Во втором случае к не обязательно должно быть меньше п, т. е. возможно, что к > п. П Решение первого варианта задачи. Поскольку множество А неупорядочено, то любое его ^-элементное подмножество может быть упорядочено одним из к\ способов, а число всех возможных различных ^-элементных подмножеств множества А равно С* . Следовательно, число всех возможных размещений из п элементов по к равно к\ Сп , т. е. имеет место следующая теорема Теорема 1.2.6. Количество упорядоченных к-элементных подмножеств п-элементного множества, все к элементов которого различны, равно А* =*!•<:*= —^— = п-(п-1)...,(п-к + 1). (п-к)\ Пример 1.2.5 • Студенту необходимо сдать три экзамена на протяжении семи дней. Сколькими способами это можно сделать? Решение. Искомое число способов равно количеству трехэлементных упорядоченных подмножеств множества из семи элементов, т. е. существует Л7 =7*6-5 = 210 способов. Если известно, что последний экзамен будет сдаваться на седьмой день, то число способов равно 3 • А5 = 3 • 6 • 5 = 90. • Сколькими разными способами можно разместить пять студентов в аудитории, которая имеет 20 мест? Решение. Искомое число способов равно числу размещений из 20 эле- ментов по 5 элементов, т. е. а|о = 20 • 19 • 18 • 17 • 16 = 1 860 480. < □ Решение второго варианта задачи. Пусть В={Ь\, Ъг, ..., Ьк)— некоторое конечное ^-элементное множество, а А = [аи аг, ..., ап}— n-элементное множество и/: В —> А— функция из В в Л. Как известно, функцию/можно задать с помощью таблицы значений [ b1 an Ьг ас ьк aik
Глава 1. Множества, отношения, комбинаторика 55 где a{ = f(b:) J = 1, 2, ..., к. Теперь нашу задачу можно сформулировать j j так: сколько существует функций из множества В в множество Л? В такой формулировке задача решается достаточно Лросто. Условимся называть кортежем длины к элементы вида (а\9 а2, ..., ак), где а, — не обязательно различные элементы некоторого конечного множества А. Поскольку каждый элемент ах может быть любым элементом множества Л, то число различных кортежей вида (ai{ ,ai2,..., я,- ) может быть пк. Теорема 1.2.7. Количество различных упорядоченных к-элементных подмножеств п-элементного множества, все к элементов которого не обязательно различны, равно п . Пример 1.2.6 • Сколько различных слов можно составить: О В алфавите X = {0, 1} из восьми букв. Решение. Всех таких слов будет столько, сколько существует отображений восьмиэлементного множества в множество из двух элементов, т. е. по теореме 1.2.7 — 28 = 256 слов О В алфавите X = {0, 1} из 16 букв? Решение. В этом алфавите имеем 216 = 65 536 слов. * 1.2.7. Комбинации элементов с повторениями Пусть имеем неупорядоченное л-элементное множество Л, элементы которого разбиты на п классов (в каждом классе находится по одному элементу), которые будут называться типами элементов. Комбинацией из п элементов по т элементов с повторениями называется m-элементное подмножество множества А, каждый элемент которого принадлежит одному из п типов. Совокупность таких комбинаций называют комбинациями из п элементов по т. Теорема 1.2.8. Количество различных комбинаций из п элементов по т элементов с повторениями равно Доказательство. "Закодируем" каждую комбинацию следующим образом. Если комбинация включает к\ элементов первого типа, то записываем подряд к\ единиц, ставим нуль. После него ставим подряд кг единиц, если комбинация включает кг элементов другого типа и т. д. Например, если А - {а, Ь, с, d), то комбинациям по два элемента с повторениями соответствуют пары {а, а), 3 Зак. 3427
56 Часть I. Математические основы {a, b), {а, с}, {a, d), {b, ft}, {ft, с}, {с, rf}, {с, с}, {с, rf}, {</, rf}, а их "кодами" будут соответственно 11000, 10100, 10010, 10001,..., 00011. Нетрудно убедиться, что между "кодами" и комбинациями существует взаимно однозначное соответствие (убедитесь самостоятельно). Таким образом, каждой комбинации из п элементов по m соответствует последовательность из m единиц им-1 нулей (в рассмотренном примере п = 4, m = 2). Следовательно, число всех комбинаций из п элементов по m с повторениями равно числу последовательностей, состоящих из m единиц и п - 1 нулей, т. е. С™+т_х = С"+т_х. Теорема доказана. Пример 1.2.7 □ Сколько целых неотрицательных решений имеет уравнение х\ +jc2+ ... +лсп = т? (1.2.4) Решение. Решения данного уравнения можно интерпретировать так. Если имеем целые неотрицательные числа х\, хг, ..., хП9 такие что х\ + хг + .. • + хп = т, то можно составить комбинацию из п элементов по т, взяв х\ элементов первого типа, хг элементов второго типа, ..., хп элементов л-го типа. Наоборот, имея комбинацию из п по т элементов, получим решение уравнения (1.2.4) (jci, JC2, ..., хп — число элементов первого, второго, и, соответственно, и-го типа), где все дг, неотрицательные (/ = 1, 2, ..., п). Таким образом, между множеством всех неотрицательных решений уравнения (1.2.4) и множеством всех комбинаций из п элементов по т устанавливается взаимно однозначное соответствие. Следовательно, число целых неотрицательных решений уравнения (1.2.4) равно Например, если х\ + хг + jc3 + х* = 10, то это уравнение имеет Чо+4-1-Чз-4!9!-/^ целых неотрицательных решений. ^ 1.2.8. Бином Ньютона Из элементарной математики хорошо известны формулы сокращенного умножения: (a + b)2=a2+2ab + b2 и (a + b)3 = a3 +3a2b + 3ab2 +b3 .
Глава 1. Множества, отношения, комбинаторика 57 Эти формулы можно записать и так: (а + Ь)2 = С%а2Ь° + С\аЪ + с\а%2, (а + Ь)ъ = С$а3Ь° + С\а2Ъ + С32я£2 + C33aV. Оказывается, что имеет место и общая закономерность. Теорема 1.2.9. Справедливо равенство (а + Ъ)п = С°а"Ь° + Схпап-хЪх + С,У"2Ь2 + ... + Сппа°Ьп (1.2.5) Доказательство проводится индукцией по числу п. При п=1 (а + Ь)х =С\ахЬ +с\а b]=a + b. Следовательно, база индукции доказана. Пусть теорема справедлива для п. Покажем, что она справедлива и для и + 1. По предположению индукции имеем (А + Ь)л+,=(а + Ь)я(а + Ь) = (^ = СУ+1Ь° + {С\апЪ + C„V*) + (C„V" V + ф ""V) + ... + Cnna°bn+l = в силу следствия 1.2.1 и того, что Сп = С,2+1 = 1. Теорема доказана. Равенство (1.2.5) называют биномом Ньютона. Из равенства, установленного в следствии 1.2.1, следует, что биномиальные коэффициенты (теперь ясно, почему мы так назвали их раньше) можно выписать в виде треугольной таблицы, которая носит название треугольника Паскаля. 11 п=1 1 2 1 п=2 13 3 1 п=3 14 6 4 1 п=4 1 5 10 10 5 1 п=5 В n-й строке треугольника Паскаля стоят коэффициенты разложения (1.2.5), причем каждый коэффициент, кроме двух крайних равных 1, — это сумма соответствующих коэффициентов из предыдущей строки. Этот треугольник имеет еще некоторые полезные свойства, с которыми можно детальнее познакомиться в [10, 11, 28, 60, 62, 73].
58 Часть I. Математические основы Следующая теорема является обобщением бинома Ньютона и дает ответ на то, как раскрывать скобки при вычислении выражения вида (ax+a2+... + ak)n. Полиномиальная теорема. (a, + a2+...ak)n = ^Cn(rX4r2*...rk)tfa%...ar£ г,>0,...,/*>0 г,+...+/* =/i Доказательство. Перемножим последовательно а\ + а2 + ... + ак п раз. В результате получим кп слагаемых вида d\ d2 ... dn, где каждый сомножитель dt равен либо а\9 либо а2, ..., либо ак. Пусть В(г\, г2, ..., гк) означает множество всех таких слагаемых, в которых а\ встречается г\ раз, а2-г2 раз, ..., ак-гк раз. Как мы знаем (см. теорему 1.2.4), число таких слагаемых равно числу способов разбиения множества {1,2, ... , п) на к подмножеств Вь В2у ..., Вк так, чтобы в множестве Bs было rs элементов (гд > 0), т. е. равно Сп(гь гг, ..., r/k), где г\ + г2 + ... + гк = п, а Z?v — множество тех значений /, для которых di = av. Следовательно, (а,+а2+..Л4)"= SC„(r1.r2....rt)epfl?..^ . г,>0,...,/*>0 Г,+...+ Г£=/1 Теорема доказана. Следствие 1.2.4. (а + Ь)п = ^Скап~кЬк . Действительно, если положить г\ = к, то г2 = п-к и из полиномиальной теоремы следует данное следствие. 1.2.9. Свойства биномиальных коэффициентов Раньше мы уже установили некоторые свойства биномиальных коэффициентов. Напомним их: □ формула симметрии r-./l _ in»! □ формула сложения ил ~~ ^л-1 "*" ил-1 » □ формула суммы всех биномиальных коэффициентов С0°-С'+Сп2-... + С=2".
Глава 1. Множества, отношения, комбинаторика 59 Пользуясь этими свойствами, нетрудно получить еще ряд формул. Например, если положить в биноме Ньютона a = 1, Ъ = -1, то получим такое свойство: □ с00-с'+с2-...+(-1)Х"=о. Следующую формулу легко можно установить, выполняя вычисления: □ формула вынесения за скобки К Приведем еще некоторые полезные свойства биномиальных коэффициентов: □ Сп +C/I+1 +... + Cn+k =Сп+к+}; □ Сп_х + Сп_2 +... + Сг_! = Сп ; □ С° + 2С1п+... + пС',1г=п2п-1\ р. ^О^к' ,f^fk-\ , +СкС° =Ск ^n ^k ~*~ c«-l W + l "•" ••• "*" ^n-m^k+m "~ c/i+*+l » О (С°)2+(С^)2 + ... + (С,:)2 = С^. В заключение данного раздела отметим, что перечисленными свойствами биномиальных коэффициентов их свойства далеко не исчерпываются. Существует большое количество свойств этих коэффициентов, и появляются все новые и новые. Как указывает Кнут в своей книге "Искусство программирования для ЭВМ", т. 1., с. 85, за последние годы таких свойств появилось столько, что они радуют только тех людей, которые их установили. Поэтому дать исчерпывающий ответ о свойствах биномиальных коэффициентов нет никакой возможности. Перейдем к рассмотрению основных методов комбинаторного анализа. 1.2.10. Метод рекуррентных соотношений Этот метод, как уже известно, позволяет находить значения некоторой функции для заданной величины аргумента через меньшие значения аргументов. В комбинаторике метод дает возможность находить решение комбинаторной задачи для п предметов через решение аналогичной задачи для меньшего числа предметов с помощью некоторого соотношения, называемого рекуррентным соотношением. Метод рекуррентных соотношений хорошо известен из курса школьной математики, где он применялся при нахождении сумм
60 Часть I. Математические основы арифметической и геометрической прогрессий и при нахождении л-го члена этих прогрессий. Рассмотрим некоторые примеры. □ Ряд чисел Фибоначчи. Этот ряд задается такими соотношениями; а, = а(1) = 1, а2 = а(2) = 1, ап = ап.х + а„_2, п > 2. Пользуясь ими, получим последовательность чисел, которая известна под названием последовательности чисел Фибоначчи. П Квадраты натуральных чисел. Рассмотрим последовательность квадратов натуральных чисел а\ = а{\) = I2, аг = а(2) = 22, ..., ап = а(л) = л2, ... . Пользуясь формулой сокращенного умножения (а + Ь) =а + 2я£ + Ъ , получим такую рекуррентную формулу: ап+\ = (и + I)2 = л2 + 2л + 1 = ап + 2м + 1. Используя ее, можно находить квадраты чисел, не выполняя сложных вычислений. Например, когда известно, что 15 =225, то легко найти 16 . Действительно, 162 = 225 + 2 • 15 + 1 = 225 + 31 = 256. Аналогично можно получить формулу и для вычисления кубов натуральных чисел. □ Комбинации с повторениями. Пусть число комбинаций из п элементов по к элементов с повторениями равно fn . Каждая комбинация из п по к элементов включает или нет элемент ап. Число комбинаций, которые не включают элемент ап, равно fn_x. Каждая комбинация может быть получена присоединением к элементу ап некоторой комбинации из п элементов по к - 1 элементу, т. е. существует fn ~] комбинаций. Следовательно, всех комбинаций будет fn ~fn-\ + /непостроенное рекуррентное соотношение дает возможность найти fn . Действительно, Л* =/„*"' +(/„-? +/*-2) = /Г + /£' +- + /2"1 +/Л (1-2-6) Очевидно, что fn] = п и /j = 1. Положив в формуле (1.2.6) к = 2, получим Л2 =/„' +/„2-1 = /„' +/,!-! +- + /2 +/.* = = и + (и-1) + ... + 2 + 1 = — = Сл+1.
Глава 1. Множества, отношения, комбинаторика 61 Воспользовавшись одной из формул разд. 1.2.9 и положив в уравнении (1.2.6) к = 3, получим fn =Сп+\ +Сп +...+ С3 +С2 =Сп + 2, Повторяя эти вычисления к раз, получим окончательную формулу Л _ гк Jп ~~ ^п+к-\ • □ Приближенные вычисления значений элементарных функций. Хорошо известные из математического анализа формулы Маклорена, дающие разложение элементарных функций в степенные ряды в окрестности некоторого значения аргумента из их области определения, — важный пример использования рекуррентных соотношений. Важность их состоит в том, что они дают возможность вычислять значения функции практически с любой наперед заданной точностью. Рассмотрим примеры: • экспонента х , X X2 X* е =1 + —+ — + ... + — + ... 1! 2! п\ задается такими рекуррентными соотношениями: sx =1, 52=5, +-; 5/1+1 =sn+—-,гдеп>2; 1! п\ синус . X X X , л ч п — 1 X sin х = х + +... + (-1)" 1 +... 3! 5! 7! (2п-1)! задается такими рекуррентными соотношениями: х3 к- х2к~х s2=xy 54=52- —; s2k=s2k_2+(-l) ! ; косинус , х2 х* х6 , пЯ х2п cosx = l + + ... + (-1)" + ... 2! 4! 6! (2л)! задается такими рекуррентными соотношениями: х2 х2к sx = 1, 53 = 5, - —; s2k+\ = s2h_x + (-1) 2! ^l « . . . (2jt)| Пользуясь данными рекуррентными соотношениями, можно вычислять значения всех тригонометрических функций.
62 Часть I. Математические основы Приведенные рекуррентные соотношения играют важную роль при вычислении значений данных функций на ЭВМ, поскольку дают удобный способ программирования методов вычисления значений элементарных функций. Более детально с методами программирования элементарных функций можно познакомиться в [12]. 1.2.11. Метод включений и исключений Пусть А и В — конечные множества. Выясним, чему равно число \А и В\> если известны числа \А\ и |S|. Основная формула, которой можно воспользоваться для нахождения числа \А и В\9 следует непосредственно из определения операции объединения множеств: \AvB\ = \A\ + \B\-\AnB\. (1.2.7) Действительно, \А\ + |S| является числом, которое получается при подсчете сначала всех элементов множества А, а потом — всех элементов множества В. Однако при этом общие элементы множеств А и В (а их будет И п В\) считаются дважды, т. е. \А\ + |S| = \А и В\ + \А п В\9 откуда и следует равенство (1.2.7). Пользуясь формулой (1.2.7) и законами алгебры множеств, можно получить формулу для числа элементов любой конечной совокупности конечных множеств. Например, И и В и С\ = И и (В u OI = \А\ + |S u С\ - И п (В и С)\ = = \А\ + \В\ + \С\ -\BnC\- \(А п В) и (А п С)| = = И1 + |Д| + |С| - is n q - (И п в\ + и n q - \{А n s) n (л n qi = = \А\ + \В\ + \С\-\АпВ\-\АпС\-\ВпС\ + \АпВпС\. Справедлива общая теорема. Теорема 1.2.10. Если A lt А2, ..., Ап — некоторые конечные множества, то |Л,иА2и...иАи|= 2|А,.|- £ |Л^,| + 1</<и 1<1<7<л . (L2'8) X Д-пЛ,. пД^| + ... + (-1)л"1 X |ДпД7. n...n^|. \<i<j<k<n \<i<j<k<..<l<n Доказательство. Чтобы доказать теорему, необходимо показать, что каждый элемент из множества А\ и Аг и ... и Ап учитывается в правой части равенства (1.2.8) только один раз. Пусть ae^iU^u.-.u^ такой элемент,
Глава 1. Множества, отношения, комбинаторика 63 который входит в состав m множеств Л, (/ = 1, 2, ..., и). Тогда элемент а под- считывается в правой части (1.2.8) С)п - Ст + Ст -... + (-l)w_1 С™ раз. Но c:-ci+ci-...+(-irlc;=i-(i-ci+ci-ci + +...+(-iro=i-(i-ir = i, а это означает, что каждый элемент а из Л] иЛ2и ... иЛ„ учитывается в правой части равенства (1.2.8) только один раз. Теорема доказана. Метод подсчета по формуле (1.2.8), который состоит в последовательном выполнении операций сложения и вычитания, чередующихся между собой, называется методом включений и исключений. Пример 1.2.8 □ В группе студентов каждый студент либо блондин, либо брюнет. Среди студентов 10 блондинов, остальные брюнеты. 12 студентов любят читать детективы. Среди двенадцати студентов, которые любят читать детективы, 5 блондинов и 7 брюнетов. Сколько человек насчитывает вся группа, если два брюнета не любят читать детективы? Решение. Пусть А означает множество блондинов: \А\ = 10; В— множество брюнетов: |В| = 9; С— множество любителей читать детективы: \С\ = 12. Тогда А п В = 0, поскольку множества блондинов и брюнетов не могут иметь общих элементов; Аг\С — множество блондинов, которые любят читать детективы: |Л п С| = 5; ВпС— множество брюнетов, которые любят читать детективы: \В п С\ = 7. Множество А г\В пС=0. Следовательно, И и В и С\ = \А\ + \В\ + \С\ - И п В\ - \А u q - \В п С\ + \А п В п С\ = = 10 + 9+12-0-5-7+0=19. □ Рассмотрим все перестановки множества чисел {1,2, ...,п}. Необходимо подсчитать количество всех перестановок, в которых хотя бы одно число стоит на своем месте. Решение. Пусть А; означает совокупность тех перестановок, в которых число i стоит на /-м месте. Тогда 5 = \А { и А2 и ... и Ап\ является искомым числом. Множество А\ г\А2г\... пЛ* включает те перестановки, в которых на местах ij9 ..., к стоят соответственно числа ij, ...Д, а на других п-к местах— остальные п-к чисел, которые упорядочены. Следовательно, \А\ г\А2с\... г\Ак\ = (п-&)!, а X \AinAjn...nAk\ = cZ{n-k)\=£. \<i<j<...<k<n k\
64 Часть I. Математические основы Из равенства (1.2.6) следует, что S=\AxnA2n...nAn\ = n{--- + --... + (-l)n-l-\. 112 я| [1! 2! 3! п\) □ Пусть аь яг, ••■» ля — взаимно простые натуральные числа, ар — тоже некоторое натуральное число. Доказать, что количество натуральных чисел, которые не превышают/? и не делятся ни на одно из чисел ац, аг, ..., ап, равно/?-Hi Uv42u ... иЛ„|, гдеЛ, = {#е N| q<p и #делится на а,}. Решение. Очевидно, что |А/| = а, , где [х] — наибольшее целое число, которое не превышает jc. Множество AiC\AjC\... nAk— это множество таких чисел q <р, которые делятся на а„ а,, ..., а*. Поскольку числа а„ о,, ..., ak взаимно простые, то U,-nAy п...пЛ^|= — 1 ' [«/«у... ак Из равенства (1.2.8) имеем, что количество всех чисел, которые не превышают р и делятся хотя бы на одно из чисел аь #2,..., ар, равно \AxvA2v...vAn\ = = 1 lui<n lai J l<i<j<n OiOj i+ I —e— +... + (-ir1 \<i<j<k<n\_aiajak J \_a\^2-an Следовательно, количество чисел, которые не превышают р и не делятся ни на одно из чисел а\9 #2, • • •> я*, равно р-|Л1иЛ2и...иАл| = р- -X 1<;<п а, + I 1<K;</i| Д<я; aiajak + ... + (-!> и-1 fllfl2-«w г s | \<i<j<k<n [ что и необходимо было установить. * Теорема 1.2.11. Пусть \А\ п^2п ... пЛ„|т— число элементов, которые входят в состав ровно m множеств изА\,А2,->Ап. Тогда |Л1пЛ2п...пЛиГ=С« 2 |д.пЛ,2П...пЛ(т|- <|,<12<...<«т<Н |Л,. пД.2П...пЛ,т+1| + ...+ (1.2.9) К ъ\ n...nAin 1<|,<.2<...<|т</1' +(-i)"-",C 2 г„ 1<1*1 <12 <*з <--.<*„ ^Я
Глава 1. Множества, отношения, комбинаторика 65 Доказательство. Пусть a — произвольный элемент, который входит в состав к множеств из заданной совокупности множеств. Для доказательства теоремы, как и в предыдущем случае, достаточно показать, что элемент а учитывается в правой части равенства (1.2.9) только один раз, если к = т, и ни разу, если кФт. Прежде всего отметим, что если к < т, то элемент а не учитывается в (1.2.9) ни разу, а если к = т, то учитывается только раз, поскольку а входит только в одно из множеств вида А п А- n...n A . Рассмотрим случай, когда к > т. При подсчетах по формуле (1.2.9) элемент a учитывается С™ раз в первой сумме \<il<i2<i3<...<im<k С™+ раз — во второй сумме i<i, <t2 <j3 <•-<'m+i ^* и т. д. Ск раз — в сумме I |Д- пД-2П...пА,4|. Остальные суммы не учитывают элемент я, поскольку он входит только в к множеств. Следовательно, элемент а учитывается в (1.2.9): раз. В силу того, что С™Сгп = С^С'/Г,^, находим Ст^т _ г*т /^wi+1 \г*т /^'Н+2 , / л\к-т ^т^к __ тс* -Сш+1С* +Ст+2С* -... + 1,-1; С* Сд - /^т/^к-т /^к-т-Х , ,/ ixfc-m^O ч../^/"/* i\*-w_n -с* (C^_w - c*_w +... + i-i; сЛ_ш j - ск ц -1; - и. Теорема доказана. 1.2.12. Метод производящих функций Метод производящих функций—это один из самых эффективных методов комбинаторного анализа, поскольку обобщает другие методы комбинаторного анализа. Введем понятие продуктивной функции.
66 Часть I. Математические основы Пусть имеем некоторую последовательность au ai, ..., яя» ••• • Формальная сумма оо A(s) = a0+a{s + a2s2 +... + ansn + ...= ^а^" (1.2.10) /i=0 называется производящей функцией последовательности {ап}. Идея метода производящих функций состоит в том, что, для того чтобы найти все члены некоторой последовательности {ап}, пользуются такой процедурой: с помощью рекуррентных соотношений для членов последовательности {ап} вычисляют производящую функцию A(s), а потом, разлагая ее в ряд, находят коэффициенты при sn9 которые и являются ап. Как известно из математического анализа, ряды вида (1.2.10) можно складывать, отнимать и умножать, выполняя соответствующие действия над коэффициентами при одинаковых степенях s. Следовательно, можно говорить и о сумме, разности и произведении производящих функций. Пример 1.2.9 П Пусть ап = с", где с — некоторое действительное число. Тогда Л = 0 1-CS (это сумма бесконечно убывающей геометрической прогрессии, при условии \cs\ < 1). □ Пусть ап = С," (п = 0, 1, 2, ..., т), тогда т ^)=Ес^=(1 + ,г. /2=0 П Пусть ап = /," — число сочетаний из т элементов по п. Раньше было доказано, что /«=/«"'+/«-!. (1-2.11) причем /ю = 1. Тогда /1=0 Умножим (1.2.11) на sn и сложим почленно все полученные равенства. Имеем i/„y=*£/r'*n~l+£/,,:v=*(л„ (*>-!)+a,-. (*)-i, «=1 /i=i и=1
Глава 1. Множества, отношения, комбинаторика 67 т.е. An(s)-l = s(An(s)-l) + A„_,(s)-1, или An(s)-l = - An_x(s). l-s Отсюда находим, что An(s) = —1—Ап_2(з) = ... = ^Щ- (1-s)2 (l-s)n~ Найдем теперь A\(s): /1=0 /1=0 L~S Итак, в результате имеем 1 л"<5,=<1-*>" Разлагая в ряд полученную функцию с помощью формулы бинома Ньютона (как известно из математического анализа, формула бинома Ньютона справедлива как для дробных, так и для отрицательных показателей степени), находим, что /„" = С"г_1+п. < Сверткой двух последовательностей {ап} и {Ьп} называется последовательность {с„}, общий член которой имеет вид: cn=aobn+albn_l+... + akbn_k+... + anb0. (1.2.12) Справедливо такое простое утверждение. Теорема 1.2.12. Производящая функция свертки двух последовательностей равна произведению производящих функций этих последовательностей. Доказательство. Пусть {сп} - свертка последовательностей {ап} и {&„}, а A(s)= f,ansn , B(s)= f,bnsn , C(s)= ^cnsn /i=0 /i=0 /1=0 являются продуктивными функциями последовательностей {ап}> {&„}, {сп} соответственно. Необходимо доказать, что C(s) =A(s)B(s). Перемножая два ряда: A(s) и B(s), находим, что коэффициент при sn в полученном произведении равен a0bn +axbn_x + ... + akbn_k + ... + апЬ$, т.е. равен сп. Следовательно, A(s)B(s) = C(s). Теорема доказана.
68 Часть I. Математические основы Пример 1.2.10 оо Пусть an=an-\+an_2ax+... + axan_2+an-\ и Ms)= Хя^" —производящая л=0 функция для последовательности {а„}, про которую известно, что A(s)= 1. Положим ао = 1, тогда можем записать ап = а0ап-\ + ап-2а\ + - + ala/i-2 + a/i-la0 . И ^ 1. оо оо £ <V" = £(*<Ai-l +«n-2flI + .« + «1ЛЯ_2 + «я-1а0)*Л = /i=l /i=l 2 /i=l оо Поскольку £ aw5w = A(j)-1, получаем такое уравнение: A(s)-l = s(A(s)) . /2 = 1 1 ± Vl - 45 Решая это уравнение, находим его корни: A(s) = При 5 -> 0 ., ч г l-Vl-45 t r l + Vl-45 A(5) = hm = 1,а hm = °° А'->0 25 v-»0 25 Следовательно 2* Найдем теперь коэффициент при s" в разложении функции (1.2.13). Воспользуемся для этого формулой бинома Ньютона для функции lfi ЛГ1 ' "2 -1 . J--*+l (1-4,)2 =1+ %Л2 )\2 1(-1)W =1_ lck2k-±-sk Отсюда получаем ., ч 1-У1-4д 1 St 1 „*-i _ 1 v „+i _J_n где и = k - 1. Следовательно, 1 n+1 1 _ 1 n~2 2n+22n + l~(n + l)
Глава 1. Множества, отношения, комбинаторика 69 1.2.13. Контрольные вопросы П Какая разница между декартовым квадратом некоторого непустого множества Л и множеством всех двухэлементных подмножеств множества Л? П Сколько отношений эквивалентности можно построить на множестве, которое состоит из двух, трех, четырех элементов? Сколько бинарных отношений можно задать на множестве из п элементов? □ Что называется: • перестановкой n-элементного множества? • сочетанием из п элементов по m элементов? □ Сколькими способами можно разместить три книги на книжной полке? □ Сколько существует функций из множества А в множество В, если \А\ = т, а \В\ = nl 1.2.14. Задачи и упражнения 1. Группа студентов насчитывает 25 человек. Из них 15 любят математику, 10 — физику, 8 — не любят ни математику, ни физику. Сколько студентов любят и математику, и физику? 2. На собрании студентов-отличников были как студенты второго курса, так и студенты третьего курса. Все они либо любители прозы, либо любители поэзии. Студентов-юношей было 16, а любителей прозы — 24. Студентов- девушек было ровно столько, сколько юношей любителей прозы. Сколько студентов было на собрании? 3. В группе из 100 студентов английским языком владеют 28 человек, немецким — 30, французским — 42, английским и немецким — 8, английским и французским— 10, немецким и французским— 5, а всеми тремя языками владеют 3 студента. Сколько студентов не знают ни одного из названых языков? 4. На кафедре математики работает семь преподавателей. Сколькими способами можно составить комиссию из трех человек для приема "хвостов"? 5. В шахматном турнире принимали участие 30 человек. Каждые два шахматиста сыграли между собой только один раз. Сколько партий было сыграно в турнире? 6. Сколько существует пятизначных чисел, у которых каждая следующая цифра: • меньше предыдущей; • больше предыдущей.
70 Часть I. Математические основы 7. На плоскости проведено 10 прямых линий так, что никакие две из них не параллельны между собой и никакие три из них не пересекаются в одной точке. Найти: • число точек пересечения этих прямых; • число треугольников, которые образуют эти прямые; • на сколько частей делят плоскость эти прямые. 8. Сколько прямых можно провести через п точек, если никакие три из них не лежат на одной прямой? 9. В корзине находится р белых и q черных мячей. Сколькими способами можно выложить эти мячи в ряд так, чтобы никакие два черных мяча не были рядом? 10. Сколькими способами можно: • упорядочить множество {1,2, ..., 2п} так, чтобы каждое четное число имело четный номер? • разместить 8 тур на шахматной доске так, чтобы они не били одна другую? • разместить 100 книжек на книжной полке (отсюда будет видно, насколько необходимы каталоги в библиотеках)? 11. В соревнованиях по метанию копья принимают участие четыре спортсмена (А, В, С, Д). Сколькими способами их можно разместить в списке выходов в сектор для метания, если спортсмен В не может выходить раньше спортсмена А? 12. Сколько слов из пяти букв можно составить, если X = {a, b, c> d) и буква а встречается в слове не больше двух раз, буква Ъ — не больше одного раза и буква с — не больше трех раз? 13. Пусть Х= {а, Ь, с, d] — алфавит. Слово р = xyz.. mv в алфавите X называется палиндромом, если слово р = vu...zyx равно р. Сколько палиндромов в алфавите X существует среди слов из пяти букв? 14. Сколько разных слов можно составить перестановкой букв в слове "чачача"? 15. Сколько целых положительных решений имеет уравнение JCi +JC2+ ... +ХШ = Л? 16. Вычислить: • (а + Ъ + с)2; • (а + Ъ + с)3.
Глава 1. Множества, отношения, комбинаторика 71 17. Найти коэффициент при: • х5 в разложении (1 + х)7; • х в разложении(1 +х ) . 18. Показать, что сумма Ср +Ср +... + С£~ делится на /?, где/?— простое число. 19. Доказать, что сумма всех полиномиальных коэффициентов равна кп. 20. Доказать малую теорему Ферма, т. е., что ар-а делится на /?, где а — произвольное целое число,/? — простое число. 21. Найти суммы: • Сл° + С^+... + (-1)1ИС; • С° + С2 + С„4+...; 22. Доказать свойства биномиальных коэффициентов.
Глава 2 Основные понятия общей алгебры В этом разделе рассматриваются основные алгебраические структуры, широко применяемые в различных областях науки и техники. К таким понятиям относятся, в первую очередь, понятия универсальной алгебры, гомоморфизма и изоморфизма универсальных алгебр, свободной алгебры (свободные полугруппы, группы, кольца, структуры, булевы алгебры и др.). В конце раздела вводится понятие многоосновной алгебры и понятие подалгебры, гомоморфизма и изоморфизма многоосновных алгебр. 2.1. Универсальные алгебры 2.1.1. Общие сведения Универсальной Q-алгеброй (или просто алгеброй) называется система G(A, £2), состоящая из некоторого непустого множества А (основное множество алгебры или носитель алгебры) и множества определенных на А операций й = |со^,со22,...,со^,...| (сигнатура алгебры)), где к,— арность операции со,, к( е N9 ar(u>i) = £,,/ = 1, ..., и, ... . Операции из множества Q называются основными операциями алгебры. Пусть G = (A,Q)— произвольная алгебра, cog Q, аг(со) = и и A' <zA. Подмножество А' называется замкнутым относительно операции со, если для любых а\, ..., ап из А' истинно со(аь ..., ап) е А'. Система (A', Q) называется подалгеброй алгебры (A, Q), если A' (ZA и А' замкнуто относительно любой основной операции алгебры G = (A, Q). Из определения подалгебры вытекает следующее простое утверждение.
Глава 2. Основные понятия общей алгебры 73 Теорема 2.1.1. Пересечение произвольной совокупности подалгебр универсальной алгебры G = (A, Q), если оно непусто, будет подалгеброй этой алгебры. Доказательство. Пусть cog Q, аг(со) = и и а\, а^ а„ е G\ n Gi r\ ... n Gn n ... . Тогда в силу замкнутости носителей подалгебр относительно операций из Q имеем со(аь .... а„) е G,-, / = 1, 2, ..., и, ... . Итак, со(аь ..., ап) е G\ n G2 п ... n G„ n ..., т. е. пересечение тоже замкнуто относительно операции со из Q. Следствие 2.1.1. Если сигнатура Q некоторой алгебры G включает нульар- ные операции, то пересечение любой системы подалгебр алгебры G непусто. Действительно, если со е Q и аг(ш) = 0» то элемент со е Л и, следовательно, должен принадлежать всем носителям подалгебр алгебры G. Но тогда пересечение этих подалгебр включает, по крайней мере, элемент со. Из теоремы 2.1.1 вытекает, что для произвольного подмножества DczA алгебры G существует однозначно определенная подалгебра {D}, минимальная среди подалгебр, включающих множество D. Это будет пересечение всех подалгебр из G, включающих D. Если {D} = G, то D называется системой образующих для G. Алгебра G = {D} называется конечно-порожденной, если множество D конечно. Пример 2.1.1. Конечно-порожденные алгебры □ Множество натуральных чисел N порождается множеством D={0, 1} с помощью операции сложения. □ Множество чисел N+ порождается, очевидно, одним элементом D = {1} с помощью операции сложения. □ Множество целых чисел Z порождается множеством D- {-1, 1} с помощью операции сложения. * 2.1.2. Отношение когруэнтности Пусть R — m-арное отношение, заданное на алгебре G = (A, Q). Отношение R стабильно относительно м-арной операции со, если для любых а,ь а,и •••, aim е А (/ = 1, 2, ..., п\ таких, что (а,ь аа, .., сцт) е R, имеет место (со(ац, а2ь ...,tf„i), ...,co(aim, яг™, ...,я„т))е R- Отношение R стабильно на множестве А, если оно стабильно относительно каждой операции из Q. Если же R — бинарное отношение, заданное на множестве А, то оно называется стабильным относительно определенной на этом
74 Часть I. Математические основы множестве и-арной операции со, если для любых элементов аь я/, .,., я„, ап' множества Л, связанных соотношениями ах Ra\\ а2 R а2\ оп R ап\ имеет место соотношение со(аь а2, ..., ап) R со(я/, а2, ..., а„'). Из этих определений вытекает, что тождественно истинные и тождественно ложные отношения на множестве А стабильны относительно любой основной операции, определенной на множестве^. Отношение эквивалентности /?, заданное на множестве А, называется конгруэнтностью, если R стабильно на^. В теоремах 1.1.3, 1.1.4 рассматривались некоторые операции над отношениями эквивалентности. Посмотрим, какие из этих операций сохраняются для конгруэнтностей. Теорема 2.1.2. Если R, Rj —конгруэнтности на множестве А, то: 1. R~ —конгруэнтность на множестве А; 2. R n Rj —конгруэнтность на множестве А; 3. /?*/?; —конгруэнтность на множестве А 4=> R * Rj = Ri * R. Доказательство. 1. Если R — конгруэнтность, то в силу теоремы 1.1.5 Л" = Л, т. е. /Г —конгруэнтность. 2. Из теоремы 1.1.5 следует, что RnR{— отношение эквивалентности. Пусть со е Q. (аг(со) = т) и (аи в\) s RnRu ..., (ат, amf) e RnRx. Тогда из условия теоремы имеем (со(аь ..., am),co(a/, ...,am'))e /?и(со(аь ..., ат)9ю(<*\'*—><**))£ Ль А отсюда следует, что (со(аь ..., ат), со(я/, ..., ат')) е R n R\. 3. Из того, что отношения R и R\ можно менять местами, следует, что /?*/?i — отношения эквивалентности в силу теоремы 1.1.5. Пусть со е Q, аг(со) = т и ar(co) = m и (ah a{), ..., {ат, amf) e R * R\. Тогда в соответствии с определением операции умножения отношений в множестве А существуют элементы Ьи ..-,Ьт такие, что (aif bt) еЯи (bit а{) е /?ь i = 1, 2, ..., т. Так как R и R\— конгруэнции, имеем включения (co(tfi, ..., ат),
Глава 2. Основные понятия общей алгебры 75 o)(fci bm)) e R и (со(Ьь ..., bm), (0(a\\ ..., am')) е R{. Но отсюда следует, что(со(аь ...,am), co(ai', ...,аш'))е /?*/?ь Теорема доказана. 2.1.3. Гомоморфизмы универсальных алгебр Универсальные алгебры G = (A, Q) и б = (5, £У) называются алгебрами одного типа, если между элементами сигнатур йий' можно установить такое взаимно однозначное соответствие, при котором любая операция со из Q и соответствующая ей операция со' из Q.' будут иметь одну и ту же арность. Следовательно, можно считать, что в алгебрах одного типа задана одна и та же сигнатура операций. Алгебра G = (A, Q) называется гомоморфной алгебре Q = (В, Q) того же типа, что и алгебра G, если существует отображение Л: A —> В, такое, что для всех элементов аь ..., ап из А и любой л-арной операции со из Q справедливо равенство Л(со(аь ..., a„) = co(A(ai), ..., А(ал)). (2.1.1) При этом отображение h называется гомоморфизмом. Если h — взаимно однозначное отображение алгебры G на алгебру Q, то оно называется изоморфизмом, а алгебры G и Q — изоморфными (G ~ Q). Гомоморфизм алгебры G на себя (то есть h: G —> G) называется эпиморфизмом, а если h — изоморфизм G на G, то он называется автоморфизмом. Если алгебра G изоморфна некоторой подалгебре алгебры G', то говорят, что алгебра G изоморфно вкладывается в алгебру G'. Обозначим h(G) образ алгебры G при гомоморфизме h алгебры G в алгебру G\ Непосредственно из определения гомоморфизма алгебр следуют такие простые утверждения. Утверждение 2.1.1. Если h — гомоморфизм алгебры G в алгебру G'и h(G) — образ алгебры G при этом гомоморфизме, то h(G) — подалгебра алгебры G'. Пусть G = (А, £2), а\, аг, ..., ап е А и со е О. — некоторая операция арности п. Покажем прежде всего замкнутость множества h(G) относительно основных операций алгебры G'. Поскольку со(аь аг, ..., ап) е G и h — гомоморфизм, то /*(со(я,, ..., ап)) = co(A(ai), ..., h(an)) e h(G\ так как h(G) включает все образы элементов из G. В силу произвольного выбора операции со гомоморфный образ h(G) алгебры G является подалгеброй алгебры G'.
76 Часть I. Математические основы Рассмотрим конкретный случай, когда G — алгебра, в которой выполняются такие тождества: □ a + b = b + a; □ (a + b) + с = a + (b + с); □ a + 0 = a\ □ a + (-a) = 0. Пусть h: G —» G' — гомоморфизм, тогда имеем: □ А(д + b) = A(fc + а) = А(а) + h(b) = А(£) + А(а); □ А((а + Ь) + с) = А(а + (Ь + с)) = (А(а) + А(Ь)) + А(с) = А(а) + (А(Ь) + А(с)); □ h(a + 0) = А(а) + А(0) = А(а); □ А(д + (-а)) = А(а) + А(-в) = А(0) = 0', где 0' — нулевой элемент алгебры h(G). (У действительно будет нулевым элементом алгебры h(G) в силу того, что равенство h(a) + Л(0) = h(a) + (У = h(a) имеет место для любого а из G, и если а пробегает все элементы из G, то А(а) будет пробегать все элементы из h(G) и, значит, 0' будет нулевым элементом алгебры h(G). Следовательно, в алгебре, представляющей собой гомоморфный образ алгебры G, тоже выполняются все законы в алгебры G. Утверждение 2.1.2. Произведение гомоморфизмов алгебр есть гомоморфизм. Доказательство предлагается выполнить читателю (см. упр. 1 в конце главы). Существует некоторый общий метод обзора всех гомоморфных образов универсальных алгебр. Пусть G = (А, £1) — некоторая универсальная алгебра, R — конгруэнция на G и А\9 А2, ..., Ап— классы разбиения множества А по отношению Л. В силу того, что R— конгруэнция, класс В элемента со(яь •••> оп)9 где а, е А, со е Q, аг(со) = и, определяется однозначно и не зависит от выбора элементов а\, аг, ..., ап в классах Аи Аг, ..., Ап. Это предоставляет возможность определить операцию со на фактор-множестве G / Л, положив <й(А\9 ..., Ап) = 5. Поскольку сказанное имеет место для произвольной операции со из Q, то G / R становится универсальной алгеброй той же сигнатуры, что и алгебра G. Эта алгебра называется фактор-алгеброй алгебры G по конгруэнции R. Так как алгебры G и G / R однотипные, то можно говорить о гомоморфизме h алгебры G на G / /?, при котором произвольному элементу а е А ставится в соответствие класс эквивалентности, включающий этот элемент. Покажем, что такое отображение h алгебры G на алгебру GIR является гомоморфизмом.
Глава 2. Основные понятия общей алгебры 77 Пусть (аь а2, ..., an) e G, сое Q, аг(со) = п. Тогда А(со(аь а2, ..., а„)) = (D(/i(ai), /1(^2), ..., А(а„)) по определению операции со на G//?, т. е. h — гомоморфизм, который называется натуральным гомоморфизмом. Теорема 2.13 (о гомоморфизмах). Если/—гомоморфизм алгебры G на алгебру G' то на алгебре G существует такая конгруэнция R, что алгебра G' изоморфна фактор-алгебре G/ R, и если g— этот изоморфизм, то отображение/^ g совпадает с натуральным гомоморфизмом h алгебры GuaG IR. Доказательство. Определим отношение R на классах таким образом: а, Ъъ. R «=>J{a) =ДЬ). Из теоремы 1.1.5 следует, что R— эквивалентность, а отображение/* g взаимно однозначное. Покажем, что R — конгруэнтность, а/* S — изоморфизм. Пусть Да/) = flbi) для некоторых а,, Ъхе G и со е £2, аг(со) = п. Тогда Дсо(аь а2, ..., ап)) = сХДа^Да,), ...,Да„)) = о^^ДЫ ...,ДЬ„)) = =Дш(Ь,,Ь2, ...,Ь„)). то есть R — конгруэнция и фактор-алгебра GIR существует. Пусть а{ — произвольные элементы из G'. Задавая g{a{) = А» i = 1, 2, ..., и, и выбирая элементы а, из А( такие, что Да,) = а/, получаем Дсо(аь ..., а„)) = co(/(ai), ...,Да„)) = co(ai', ..., аД Поскольку o(ai, ...,а„)е со04ь ...,Л„), то g(w(ai', ...,а„') = со(Ль ...,Л„) = co(g(ai'), ...,g(a„')), что и требовалось доказать. Пример 2.1.2 Пусть G = (D+, Q.)— алгебра положительных действительных чисел, т.е. D+ = {jc G D I x > 0}, a Q включает бинарную операцию умножения, унарную операцию взятия обратного элемента и нульарную операцию, фиксирующую единичный элемент. Алгебра G' - (D, Q'), где D— множество всех действительных чисел, а Of включает бинарную операцию сложения, унарный минус и нульарную операцию 0. Отображение/= lg— десятичный логарифм— есть изоморфизм алгебры G на G'. Действительно, □ а) lg (a * а) = lg a + lg a'; □ 6)lg(l/a) = lg(l)-lg(a) = 0-lga = -lga; □ B)lgl = lg(a*(l/a)) = lga-lga = 0. Таким образом, операции при этом отображении сохраняются в соответствии с определением изоморфизма.
78 Часть I. Математические основы Покажем теперь, что это отображение взаимно однозначное. Пусть а Ф а\ но lg a = lg а. Тогда lg a - lg a = lg (а I а) = 0 и, следовательно, а I а = 1 и а = а\ что противоречит нашему допущению. Обратное утверждение доказывается аналогично. Итак, в силу а)-в) и утверждения, что отображение взаимно однозначное, получаем, что отображение/= lg — изоморфизм. ^ 2.1.4. Язык (алгебра) термов Для задания функций и операций, а также для изучения их свойств используют специальный формальный язык —язык термов. Вообще для определения некоторого формального языка необходимо задать его алфавит и правила, по которым строятся слова из символов этого алфавита. Произвольная совокупность попарно разных символов Х= {хи *2, • •••> хт ...} называется алфавитом. Символы алфавита часто еще называют буквами. Простейший пример языка — это язык слов в алфавите X. Конечная последовательность р = х,\ ... х,к букв составляет слово в алфавите X, если jc/, e X, j = 1, 2, ..., к. При этом буквы х# называются буквами, составляющими слово р, а их число — длиной 1{р) слова р. Кроме слов, длина которых выражается целым положительным числом, рассматривается слово нулевой длины, которое по определению не имеет ни одного символа, и называется пустым словом. Для обозначения этого слова вводится специальный символ е е X. Отметим, что если /?, q — некоторые слова в алфавите X, т. е. последовательности jc,i ... Xik и Xj\ ... Xji соответственно, то последовательность pq =Xi\...XikXj\...Xji, полученная приписыванием слова q непосредственно после последнего символа слова р, тоже будет, очевидно, словом в алфавите X. Это следует непосредственно из определения слова. Следовательно, такое соединение слов в алфавите X можно рассматривать как операцию на множестве слов алфавита X. Эта операция называется конкатенацией или произведением слов. Условимся обозначать F{X) множество всех слов в алфавите X, включая и пустое слово. Множество F(X) будем называть языком слов. Язык термов определяется с помощью индукции таким образом. Алфавит языка термов состоит из символов, разбитых на три группы: Г0, F и {(,)}. Символы из 7о называются предметными. Такими символами служат буквы а, Ь, х,у, ... или те же буквы с индексами. Символы из F называются функциональными. Это буквы с верхними и, возможно, нижними индексами: /23, g2'/55' ••• Верхний индекс п (п> 1) указывает (как и раньше) арность
Глава 2. Основные понятия общей алгебры 79 функционального символа. Если его нет, то функциональный символ предполагается унарным. Символы третьей группы — это левая, правая круглые скобки и запятая. Термами называются слова, построенные по таким правилам: 1. Все символы из Т—термы. 2. Если tu • •., tn — термы, то слово вида/л(^, ..., t„) — терм (/" е F, п > 1) 3. Термами являются те и только те слова, о которых идет речь в пп. 1, 2. Множество всех термов в алфавите X сигнатуры Q обозначается Г(£2, X). Если t = co(fi, ..., tn) e T(Q, X), то термы t\, .-..tn называются непосредственными подтермами терма t. Транзитивное замыкание отношения непосредственный подтерм называется отношением подтерм терма. Перейдем теперь к определению свободной алгебры заданного класса алгебр. Множество термов T(Q, X) можно рассматривать как универсальную £2-алгебру, если определиться с операциями нулевой арности, поскольку при определении T(Q, X) предполагалось, что аг(со) > 1 для произвольной операции wgQ. Пусть Х= {х\, дс2, ..., хп, ...} — некоторый алфавит, a Q — множество операций. Представим множество О, в виде Q = Q' u Q0, где Qo означает множество нульарных операций, a Q' = Q \ Qo. Обозначим T(Q', X) множество термов, в котором 7о = X u Qo, a F = Q'. Теперь Г(£У, X) можно рассматривать как универсальную Q'-алгебру с системой операций Q'. В дальнейшем, чтобы не усложнять изложение и не вводить лишних обозначений, алгебру Г(£У, X) будем обозначать, как и раньше, T(Q, X), имея в виду описанный переход, и называть ее алгеброй термов. Пусть имеем произвольную алгебру G = {A, Q) (алгебра G может совпадать с r(Q, X)) и алгебру 7(Q, X). Если Qo * 0, то пусть a(f) означает элемент из А, который соответствует нульарной операции/из Qo. Рассмотрим отображение h: То —»А, такое, что h(f) = a(f) для/g Qo. Отображение h можно продлить на всю алгебру T(Q, X), если для р\, рг, ..., рп £ T(Q, X) и fn e Q (п > 1) положить /г(Дрь ...,рп)) =Л/г(рО, ..., h(pn)). Отображение h называется интерпретацией T(Q, X) на G. Говорят, что в алгебре G выполняется тождественное соотношение (или просто тождество) р\ =/?2, если h(p\) = h(pi) в G при любой интерпретации h. Если дано множество тождественных соотношений Eq, то совокупность алгебр сигнатуры Q, в которых выполняются все тождественные соотношения из Eq, составляют класс алгебр, обозначаемый K(Q, Eq). Соотношения из множества Eq называются тождественными или тождествами.
80 Часть I. Математические основы Пустьрх =р2£ Eq,p, q е T(Q,,X) up получено из q в результате подстановки рх вместо некоторого вхождения термарг в терм q. В этом случае говорят, что терм р непосредственно выводится из терма q с помощью тождественного соотношения рх =р2 из Eq. Транзитивное замыкание отношения непосредственного вывода называется просто выводом. Термы q\ и q2 называются эквивалентными относительно Eq, если один из них выводится из другого (р\ Req qi). Отношение Req будет, очевидно, эквивалентностью и даже, как легко проверить, конгруэнтностью. Пусть T(Q, X, Eq) означает фактор-алгебру T(Q, X) I Req. Алгебра T(Q, X, Eq) называется свободной алгеброй класса K(Q, Eq), а множество X — ее системой свободных образующих (базисом). Из определения T(Q, X9 Eq) следует, что T(Q, X, Eq) E K(Q, Eq). Важность понятия свободной алгебры следует из такой теоремы. Теорема 2.1.4. Каждая алгебра G из класса K(Q, Eq) — гомоморфный образ свободной алгебры T(Q, X, Eq) этого класса [41, 42]. Алгебра Г(£2, X, Eq) называется унаследовано свободной, если любая ее подалгебра — свободная алгебра. 2.1.5. Производные операции и конечные алгебры Кроме основных операций алгебры, часто рассматриваются производные операции, число которых может быть бесконечным. Пусть со( хи ..., х„) е ДО, X, Eq), ar(co) > 1 и х\9 ..., хп е X— свободные образующие. Заменим к (О < к < п) из свободных образующих, скажем *„_* + ь -., хп, некоторыми фиксированными элементами а\, аг, ..., ак из T(Q,X, Eq). Выражение со(хь ..., *„_*, а\, ..., ак), которое при этом будет получено, определяет на ДО, X, Eq) (п-£)-арную операцию: системе элементов Ъ\, ..., bn_ke Д£2, X, Eq) эта операция сопоставляет однозначно определенный элемент со(Ьь ..., bn_k, а\, ..., ак). Все операции, которые могут быть получены в Д£2, X, Eq) таким путем, называются производными операциями алгебры Д£2, X, Eq). Производная операция называется главной, если к = 0, т. е. когда в терме co(xi, ..., хп) не выполняются никакие замены свободных образующих. Отметим, что если сигнатура О. включает производные операции, то такое понятие, как подалгебра данной алгебры теряет смысл, поскольку подалгебра не обязательно должна включать элементы а\, ..., ак, принимающие участие в определении производной операции. Аналогичное замечание касается и понятия гомоморфизма. Все эти сложности исчезают, если считать, что каждая операция сигнатуры Q — главная.
Глава 2. Основные понятия общей алгебры 81 В дальнейшем условимся, что сигнатура О. включает только главные операции и не включает производных операций. Оканчивая этот подраздел, кратко остановимся на конечных алгебрах. Алгебра называется конечной, если ее носитель имеет конечное число элементов. Если алгебра G конечная и состоит из п элементов, то ее называют алгеброй порядка w. Конечную алгебру G в некоторых случаях удобно задавать в виде прямоугольных таблиц, которые называются таблицами Кели. Каждая такая таблица соответствует некоторой операции со из Q и строится по таким правилам. Если со — й-арная операция из Q и со(яь #2, • •., я*) = Ь, то в таблице этому выражению соответствует строка со(яь аг, ..., #ь Ь). Другими словами, каждой операции со алгебры G соответствует строка элементов яь #2, ..., #ь Ь, такая, ЧТОС0(ЯьЯ2, ...,Я*) = Ь. со 1 2 Я 1 an а21 аФ 2 а12 а22 а* к а-цг а2к aqk fr+1 bi ь2 ь. где <? < п. Если же со — бинарная операция, то эта таблица задается квадратной таблицей со «1 а2 а„ ai an a2i a„i a2 a12 a22 an2 a„ а1л а2л алл в которой на пересечении /-ой строки и j-ro столбца стоит значение со(я„ о,). Когда операция унарна, то это будет просто строка, состоящая из п элементов, /-й элемент которого равен значению со(я/). Заметим, что такого рода таблицы можно задавать более привычными числовыми таблицами, используя отображение Л(я,) = /. Примеры соответствующих представлений конечных алгебр будут рассматриваться более детально в дальнейших разделах, а теперь перейдем к рассмотрению основных хорошо известных алгебр, которые играют важную роль как в теории, так и в практике.
82 Часть I. Математические основы 2.2. Свободные аглебры и их основные свойства 2.2.1. Абсолютно свободные алгебры Алгебра T(Q, X, Eq) называется абсолютно свободной, когда T(Q, X9 Eq) = Цй, X), т. е. тогда и только тогда, когда Eq = 0. Из определения алгебры термов Г(й, X) следует, что множество X служит для этой алгебры системой образующих, и что алгебры термов над равномощны- ми алфавитами изоморфны. Поскольку в T(Q, X) не выполняется ни одно нетривиальное соотношение, то всякий элемент из Г(£2, X) единственным способом представляется через элементы алфавита X и символы нульарных операций из Q. Смысл термина абсолютно свободная для алгебры Г(й, X) в классе всех алгебр сигнатуры Q следует из такого утверждения. Утверждение 2.2.1. Всякое отображение f множества образующих X алгебры термов Т(£1, X) в произвольную алгебру G того же типа, что и алгебра Т(£1, X), можно продлить единственным способом до гомоморфизма h алгебры Т(£1, X) в алгебру G. Действительно, положим h(x) =f(x) для всех х из X и Л(со) = со для всех нуль- арных операций со из Q. Если для со е Q, аг(со) = п > 1, образы термов гь t2, ..., tn уже определены, то, положив Л(со(гь г2, ..., tn)) = co(/i(fi), h(t2), ..., h(tn)), получим, что отображение h — гомоморфизм. Единственность такого отображения h следует из единственности представления термов в алгебре Г(£2, X). 2.2.2. Свободный группоид Абсолютно свободная алгебра T(Q, X) называется свободным группоидом, если Q включает единственную бинарную операцию, которая называется умножением слов в алфавите X. Словом в этой алгебре будет всякая конечная упорядоченная система элементов из X jc,i ха ••• xin (п > 1), где xi} (j' = 1, 2, ..., п) не обязательно все разные, причем в этой алгебре задано распределение скобок, которые определяют порядок выполнения операции умножения. При этом каждый символ х^ е X предполагается взятым в скобки, а умножение двух слов означает, что эти слова берутся в скобки и пишутся одно за другим. Например, еслир = (хп)(ха\ q = (хп)((х12)(хп)Х тоpq = ((хп)(ха))((хп)((ха)(хп))).
Глава 2. Основные понятия общей алгебры 83 2.2.3. Свободная полугруппа Если О. включает единственную бинарную операцию — умножение, a Eq — единственное тождественное соотношение— ассоциативность умножения, то T(Q, X, Eq) называется свободной полугруппой. Если существует элемент е е T(Q, X, Eq) и Eq включает тождества ре-ер = р для всех р е T(£l, X, Eq), то Г(£2, X, Eq) называется свободной полугруппой с единицей, или свободным моноидом. Пример 2.2.1. Полугруппы □ Примером свободной полугруппы 7(Q, X) может служить введенный ранее язык F(X) — язык слов в алфавите X. Пусть р, q E T(Q, X). Роль операции умножения в этой полугруппе играет операция конкатенации, которая, как легко понять, удовлетворяет закону ассоциативности. Если пустое слово е принадлежит полугруппе T(Q, X), то эта полугруппа будет иметь единицу. Подтерм р терма q называется подсловом слова q. Если р — подслово слова q, то q можно представить в виде произведения q=p'pp", (2.2.1) где р\ р" — подходящие (возможно пустые) слова из Т(£1, X). Если в разложении (2.2.1) слово р наименьшей возможной длины, то говорят о первом вхождении слова р в слово q. Аналогично можно говорить о втором, третьем и т.д. вхождении р в q. Пусть разложение (2.2.1) соответствует к-щ вхождениюр в q. Тогда слово q =p'q'p" называется словом, полученным в результате постановки слова q вместо k-vo вхождения/? в q. Утверждение 2.2.2. Множество слов языка F(X) над конечным алфавитом X есть счетное множество. Доказательство следует из того, что этот язык можно представить в виде объединения F(X) = {e} uLi uL2u ... uL„u ..., где Lk — множество всех элементов из F(X), длина которых равна к, к = 1, 2, ... . Теорема 1.1.18 подтверждает справедливость данного утверждения. Утверждение 2.2.3. Множество всех языков над конечным алфавитом X есть несчетное множество [19]. Действительно, множество всех языков в алфавите ЛГесть булеан множества X, и справедливость данного утверждения вытекает теперь из теоремы о булеане.
84 Часть I. Математические основы О Полугруппой является совокупность всех бинарных отношений, заданных на некотором множестве А, относительно операции умножения отношений, поскольку эта операция ассоциативна (теорема 1.1.3). Это будет частичная полугруппа с единицей. Роль единицы играет отношение тождественности iA. Совокупность всех отношений эквивалентности, заданных на множестве А, не будет полугруппой, поскольку эта совокупность в общем случае не замкнута относительно операции умножения (теорема 1.1.5). По этой причине и совокупность всех конгруэнтностей на множестве А не будет полугруппой. □ Преобразованием множества Л называется всякое отображение /множества А в себя, т. е. /: А—> А. Очевидно, что когда/ и g— преобразования множества А, то /* g— также преобразование множества (см. упражнения), т. е. множество всех преобразований множества А замкнуто относительно операции умножения преобразований. Как было показано выше, операция умножения отображений ассоциативна, и, значит, совокупность всех преобразований множества А составляет полугруппу, которая называется симметричной полугруппой на множестве А. Важность этой полугруппы вытекает из следующей теоремы. Теорема 2.2.1. Всякая полугруппа G изоморфно вкладывается в симметричную полугруппу на некотором множестве А [42]. Если множество А = {1, 2, ..., п) конечно, то симметричная полугруппа на множестве Л тоже конечна. В этом случае всякое преобразование/задается таблицей |1 2 ... л I Н \а{ а2 ... ап\ где каждый столбец означает ДО = а„ а, е А. П Пусть G — полугруппа и а — произвольный ее элемент. Ассоциативность умножения позволяет обычным способом определить положительные степени ап элемента а, п= 1, 2, ... , причем akal = a + , (а) =аИ. Отсюда видно, что положительные степени элемента а составляют подполугруппу полугруппы G. Эта подполугруппа коммутативна и называется циклической подполугруппой элемента а. * 2.2.4. Свободная коммутативная полугруппа Свободная полугруппа Т(£1, X, Eq) называется свободной коммутативной полугруппой, если множество Eq, кроме ассоциативности, включает тождественное соотношение коммутативности умножения слов.
Глава 2. Основные понятия общей алгебры 85 Тождественные соотношения позволяют записать любое слово из T(£l, X, Eq) в виде я^1*22...*£*, где х}е X, и;— целые неотрицательные числа. Под выражением хп понимают слово хх.. .х длины п при п > О, а при п = 0 хп = е. Примером свободной коммутативной полугруппы относительно операции сложения может служить множество N*9 которое, как было сказано выше, порождается единственной свободной образующей— 1, т. е. Х= {1}. Операция сложения на ЛЛ ассоциативно-коммутативна. 2.2.5. Свободные группы Пусть Q включает бинарную операцию конкатенации слов, унарную операцию взятия обратного элемента и нульарную операцию, фиксирующую единичный элемент. Наличие операции взятия обратного элемента позволяет однозначно сопоставить множеству X множество элементов Х~\ Символы х из X и х~х из Х~х называются взаимно обратными. Слово в алфавите X =АгиХ1 называется несокращаемым, если оно не имеет ни одной пары взаимно обратных символов, стоящих рядом. Произвольное слово можно преобразовать в несокращаемое последовательным вычеркиванием пар взаимно обратных символов, стоящих в слове рядом. Очевидно, что пустое слово е несокращаемо. Такое преобразование слов называется их приведением. Если Eq включает соотношение ассоциативности, соотношение сокращения (х • х"х = х~х • х = е) и соотношения, связанные с единицей (х • е = е • х = х), то Г(й, X, Eq) называется свободной группой. Единицей группы T(Q, X, Eq) является пустое слово е. Тождественные соотношения позволяют записать любое слово из T(Q, X, Eq) в виде несокращаемого слова х"хх"2 ...х"к, где xt из X , Hj— целое число, xt, не обязательно все разные,./ = 1, ... , к, а *" = лх..дг,еслип>0, е,еслип = 0, дс~1дс~1...д:~1,если п<0. Пусть G — группа, Н— некоторая ее подгруппа и а — произвольный элемент из G. Множество аН = {ah\he H} называется левым смежным классом группы G по подгруппе Я, заданным элементом а. Ясно, что а е аН, поскольку е е Я, и если Ъ е аН, то ЬН = аН. Действительно, be аН означает, что b = ah, где he H. Но тогда для любых Ль h2e H имеем bh\ = (ah)h\ = a(hh\) е аН, т. е. ЬН с аН. С другой стороны, ah2 = (bh~l)h2 = b(h~lh2) е ЬН, т. е. аН с ЬН. Значит, аН = ЬН.
86 Часть I. Математические основы Отсюда следует, что левые смежные классы //, а\Н, агН, ..., апН, ...— это классы разбиения группы G. В силу теоремы 1.1.4 подгруппа Н задает на G отношение эквивалентности R: aR b<=> aH = ЬН. Задание группы G в виде объединения классов Н u a\Hu ciiHkj ci^Hkj ... и апН и... называется левосторонним разложением группы G по подгруппе Н. Аналогично строится и правостороннее разложение группы G по подгруппе Я. Правостороннее и левостороннее разложения группы состоят из одного и того же числа классов. В этом легко убедиться, задавая отображения f:G—>G так, что Дл) = а~1. Если же число смежных классов в разложении группы G по подгруппе Н конечно, то подгруппа Н называется подгруппой конечного индекса, а число классов — индексом подгруппы Н в группе G. Подгруппа Н называется нормальным делителем или инвариантной подгруппой группы G, если левостороннее разложение G по Н совпадает с правосторонним разложением G по Н. Другими словами, для всякого ае G имеет место равенство аН = На. Очевидно, что нормальными делителями всякой группы будут единичная подгруппа, состоящая лишь из единицы группы, и сама группа. Эти нормальные делители называются тривиальными. Пусть G и G'— группы, е и е — их единичные элементы соответственно, а Л— гомоморфизм группы G в групу G. Множество {ае G\h{a) = e) называется ядром гомоморфизма h и обозначается символом ker(/i). Нетрудно доказать, что кег(Л) — нормальный делитель группы G (см. упр. 15). Если группа конечна, то все ее подгруппы тоже будут конечными, а число ее элементов будет называться порядком группы. Пусть G— конечная группа порядка пи Н — ее подгруппа порядка к. Тогда при разложении G по Н всякий смежный класс состоит в точности из к элементов и, значит, п = kj. Отсюда следует следующая теорема. Теорема Лагранжа. Порядок и индекс любой подгруппы конечной группы является делителем порядка группы. Если G — группа и а е G, то положим а0 = е и а~п = (а~ )п, а положительные степени элемента а мы определили выше для циклической полугруппы элемента а. Совокупность элементов вида ап, где wgZ, называется циклической подгруппой группы G. Степени элемента а не обязательно должны быть разными. Элемент а группы G называется элементом конечного порядка, если существуют такие целые числа к и /, что ак = а\ т. е. ак~1 = е. Наименьший показатель среди всех таких показателей элемента а называется порядком элемента а. Если такие числа к и / не существуют, то а имеет бесконечный порядок.
Глава 2. Основные понятия общей алгебры 87 Группа, все элементы которой имеют бесконечный порядок, называется группой без кручения. Группа, все элементы которой имеют конечные порядки (не обязательно ограниченные в совокупности), называется периодической группой. Если a— элемент конечного порядка, то a = е, а, я", ..., ап~ будут разными элементами группы. Если дано ак, где к > и, то k = qn + г, 0 < г < п, и aqn + r = (an)q • а = а . Значит, порядок элемента конечного порядка совпадает с порядком его циклической группы. Следствие 1 теоремы Лагранжа. Порядок любого элемента конечной группы является делителем порядка группы. Следствие 2 теоремы Лагранжа. Всякая конечная группа, порядок которой — простое число, будет циклической. Действительно, в силу простоты порядка группы она должна совпадать с циклической подгруппой, порожденной любым ее элементом, отличным от единицы. Группа называется простой, если она не имеет нетривиальных нормальных делителей. Если группа Н— нормальный делитель группы G, то множество смежных классов составляет группу. Действительно, если Я, а\Н, агН, ... — разбиение группы G, и для любого элемента а из G имеют место равенства аН = На и Н * Н = //, то нетрудно доказать, что: □ (аН*ЬН)*сН = аН*(ЬН*сН)\ □ аН * Н = Н * аН = аН = На, т. е. Н играет роль единицы; □ аН*(а~1)Н = (аН*а~1)*Н = Н*Н = Н\ □ аН*ЬН = (На) * (ЬН) = (H(ab)) * Н = аЪН * Н = НаЪ. Другими словами, всякий нормальный делитель Н группы G задает некоторое отношение конгруэнтности R на G. Фактор-группа по этому отношению конгруэнтности обозначается GIH и называется фактор-группой группы G по нормальному делителю Н. Если группа G конечна и Я— ее нормальный делитель, то получаем такое следствие. Следствие 3 теоремы Лагранжа. Порядок группы GIH равняется индексу группы Н в группе G и является делителем порядка группы G. Пример 2.2.2 Рассмотрим пример некоммутативной группы, которая играет важную роль в теории групп, — группу подстановок некоторого конечного множества 4 Зак. 3427
88 Часть I. Математические основы М={1, 2, ..., п). Выше было введено понятие преобразования множества (см. примеры полугрупп). Отдельным случаем преобразования является подстановка, т. е. взаимно однозначное отображение множества М в себя. Мы уже знаем, что произведение отображений — это их последовательное выполнение, и что эта операция ассоциативна. Совокупность всех подстановок множества М составляет группу. Действительно, роль единицы в этой группе играет тождественная подстановка, оставляющая на месте каждый элемент из М С другой стороны, если элемент а ' переходит в элемент /(а), то f~\f(a)) = а и f~l также будет подстановкой в силу взаимной однозначности/, а/"1 будет выполнять роль обратного элемента для / Следовательно, все подстановки множества М составляют группу, которая называется симметричной группой на множестве М. Если множество М конечно и состоит из п элементов, то симметричная группа на М9 которая называется симметричной группой п-й степени, будет конечной и иметь порядок л! (см. упр. 14). Подстановки часто задаются в виде таблиц соответствий. Например, если Л/= {1, 2, 3, 4, 5, 6}, то подстановка/множества М, равная {4, 3, 1,5, 2, 6}, будет иметь вид 12 3 4 5 6 4 3 15 2 6 Умножение подстановок выполняется таким образом: 12 3 4 5 6 I 4 3 15 2 6 12 3 4 5 6 I 6 3 5 2 4 1 12 3 4 5 6 I 2 5 6 4 3 1 Пусть имеем три подстановки: /ь/2,/3, заданные такими таблицами: /i = 2 3 Тогда (/г/2)-/з = 2 3 3 4 5 2 /з = 3 4 5 6 6 4 15 5 6 6 1 • Л = 1 2 3 5 12 3 4 5 6 6 3 5 1 4 2 /г(/2-/з) = 2 3 3 6 4 4
Глава 2. Основные понятия общей алгебры Рассмотрим пример задания группы G всех подстановок множества М = {1, 2, 3} с помощью таблицы операций. В этом случае группа G — это конечная алгебра порядка 6 и ее элементами являются подстановки: /.= Л = 12 3 12 3 12 3 3 2 1 "Н г5 = 1 2 3 3 1 2 1 1 2 3 1 2 1 3 >/з = L= 1 2 3 1 2 3 1 1 1 1 2 3 1 1 3 2 Таблицу умножения этой алгебры, где h(fj) = i, запишем в виде 1 2 3 4 5 |б 1 1 2 3 4 5 6 2 2 3 1 5 6 4 3 3 1 2 6 4 5 4 4 6 5 1 3 2 5 5 4 6 2 1 3 6 6 5 4 3 2 1 Таблица операции взятия обратного элемента представлена в таблице умножения, поэтому приводить ее не имеет смысла. ^ 2.2.6. Свободные абелевы группы Свободная группа T(Q, X, Eq) называется свободной абелевой группой, если, кроме тождественных соотношений, определяющих ее как свободную группу, множество Eq включает тождественное соотношение коммутативности. Всякое слово из Г(£2, X, Eq) можно записать rtlk (2.2.2) где Xj е X, Xj все попарно разные, л,- — целые числа, j = 1, 2, ..., к. Запись слова в виде (2.2.2) называют мультипликативным, но часто для записи слов абелевой группы (как и слов коммутативной полугруппы) используют аддитивную запись — в виде суммы п\ • Х\ + пг • хг + . • • + Щ • х*. (2.2.3) Числа Hj в этом выражении называются коэффициентами. Сложение слов по формуле (2.2.3) определяется как сложение коэффициентов при одинаковых элементах х, е X, а роль единицы при такой форме записи играет нулевой элемент, т. е. выражение вида (2.2.3), у которого все коэффициенты равны нулю.
90 Часть I. Математические основы Если некоторые xj из X в выражении (2.2.3) отсутствуют, то предполагается, что коэффициенты и,- при них равны нулю. Пример 2.2.3. Абелевы группы □ Множество М= {-1, 1} представляет собой группу относительно обычного умножения чисел. Действительно, 1-1 = 1, (-1) 1 = 1- (-1) = -1, (-1) • (-1) = 1. Следовательно, множество М замкнуто относительно операции умножения. Роль единицы выполняет элемент 1. Это множество тоже замкнуто и относительно операции взятия обратного элемента (элементы 1 и -1 взаимнообратные). Очевидно, что операция умножения ассоциативна и коммутативна. □ Множество М = {0, 1} составляет абелеву группу относительно операции сложения, если положить 1 + 1=0 (группа остатков по модулю 2). Действительно, 0 + 0 = 0, 0+1 = 1+0=1, 1 + 1=0 и, значит, Мзамкнуто относительно операции сложения и взятия обратного элемента (1 есть элемент, обратный по отношению к самому себе). Единичным элементом служит 0. Очевидно, что операция сложения ассоциативно-коммутативна. Данную конструкцию группы можно обобщить. Пусть Z(n)={0, 1, ..., п - 1}, п > 1. Зададим на множестве Z(n) операцию сложения ©: к + 1,если£ + 1 <п, £ + 1-я,если£ + 1 >и, где "+" и "-" — обычные операции сложения и вычитания целых чисел. Множество Ъ(п) с заданной таким образом операцией сложения составляет абелеву группу порядка п. Действительно, роль нуля выполняет элемент 0, роль обратного элемента к данному элементу А:-элемент /, такой, что к + 1 = п. Очевидно, что операция сложения коммутативна в силу коммутативности операции сложения целых чисел. Доказательство ассоциативности операции предлагается как простое упражнение. Группа Z(n) называется группой остатков по модулю п и возникает в результате разбиения множества целых чисел Z на классы, где в один класс попадают те и только те числа, которые при делении на п > 1 дают одинаковые остатки. Если обозначить rest(m, n) остаток от деления числа т на и, то операцию сложения © можно определить другим способом: k ® I = rest(& + /, п). Очевидно, что рассмотренная выше группа М= {0,1} совпадает с группой Z(2). □ Множество целых чисел Z составляет аддитивную группу, но Z не является группой относительно операции умножения, поскольку операция деления в множестве Z (операция взятия обратного) не всегда определена. к®\ =
Глава 2. Основные понятия общей алгебры 91 Множество Z2 парных чисел составляет аддитивную группу и является подгруппой группы Z. Вообще аддитивной группой будет всякое множество целых чисел, кратных некоторому заданному целому числу п. Множество нечетных чисел не будет группой, поскольку оно незамкнуто относительно операции сложения. □ Множество рациональных чисел RC относительно сложения представляет собой группу, но относительно умножения RC не будет группой, поскольку деление на 0 невозможно. Заметим, что RC \ {0} — мультипликативная группа рациональных чисел. □ Циклическая группа G, т. е. группа, порожденная одним элементом, например а, состоит из элементов вида а", где пе Z, a0 = е, а1 = а. Умножение элементов определяется как сложение степеней, т. е. а • а = а . ^ Пример 2.2.4. Гомоморфизм групп Аддитивная группа целых чисел Z гомоморфно отображается на мультипликативную группу М(см. пример 2.2.3). Отображение h задается таким образом: fl, если п четное, h(n) = \ [-1, если п нечетное. Покажем, что h — гомоморфизм. Сначала покажем, что h(m + п) = h(m) • h(n). Возможны следующие четыре случая. 1. т = 2к,п = 21. 2. т = 2к,п = 21+1. 3. т = 2к+ 1,п = 2/. 4. т = 2к+ 1,п = 2/+ 1. В случае 1 имеем h(m + h) = h(2k + 21) = h(2(k + /)) = 1. С другой стороны, h(m)h(n) = h(2k)h(2l) =11 = 1. В случае 2 имеем h(m + п) = h(2(k + /) + 1) = -1. С другой стороны, h(m) • h(n) = h(2k) • h(2l +l)=l-(-l) = -l. Случай З аналогичен случаю 2. В случае 4 имеем h(m + n) = h(2k + 1) • h(2l + 1) = h(2(k + / + 1)) = 1. С другой стороны, h(m) • h(n) = h(Zk + 1) • h(2l + 1) = (-1) • (-1) = 1. Следовательно, равенство h(m + п) = h(m) • h(n) выполняется. Далее, поскольку Л(0) = 1, то нульарные операции тоже соответствуют этому равенству. И последнее, если
92 Часть I. Математические основы II, если п четное, [-1, если п нечетное. то fl, если п четное, К-п) = \ [-1, если п нечетное. Поскольку элементы 1 и -1 обратные сами себе, то и в этом случае все корректно. Очевидно, что это отображение не взаимно однозначно. Таким образом, построенное отображение h — гомоморфизм. * Пример 2.2.5. Изоморфизм групп Теорема 2.2.2. Всякая бесконечная циклическая группа изоморфна аддитивной группе целых чисел Z. Всякая конечная циклическая группа порядка п изоморфна группе остатков Z(n). В первом случае отображение задается таким образом: h(an) = л, а во втором — h(ak) = rest{k, n). Доказательство. Покажем, что h — изоморфизм для первого случая: □ h(am'an) = h(am + n) = m + n; П h(a~n) = -п, и поскольку ап обратный к а~л, то условия изоморфизма выполняются; □ h(a°) = h(e) = 0. Остается показать, что h взаимно однозначно. Для этого необходимо заметить, что ат = ап => ат~п = а° = е, т. е. т = п. Это и следовало доказать. Второй случай предлагается в виде упражнения. * Пример 2.2.6. Построение "нетрадиционной" арифметики на основе абе- левых групп Пусть задано некоторое конечное множество целых чисел, например N5= {0, 1, 2, 3, 4}. Поскольку мы хотим построить аддитивную абелеву группу, то это множество обязательно должно включать 0. Для того чтобы N5 превратить в группу GN5, необходимо корректно задать значения для операции сложения с одним из элементов группы, скажем с 1. Действительно, поскольку а + 0 = а для всякого а из GN5, то первая строка таблицы сложения элементов группы определена (табл. 2.2.1), а в силу симметричности (поскольку GN5 абелева) — и первый столбец этой таблицы. Пусть, например, задано 0+1 = 1, 1 + 1=4, 1+4 = 2, 1+2 = 3, 1+3 = 0.
Глава 2. Основные понятия общей алгебры 93 Такое задание корректно, поскольку имеет место единственность результата (но единственность результата, как будет показано ниже, недостаточное условие гарантии корректности). Теперь последовательно находим: 2 + 2 = 2 +(1+4) = (2+1)+ 4 = 3 +(1 + 1) = (3 + 1)+1=0+1 = 1. 2 + 3 = 2 +(1+2) = (2+ 2)+1 = 1 + 1= 4. 2 + 4 = 2 +(1 + 1) = (2+1)+1=3+1=0. 3 + 3 = 3 + (1+2) = (3 + 1) + 2 = 0 + 2 = 2. 3 + 4 = 3 +(1 + 1) = (3 + 1)+1=0+1 = 1. 4 + 4 = 4 + (1 + 1) = (4+1) +1 = 2+1 = 3. Заносим эти значения в таблицу 2.2.2 и на этом оканчиваем построение группы GN5. Таблица 2.2.1 Таблица 2.2.2 + 0 1 2 3 [4 0 0 1 2 3 4 1 1 4 3 0 2 2 2 3 1 4 0 3 3 0 4 2 1 ~4 4 2 0 1 3 + 0 1 2 3 4 0 0 1 2 3 4 1 1 4 3 0 2 2 2 3 3 3 0 4 4 2 Аналогично можно задать и любую другую группу GN5, включающую 0. Действительно, если, например, М5={0, 2, 6, 3, 5}, то установим взаимно однозначное соответствие h между N5 и М5 (это соответствие существует, поскольку N5 и Л/5 равномощны), которое переводит 0 в 0, а остальные элементы — произвольным образом. Например, пусть задано 1 <=> 6, 2 <=> 3, 3 <=> 5, 4 «=> 2, 0 <=> 0. Отсюда получаем табл. 2.2.3. Таблица 2.2.3 + 0 2 6 3 5 0 0 2 6 3 5 2 2 5 3 0 6 6 6 3 2 5 0 3 3 0 5 6 2 5 5 6 0 2 3
94 Часть I. Математические основы Проверим, например, чему соответствует в этой таблице 4=1+1. Имеем А(1 + 1) = А(4) = А(1) + А(1) = 6 + 6 = 2. В качестве упражнения предлагается выполнить проверку всей табл. 2.2.3. Отметим, что для того чтобы построить группу GNk, мало требовать только однозначность операции сложения. Если определить сложение в группе так, что в ней будет элемент конечного порядка (то есть группа с кручением), то корректность определения операции может быть нарушена. Например, если задать сложение 0+1 = 1, 1 + 1=0, 1+2 = 3, 1 + 3 = 4, 1+4 = 2, то, выполняя проверку (вычисляя) 1 + 3, получим 1 + 3=1+(1+2) = (1 + 1)+ 2 = 0 + 2 = 2, что не совпадает с определенным выше. Дело в том, что элемент 1 является элементом порядка 2 (1 + 1 = 0), и это вносит свои коррективы при определении операции (ее уже нельзя задавать произвольным образом). ^ 2.2.7. Свободное кольцо Свободная группа T(Q, X, Eq) называется свободным кольцом, если Eq определяет 7(Q, X, Eq) как 1. свободную абелеву группу относительно сложения; 2. свободный группоид относительно умножения; 3. такую, в которой выполняются законы дистрибутивности, т. е. для любых х,х\х" из T(Q,X,Eq) х(х + х") = (xx) + (хх"), (jc + jcV' = (*0+ (*'*''). Иначе говоря, О. включает четыре операции: бинарные операции сложения и умножения, унарную операцию взятия обратного относительно операции сложения и нульарную операцию, фиксирующую нулевой элемент абелевой группы кольца. Этот нулевой элемент называется нулевым элементом кольца. Умножение в свободном кольце сводится, в силу законов дистрибутивности, к умножению элементов из X, которое выполняется по правилу умножения слов в свободном группоиде. Из 1-3 вытекают соотношения, которые дает следующее утверждение. Утверждение 2.2.4. В произвольном кольце К для всяких его элементов я, Ьу с имеют место соотношения'. 1. a(b -с) = ab- ас, (Ь - с)а = Ьа- са\
Глава 2. Основные понятия общей алгебры 95 2. аО = Од = 0; 3. Ы)Ь = a(-b) = -ab, (-a)(-b) = ah. Доказательство. 1. В силу законов коммутативности и ассоциативности операции сложения можно записать с + (Ь - с) = Ъ. Умножив обе части этого уравнения слева на а, будем иметь а(с + (Ь - с)) = ас + а(Ь - с) = ab. Отсюда (ас + а(Ь - с)) -ас = ab-ac = a(b - с), снова в силу законов коммутативности и ассоциативности операции сложения. Аналогично доказывается и второе соотношение. 2. Действительно, пусть Ъ— произвольный элемент кольца. Тогда, в силу утверждения 1, доказанного выше, имеем яО = a(b -b) = ab-ab = 0. 3. Доказательство предлагается в качестве упражнения. Заметим, что утверждение, обратное утверждению 2, в произвольном кольце не имеет места, т. е. существуют такие кольца, в которых есть отличные от нуля элементы а> Ь, произведение которых равняется нулю (ab = 0). Если такие элементы в кольце есть, то они называются делителями нуля. Кольцо называется ассоциативным (коммутативным), если операция умножения ассоциативна (коммутативна), и называется кольцом с единицей, если имеет единичный элемент относительно операции умножения. Кольцо называется ассоциативно-коммутативным, если оно ассоциативно и коммутативно одновременно. Элементами свободного ассоциативно-коммутативного кольца с множеством свободных образующих X есть многочлены от элементов из X с целыми коэффициентами. Поэтому такое кольцо часто называют просто кольцом многочленов над X. Умножение в свободном ассоциативном кольце выполняется по правилу умножения слов в свободной полугруппе, а сама полугруппа называется мультипликативной полугруппой ассоциативного кольца. Пример 2.2.7. Кольца □ Примером ассоциативного кольца с единицей может служить множество квадратных матриц над произвольным кольцом Р с единицей. Пусть М(р, q, Р) — множество всех матриц размерности р х q над кольцом Р, а М(р, Р) — множество квадратных матриц М(р, ру Р).
96 Часть I. Математические основы Матрица С, состоящая из элементов вида щ + Ь,у, где a{jj Ь{] — соответственно элементы матрице и В из М(р, q, Р), называется суммой матриц А и В. Поскольку множество Р является кольцом, то множество М(р, q, Р), очевидно, есть абелева группа относительно сложения. Роль нулевого элемента играет матрица, у которой все элементы — нули (нулевая мат- рица\ а роль обратной матрицы матрице А играет матрица А\ у которой я,/ = -я/,, где я,/, atj — элементы матриц А' и А соответственно. Пусть А е М{р, q, Р), В е M(q, г, Р), тогда матрица С, состоящая из элементов я cij = £я/*Л*> к=\ называется произведением матриц А и В. Из этого определения вытекает, что не всякие две матрицы можно перемножать, а лишь соответствующие, т. е. такие, у которых число столбцов первой равно числу строк второй. Ясно, что квадратные матрицы из М(р, Р) соответствующие, и для таких матриц произведение всегда определено. Рассмотрим множество матриц М(р, Р). Матрица А называется единичной, если щ = 0 при i Ф) и я„ = 1Р, где \р— единица кольца Р. Единичная матрица, как правило, обозначается Е. Легко убедиться, что \/А е М(р, Р) имеет место равенство А • Е = Е А, т. е. матрица Е играет роль единичного элемента в множестве М(р, Р). Нетрудно показать, что М(р, Р) является ассоциативным кольцом с единицей. Покажем, например, справедливость одного из дистрибутивных законов: (У/А, В Е М(р, Р))А(В + С)=АВ+АС. Действительно, по определению произведения матриц имеем £ aik (hj + ckj) = X (aikbkj + aikckj)=S aikhj + £ aikckj. k=\ *=1 k=\ k=\ то есть А(В + С)иАВ + АС имеют одинаковые элементы. □ Множество М= {0, 1} будет кольцом, если определить сложение и умножение элементов этого множества так: 0 + 0=1 + 1= 0, 0+1 = 1+0= 1,01 = 10 = 0, 11 = 1. Нетрудно проверить, что данное множество будет ассоциативно- коммутативным кольцом с единицей. Рассматривая квадратную матрицу над этим кольцом, которая соответствует некоторому бинарному отношению R на конечном множестве А
Глава 2. Основные понятия общей алгебры 97 A(R) = (см. разд. /), можно вычислить транзитивное замыкание этого отношения, пользуясь его матрицей A(R). Рассмотрим пример. Пусть А = {аи а2, аз, a*}, R = {(яь «О» Оь а2), (аи аз), (#2, а*), (аз, аА), (я4, а\)9 (а4, аз)}. Тогда матрицу A(R) запишем так: 1 1 0 0| 10 0 1 1 |0 0 0 1 1 0 1 0| Предлагается показать, что A(R)2 соответствует отношению R2, A(R)3 — отношению /?3 и т. д. Вообще, если R и R\ — некоторые бинарные отношения на множестве А, которым соответствуют матрицы A(R) и A(R\)9 то отношению R * R\ соответствует матрица, которая является произведением матриц A(R) и A(R\) (см. упр. 13 этого раздела). □ Рассматривая абелевы группы, мы строили пример нетрадиционной арифметики для операции сложения (см. пример 2.2.6). Кольца позволяют расширить такое построение и на операцию умножения. Рассмотрим сначала, как доопределяется группа GN5 (см. табл. 2.2.2) до кольца с единицей. Роль единицы будет играть 1. В силу аксиом кольца и утверждения 2.2.4 имеем: для всякого элемента а из GN5 а • 1 = 1 • а = а, 0 • а = а • 0 = 0. Таким образом, две строки и два столбца таблицы умножения уже определены. Далее, используя табл. 2.2.2 для сложения и закон дистрибутивности, получаем 4 ■ 2 = (1 + 1) ■ 2 = 2 + 2 = 1; 4-3 = (1 + 1)-3 = 3 + 3 = 2; 4-4 = (1 + 1)-4 = 4 + 4 = 3. Легко видеть, что 4-2 = 2-4 и 4 • 3 = 3 • 4, т. е. элемент 4 коммутативен с остальными элементами. 0 1 2 3 [Л 0 0 0 0 0 0 1 0 1 2 3 4 Таблица 2.2.4 2 3 4 0 0 0 2 3 4 3 4 1 4 1 2 1 2 3
98 Часть I. Математические основы Далее 2-2 = (1+4)-2 = 2 + 4-2 = 2+1 = 3; 2-3 = (1+4)-3 = 3 + 4-3 = 3 + 2 = 4; 2-4 = (1+4)-4 = 4 + 4-4 = 4 + 3 = 1. Аналогично получаем 3-3 = (2+1)-3 = 2-3 + 3 = 4 + 3 = 1 и все остальные элементы табл. 2.2.4. Из симметричности таблицы вытекает, что множество элементов GN5 коммутативно. Кроме того, легко проверить, что GN5 также и ассоциативно, т. е. GN5 — ассоциативно-коммутативное кольцо с единицей. Рассмотрим теперь пример кольца без единицы. Возьмем группу GM5, операция сложения которой задана табл. 2.2.3. Для того чтобы превратить эту группу в кольцо, необходимо, как и в случае сложения, задать хотя бы одну строку для операции умножения. Пусть задано: 2-2 = 3, 2-3 = 5, 2-5 = 6, 2-6 = 2. Тогда имеем: 0 2 6 3 5 0 Го 0 0 0 0 2 0 3 2 5 6 6 0 5 6 2 3 3 0 2 3 6 5 5 0 6 5 3 2 2 = (2 + 2 3 = (2 + 2 6 = (2 + 2 5 = (2 + 2 2 = (5 + 2 3 = (5 + 2 5 = (5 + 2 6 = (5 + 2 2 = (6 + 2 3 = (6 + 2! 6 = (6 + 2 5 = (6 + 2 2 = 2 3 = 2 6 = 2 5 = 2 2 = 5 3 = 5 5 = 5 6 = 5 2 = 6 3 = 6 6 = 6 5 = 6 2 + 2 3 + 2 6 + 2 5 + 2 2 + 2 3 + 2 5 + 2 6 + 2 2 + 2 3 + 2 6 + 2 5 + 2 Таблица 2.2.5 2=3+3=6 3 = 5 + 5 = 3; 6 = 2 + 2 = 5; 5 = 6 + 6 = 2; 2 = 6 + 3 = 5; 3 = 3 + 5 = 2; 5 = 2 + 6 = 3; 6 = 5 + 2 = 6; 2 = 5 + 3 = 2; 3 = 2 + 5 = 6; 6 = 6 + 2 = 3; 5 = 3 + 6 = 5. Окончательно операция умножения представлена табл. 2.2.5. Из таблицы видно, что кольцо некоммутативно. Легко убедиться, что оно и неассоциативно. Это видно из такого примера: результаты (3-6)-5 = 3-5 = 5 и 3 • (6 • 5) = 3 • 3 = 6 не равны между собой. Отметим, что для того чтобы оптимально находить таблицу как для сложения, так и для умножения, лучше всего поступить таким образом. Если определено умножение на число 2 (как в предыдущем примере), то в таблице
Глава 2. Основные понятия общей алгебры 99 сложения находим сумму 2 + 2 (она равна 5) и берем результат сложения как первый сомножитель. Далее поступаем аналогично для числа 2 и числа, полученного раньше (в примере это число 5), ищем произведение этих чисел. Находим результат умножения и т. д., пока не построим все элементы таблицы. При вычислениях на ЭВМ такая методика часто играет очень важную роль для построения эффективных алгоритмов. □ Ассоциативно-коммутативное кольцо называется булевым, если для всякого элемента а из этого кольца имеет место соотношение a = я. Это тождество называется законом идемпотентности. Утверждение 2.2.5. Во всяком булевом кольце для любых элементов а, Ъ имеют место соотношения: 1. 2а = 0; 2. а • b = b • а. Доказательство. Докажем первое. В силу идемпотентности a + b = (a + b)2 = a + a*b + b*a + b. Отсюда получаем я*Ь + Ь*я = 0. Положим Ъ = я, тогда а2 + а2 = а + а = 2*я = 0. Отсюда находим также, что а = -а. Докажем второе. Из (а) получаем, что я*Ь = Ь*я = 0. Меняя а на -а в одном из слагаемых, находим я*Ь-Ь*я = 0 или а * b = b * я, что и следовало доказать. < Ассоциативно-коммутативное кольцо без делителей нуля называется областью целостности. Областями целостности, как легко убедиться, являются кольца целых и рациональных чисел —Z и RC. Областью целостности будет также и свободное кольцо многочленов. Последний пример с многочленами подсказывает конструкцию, с помощью которой можно строить другие примеры областей целостности. Пусть КС— произвольное ассоциативно-коммутативное кольцо. Рассмотрим все возможные многочлены вида а0 + я 1 * х + а2 * х2 + ... + ап * хп относительно неизвестного х с коэффициентами ах из RC, где и, е N,/=1,2, ..., п. Если ап Ф 0, то число п называется степенью этого многочлена. Определяя сложение и умножение многочленов обычным путем, так, как это принято в курсе высшей алгебры, получаем кольцо многочленов R[x] от параметра х над кольцом КС. Нулем кольца R[x] служит многочлен, все коэффициенты которого равны нулю.
100 Часть I. Математические основы Аналогично можно рассматривать кольцо многочленов R[x\, хг, ..., хп] от любого конечного числа неизвестных, как кольцо многочленов от одного неизвестного хп над кольцом R[x\, хг, ..., хп. \]. Имеет место следующая теорема. Теорема 2.2.3. Если КС— область целостности, то R[xjt x2, ..., хп] — тоже область целостности (см. упр. 17). Ассоциативно-коммутативное кольцо с единицей называется полем, если оно как относительно сложения, так и относительно умножения является абеле- вой группой. Группа поля относительно сложения называется аддитивной, а группа поля относительно умножения —мультипликативной. Заметим, что поле есть область целостности, и поэтому, как следует из теоремы 2.2.3, кольцо многочленов над произвольным полем Р является областью целостности. Единицей в этой области служит многочлен, коэффициенты которого равны нулю, кроме коэффициента ао, который равен 1^ — единице поля Р. 2.2.8. Векторные пространства Свободная группа T(Q, X, Eq) является векторным пространством над некоторым полем Р, если Q включает бинарную операцию сложения элементов вида (2.2.3), бесконечное число унарных операций умножения элементов вида (2.2.3) на элементы из поля Р (для каждого а из Р своя операция) и нуль- арную операцию, фиксирующую нулевой элемент. Множество Eq включает все соотношения, определяющие T(Q, X, Eq) как свободную абелеву группу, т. е., для любых jc, х\ х" из T(Q, X, Eq) имеем: х + (х + х") = (jc + х) + jc", х + 0 = jc, х + х = х + х, х + (-х) = О, а также для любых jc, х из T(Q, X, Eq) и а, Ъ из Р имеют место равенства а • (х + х) = а • х + а • х'\ {а + Ь) • х = а • х + Ъ • х\ а • (Ь • х) = (а • Ь) • х. Элементами T(Q, X, Eq) являются элементы вида (2.2.3), которые называются векторами. Символам х, из X сопоставляется вектор 0-jci+0-jc2+... + 1 -JC/+...+0 •*„+..., (2.2.4) а роль нулевого вектора пространства играет элемент О • х\ + 0 • х2 + ... + 0 • Xi + ... + 0 • хп + ... = О, где/= 1,2
Глава 2. Основные понятия общей алгебры 101 Пусть V|, v2, ..., vn G T(Q, X, Eq) и mum2, ..., m„ € P, тогда сумму n m, • v, + m2v2 +... + mnvn= £m,' vi 1=1 называют линейной комбинацией векторов vuv2y ..., v„. Говорят, что векторы vi, v2,..., v„ линейно независимы, если п ^Щ v/ =0<=> тх =т2 =... = тл =0, i=i в противном случае векторы vb v2, ..., v„ называются линейно зависимыми* Предположим, что в некотором пространстве L над полем Р существует линейно независимая система векторов vi, v2, ..., v„, и нет никакой линейно независимой системы, состоящей из большего, чем п числа векторов. Тогда говорят, что L— л-мерное векторное пространство над полем Р. Число п называют размерностью пространства L, а произвольную совокупность линейно независимых векторов vi, v2, ..., v„ из L— базисом L. Если такого числа п нет, то пространство L называется бесконечномерным. Заметим, что векторы вида (2.2.4) линейно независимы, и поэтому X можно рассматривать как базис T(Q, X, Eq\ и если X— конечное множество, то 7(Q, X, Eq) — конечномерное пространство над Р. Теорема 2.2.4. ЕслиХ— базис n-мерного векторного пространства T(Q X, Eq) над полем Ру то для всякого вектора ие T(Q, Xy Eq) существует единственная возможность записи его в виде линейной комбинации и = тх • х\ + т2 • Х2 + ... + тп • хп базисных векторов хи *2, • • •, хп е X. Доказательство. Поскольку X— базис, то совокупность векторов и, хи х2, ..., хп в n-мерном векторном пространстве 7(Q, X, Eq) линейно зависима, в то время как х{, jc2, ..., хп — линейно независимая система. Следовательно, и = т\ • хх + ш2 • х2 + ... + тп • хп. Если бы существовала другая возможность записи вектора и, например, и = 1{ • х\ + 12 • х2 + ... + /„ • хП9 то мы бы имели (ш, -1{) • х\ + (ш2-/2) • х2 + ... + (тп- 1п) -хп = 0. Отсюда, поскольку векторы х\, х2у ..., хп линейно независимы, получаем т{ = 1ит2 = 12, ...,шл=7„. Теорема доказана. Однозначно определенные коэффициенты ти w2, ..., тп вектора и из T(Q, X, Eq) называются его координатами в базисе vj, ..., vn.
102 Часть I. Математические основы Если L с T{Q, X, Eq), то множество L называется подпространством пространства T{Q, X, Eq), когда оно вместе с векторами vi, v2, ..., vk включает и всякую их линейную комбинацию mi • vi + т2 • v2 + ... + т* • v*. В отдельном случае, если 7(Q, X, Eg) — n-мерное векторное пространство и L — его подпространство, то ясно, что размерность L не превышает размерности всего пространства T{Q, X, Eq). Справедлива такая теорема. Теорема 2.2.5. Если подпространство L n-мерного векторного пространства Т(£1, X, Eq) имеет ту же размерность, что и T(£l, X, Eq), mo оно совпадает со всем пространством T(£l, X, Eq). Доказательство. Пусть L и 7(Q, X, Eq) имеют одну и ту же размерность п. Возьмем базис пространства L— vi, v2, ..., v„. Эта система будет базисом обоих пространств (поскольку vb v2, ..., vn e 7(Q, X, Eq)). Следовательно, для всякого и е T{Q, X, Eq) существует разложение и - т\ • vi + m2 • v2 + ... + тп • vn и ие L, поскольку и — линейная комбинация векторов из L, т. е. 7(Q, X, Eq) с L, а значит, L = T{Q, X, Eq). 2.2.9. Булевы алгебры Алгебра G = {A, Q) e K{Q, Eq) называется булевой алгеброй, если Q состоит из: □ 61 двух бинарных операций v {или) и & (и); П 62 одной унарной операции -i {отрицание)', П 63 двух нульарных операций 0 {нуль) и 1 {единица), и для любых а,Ь,сеА выполняется такая совокупность соотношений Eq: П clavb = bva,a&b = b&a — коммутативность; □ с2 a v {b v с) = {a v b) v с, а & {Ь & с) = {а & Ь) & с — ассоциативность; □ сЗ av {b&c) = {av b) &{av c),a&{bv c) = {a&b)v {а& с) — дистрибутивность; □ с4 a v 0 = a, av -\a= I, a & I = a, a&-ia = 0 — законы для нуля, единицы и отрицания. В качестве следствий соотношений cl-c4 можно получить некоторые полезные соотношения. Следствие 2.2.1. (Закон идемпотентности.) Для всякого элемента а из А имеют место равенства ava = a&a = a,av 1 = 1, я & 0 = 0.
Глава 2. Основные понятия общей алгебры 103 Доказательство. Используя законы с4 и законы дистрибутивности, имеем a v a = (a v a) & 1 = (a v a) & (a v —\d) = av (a& —.a) = a v 0 = a, a& a = (a& a)v 0 = (a& a)v (a& -.a) = a&(av -.a) = a & 1 = a. Отсюда, а также из законов ассоциативности следует av \= av (av —.а) = (a v a) v —\a = a v -ia = 1; a & 0 = a & (a & -,a) = (a & a) & -,я = a & -,a = 0. Следствие 2.2.2. (Закон поглощения.) Для любых элементов a, be A выполняются равенства а & (a v b) = a v (а & Ь) = а. Доказательство. Докажем равенство av (a& b) = a. Используя соотношения с4, закон дистрибутивности и следствие 2.2.1, имеем av(a&b) = (a&l)v(a&b) = a&(lvb) = a&l=a. Аналогично доказывается и другое равенство: a&(av b) = (avO)&(avb) = av(0&b) = avO = a. Свойство 2.2.1. Для любых элементов а} Ь, с е А из равенств а& с = Ь & с и av с = bv с вытекает равенство а = Ь. Доказательство. По закону поглощения имеем а = av (а& с). Используя законы поглощения, дистрибутивности и равенства, приведенные в условии, получаем а = av (a& c) = av (Ь & c) = (av Ь) & (av с) = = (avb)&(bvc) = bv(a&c) = bv(b&c) = b, что и требовалось доказать. Следствие 2.2.3. (Закон двойного отрицания.) Для любого элемента а из А имеют место равенства -i(-itf) = а, —.(О) = 1, -i(l) = 0. Действительно, -.(я) v -.(-.(a)) = 1 и -.(а) & -.(-.(а)) = 0, -i(tf) va=l и -.(а) & а = 0 в силу с4. Отсюда следует, что -.(a) v -.(-.(a)) = -.(я) van -.(а) & -.(-.(а)) = -.(а) & а. По свойству 2.2.1 получаем а = -.(-.(a)). Аналогично h3-iOvO=1vO=1h-iO&0=1&0 = 0 следует-.0 = 1. Следствие 2.2.4. (Законы де Моргана.) Для любых элементов a, be А имеют место равенства -.(a v b) = -\a & -.6, -.(a & b) = -.a v -ife.
104 Часть I. Математические основы Доказательство. Рассмотрим выражение (a v Ь) & (-,д & -А) = (а & (-,а & -.Ь)) v (6 & (-,а & -,Ь)) = 0 v 0 = 0. Далее (avb)v (-.а & -А) = ((a v fe) v -i(e)) & ((a v fc) v -.Ь) = 1 Л 1 = 1. В силу с4 имеем: (а V 6) & (-пЯ & -nb) = (flvfc)&n(flVfc) = 0 и (av b)v (-ла & -ife) = (а v b) v -»(а v fe) = 1. Отсюда по свойству 2.2.1 делаем вывод, что -i(a v fe) = —\а & -ife. Аналогично доказывается и второй закон. Операции булевой алгебры v, &, —i соответственно называют дизъюнкцией, конъюнкцией и отрицанием, а также пропозициональными (булевыми) связками. Булеан множества Примером булевой алгебры может служить множество B(U) всех подмножеств некоторого множества U с обычными операциями объединения, пересечения и дополнения в множестве B(U). Роль нуля в этом случае играет пустое множество, а единицы — все множество U. Действительно, перечисленные операции над множествами соответствуют М1-М5, которые являются законами булевой алгебры. Алгебра булевых функций АлфавитХ = {jci, JC2, ..., хп) будем называть алфавитом булевых переменных, если каждая переменная х, е Д/= 1, 2, ..., п) может принимать лишь одно из двух значений: 0 или 1, т. е. область интерпретации переменных из множества X есть множество {0, 1}. Константы 0 и 1 называют в этом случае булевыми константами. m-арная функция/: X™ —> {0, 1}называется булевой функцией над алфавитом X, где Х- {х\, хг, ..., *„} — алфавит булевых переменных. Из определения булевой функции от т аргументов следует, что ее область определения конечна и состоит в точности из 2т элементов. Любой такой элемент (который называют набором) — это вектор длины w, каждый компонент которого равен 0 или 1. Исходя из того, что всякая булева функция также принимает лишь одно из двух значений (0 или 1), можно подсчитать число всех разных w-арных булевых функций. Действительно, поскольку на каждом наборе из области определения w-арной функции она может принимать значения 0 или 1
Глава 2. Основные понятия общей алгебры 105 независимо от значений на других наборах, то, постепенно расширяя область определения с одного набора до всех 2т наборов, мы каждый раз удваиваем число разных функций. Таким образом, существует 2 разных булевых функций от т переменных, в частности, 4 булевых функции одной переменной, 16 булевых функций двух переменных и т.д. Благодаря тому, что области изменения аргументов и области значений булевых функций совпадают, можно строить суперпозиции булевых функций, выполняя подстановки одних из них на место других. В связи с этим всякая булева функция/может рассматриваться как операция над множеством всех булевых функций. Выбрав некоторое множество функций в качестве множества основных операций, можно строить разные алгебры булевых функций. При этом выражения в такой алгебре будут представлять соответствующие булевы функции. Например, выражение 5(jcb jc2, ..., jc*) представляет функцию j{xu *2> .., хк\ если на всяком наборе значений переменныххи х2, ...,** значения S и/совпадают. Особое место, как мы убедимся позже, занимают уже известные нам булевы операции (функции) вида j{x) = -a, g(x, y)=xvy, h(x, y) = x&y. Набор операций над заданным алфавитом булевых переменных Х= {х\, х2, ..., Xk} называют функционально полным, если всякая булева функция над алфавитом X может быть представлена хотя бы одним выражением в алгебре, которая определяется этим набором операций. Законы булевой алгебры показывают, что булева функция может иметь несколько выражений, которые ее представляют. В связи с этим возникает вопрос о канонической форме выражений булевой алгебры. Рассмотрим две такие формы — конъюнктивную и дизъюнктивную. Приведем необходимые определения. Пусть Х- { jci, jc2, ..., хп } — алфавит булевых переменных, а фиксированными булевыми операциями являются операции дизъюнкции, конъюнкции и отрицания. Элементарным произведением называется выражение, которое представляет собой конъюнкцию произвольного конечного числа попарно разных символов булевых переменных из Х9 часть которых (возможно, пустая) находится под знаком отрицания. Например, —а & у & z, —ос, х & -ту, где х, у, z e X, являются элементарными произведениями. К элементарным произведениям также относят и константу 1, о которой говорят, что она состоит из пустого множества членов. Дизъюнктивной нормальной формой (ДНФ) называется дизъюнкция любого конечного множества попарно разных элементарных произведений. Это определение включает в себя как случай пустого множества членов, так и случай
106 Часть I. Математические основы одного члена— булевой константы. Основное свойство ДНФ дает такое утверждение. Теорема 2.2.6. Всякое выражение булевой алгебры молено превратить в эквивалентную ему дизъюнктивную нормальную форму. Доказательство теоремы, по существу, представляет собой алгоритм построения ДНФ для заданного выражения. Опишем его в виде шагов, которые необходимо выполнить в процессе построения ДНФ. Каждый из этих шагов вполне понятный, и поэтому мы ограничимся лишь их последовательностью, первый шаг которой применяется к начальному выражению, а каждый следующий — к результату предыдущего. □ С помощью законов де Моргана выражение преобразуется виду, в котором нет символа отрицания ни перед дизъюнкцией, ни перед конъюнкцией подвыражений данного выражения. □ Применяем закон двойного отрицания. □ Применяем законы дистрибутивности и закон коммутативности для конъюнкции до тех пор, пока выражение не примет вида дизъюнкции нескольких произведений. □ Приводим каждый дизъюнктивный член либо к элементарному произведению, либо к константе. □ Применяя законы для нуля и единицы, упрощаем полученное выражение. Это и есть искомая ДНФ. Теорема доказана. Пример 2.2.8 Построить ДНФ для выражения —i(jc & -\у) & ((х & z) v -i(y v z)). Применяя дважды законы де Моргана, данное выражение можно превратить в такое выражение: -п(л: & -ту) & ((* & z) v —,0 v Z)) = (-* v -г-оО & ((л; & г) v (-ту & -*)). Применяя закон двойного отрицания, получаем такую формулу: (-* v у) & ((х & г) v (-ту & -*))■ Раскрывая скобки с помощью законов дистрибутивности, имеем: (-л v у) & (С* & z) v (-ту & -*)) = = (-TJC V у) & (X & Z) V ((-tJC V у) & (-.)> & -*)) = = (х & z) & (-a v у) v (-!)> & -*) & (-^х v у) = (х & z & -ос) v v (х & у & z) v (-г* & -ту & -iz) v (у & -iy & -iz).
Глава 2. Основные понятия общей алгебры 107 Наконец, воспользовавшись законами jc & -а: = О, 0&jc = 0 и 0 vх = х, окончательно находим, что -i(jc& -ту) & ((х&z)v-i(yvz)) = (x&y&z)v(-^x&-*y& -iz). < Возникает вопрос: будет ли ДНФ для заданной булевой функции единственным представлением, или нет? Ответ в общем случае отрицателен. Действительно, например, левые и правые части закона поглощения удовлетворяют определению ДНФ, но отличаются одна от другой. Можно ввести условия, при выполнении которых ДНФ булевой функции будет единственной. Одной из таких форм является совершенная ДНФ. Элементарное произведение называется конституэнтой единицы для алфавита булевых переменных Х9 если оно включает (под знаком отрицания, или без него) все переменные из X. Ясно, что каждая конституэнта единицы принимает значение 1 лишь на единственном наборе из 2т наборов булевых переменных. ДНФ булевой функции j{x\, ;c2, ..., хп) называется совершенной (СДНФ), если все ее элементарные произведения — конституэнты единицы для множества {дсь *2, ..., хп} аргументов функции. Теорема 2.2.7. Всякое выражение булевой алгебры может быть преобразовано в совершенную дизъюнктивную нормальную форму. Доказательство. Пусть S(x\, jc2, ..., хп) — некоторое выражение булевой алгебры и F(x\, X2, ..., хп) — ДНФ этого выражения. Рассмотрим произвольное элементарное произведение выражения F (например, хх & хг & ... & xk, к = 1, 2, ..., п). Если к = п, то данное произведение является конституэнтой единицы, и в этом случае переходим к следующему элементарному произведению. Если к<п, то, используя закон xv-a:=l, заменяем Х\ & хг & ... & jc* на х\ & хг & ... & Xk & (хк+\ v -tjc* + i) и применяем соответствующие законы дистрибутивности. Этот процесс продолжаем до тех пор, пока все элементарные произведения не будут преобразованы в конституэнты единицы для множества {лсь jc2, ..., хп} переменных выражения S. Теорема доказана. Теорема 2.2.8. Произвольная булева функция может быть представлена единственной (с точностью до перестановки дизъюнктивных членов и их сомножителей) совершенной дизъюнктивной нормальной формой. Доказательство. Пусть j{xu *2. •••<> хп)— произвольная n-арная булева функция, а (аь 02, ..., ап) — произвольный набор из области определения функции/, на котором она принимает значение 1. Обозначим К{а\, я2, ..., ап) =
108 Часть I. Математические основы = хх & х2 & ... & хп конституэнту единицы, сомножители которой определяются по такому правилу: \xhQcmax = 1, *i = i [-Л;, если flj =0. Построенную таким образом конституэнту будем называть конституэнтой, которая соответствует набору (au a2, ..., an). Очевидно, что из 2т конституэнт единицы, только она (с точностью до перестановки сомножителей) будет равна 1 на наборе (au a2, ..., an). Отсюда следует, что СДНФ, составленная из всех конституэнт единицы, которые соответствуют наборам, где функция / принимает значение 1, представляет булеву функцию /. Ясно также, что всякое изменение в составе конституэнт приводит к СДНФ, которая уже не.бу- дет представлять эту булеву функцию. Теорема доказана. Следствие 2.2.5. Всякая булева функция может быть представлена выражением булевой алгебры, т. е. система операций v, & и -i функционально полная. Подчеркнем, что в силу законов де Моргана, функционально полными будут и классы функций v, —i и &, —i. Следствие 2.2.6. Для всяких двух выражений булевой алгебры можно проверить их эквивалентность. Действительно, если выражения S и S' эквивалентные, то каждое из них в соответствии с теоремами 2.2.6 - 2.2.8 преобразуется в одну и ту же СДНФ. Остается проверить, это одна и та же СДНФ или нет. Следует подчеркнуть тот факт, что СДНФ заданной функции может представлять собой достаточно громоздкую конструкцию. Например, функция J{x, у, z) = xvyv z имеет семь наборов (кроме набора (0, 0, 0)), на которых она равна единице. Следовательно, ее СДНФ включает семь конституэнт единицы. Принцип двойственности. Функция f(x\, x2, ..., хп) = —ifl-ccu -*2» ..., —осп) называется двойственной функции Дх\, *2, ..., хп). Из данного определения и законов булевой алгебры вытекает, что функция, двойственная двойственной функции, совпадает с исходной, т. е. (/)* =/. Легко убедиться в том, что дизъюнкция и конъюнкция, а также 0 и 1 — двойственные одна другой, а функция отрицания двойственна самой себе. Действительно, (—а)* = —1(—г—ос) = -ст, (0)* = -,(0)=1и(1)* = -п(1) = 0;
Глава 2. Основные понятия общей алгебры 109 (х v у) = —1(—ix v —ту) = —I—ijc & —I—iy = x & у; (х & у)* = —1(—L3C & —iy) = —I—\Х V -1—у = XV у. Теорема 2.2.9. (Закон двойственности.) Пусть F(x\, хъ ..., xn) =fif^(x\t х2,..., хп\ fiixu х2, ..., *„), ...,/m(*i, дг2, ..., *„))• 7Ъгдя F*(*b х2, ..., *я) =f(f\\x\, хъ ..., *я), /2(*ь*2, ...,*„), ...,/т(*ь*2, ...,*я)), где F ,fjx ,/2, ...,/т —функции, двойственные функциям F,/,/i,/2, ...,/т соответственно. Доказательство следует из таких равенств: F\xu ...,*„) = -iF(-*i, ...,-*„) = = -Wi(-^b ...,^)/iN, ...,-*я)» ...,/«N, ...,-*„)) = = -]Я~1~/\ (™^Ь •••» -т*Я)» -1-1/2 (-т^Ь •••» -ЛЯ)» •••, -i-/w ("^Ь -.., -Ля)) = = iKlfl С*Ь ...,-^n), -/2 (*1, •••»^я), •••» -i/и С*Ь ...,*я)) = = /(/l C*h ---,Xn),f2 C*h ...,Xn), ...,/m (Хь ..., Хп)). Теорема доказана. Исходя из закона двойственности для констант 0 и 1, операций дизъюнкции и конъюнкции, а также отрицания, получаем, что в булевой алгебре функций выражение S*, двойственное выражению 5, является результатом одновременной замены в выражении S всех дизъюнкций на конъюнкции, всех конъюнкций на дизъюнкции, всех нулей на единицы и всех единиц на нули. Пользуясь понятием двойственного выражения, можно перейти от уже рассмотренного представления булевых функций в виде ДНФ к другому известному представлению — конъюнктивной нормальной форме (КНФ). При этом двойственным понятию элементарного произведения будет понятие элементарной дизъюнкции, двойственным понятию конституэнты единицы будет понятие конституэнты нуля. Алгебра Жегалкина Алгебра Жегалкина— это множество булевых функций, на котором определены такие операции: □ нульарная операция 1; □ бинарная операция конъюнкция; □ бинарная операция сумма по модулю два. Пользуясь операциями сложения по модулю два и единица, можно ввести константу 0, т. е. 1 + 1 = 0. Основными тождественными соотношениями данной алгебры являются такие соотношения: □ ж1 х & (у & z) = (х & у) & z\ х & у = у & х\
110 Часть I. Математические основы О ж2 х + (у + z) = (х + у) + zwc + у = у + jc; □ жЗ х + jc = 0; □ ж4 х + 0 = jc; □ ж5 *&(>> +z) = ;t&;y + jc&z. Операции отрицания и дизъюнкции в этой алгебре вводятся с помощью таких соотношений: —1* = л;+ 1; xvy = x&y + x + y. Пользуясь этими соотношениями, всякую СДНФ можно преобразовать в выражение, в котором отсутствуют операции отрицания и дизъюнкции. После этого, применяя законы ж1-ж5 и приводя подобные члены, получаем представление булевой функции в алгебре Жегалкина, которое называется полиномом Жегалкина. Для однозначности задания булевой функции полиномом Жегалкина пользуются так называемым каноническим полиномом. Каноническим полиномом называется конечная сумма таких попарно разных произведений переменных, где в одном произведении ни одна переменная не встречается больше одного раза. При этом к числу произведений относят произведения, состоящие как из одного сомножителя (отдельная переменная), так и из пустого множества сомножителей (константа 1). Пример 2.2.9 Выражения хлулг + хлг, у, 1, очевидно, являются каноническими полиномами, а выражения zajcaz, x az + z лх — нет, поскольку в первом из них повторяется множитель z, а в другом — слагаемые равны между собой. * Теорема 2.2.10. Всякая булева функция может быть представлена каноническим полиномом Жегалкина, причем это представление единственное с точностью до перестановки слагаемых и их сомножителей. Доказательство. Пусть Д*1, ;с2, ..., хп)— произвольная булева функция и #ь Д2, .., ат (т = 2п)— такая последовательность попарно разных наборов из области определения этой функции, что у любых двух наборов, стоящих подряд в этой последовательности, число единиц в другом либо такое же, как и в первом, либо на единицу больше. Множество, которое составляют первые к (1 < к < 2п) членов этой последовательности, обозначим G*. Построим такую последовательность F\, F2, ..., Fk канонических полиномов переменных хи *2» ...,*„, что значения Fk(x\, х2, ..., хп) и Дхь х2, ..., хп) совпадают на множестве G*, и полиномы Fk и Fk + \ либо совпадают, либо второй получен из первого путем добавления еще одного слагаемого. Если такая последовательность построена,
Глава 2. Основные понятия общей алгебры 111 то Fm(x\9 X2, ..., хп\ очевидно, будет представлять саму функцию f(xu x2, ..., хп). Выберем F\ как константу ДО, ..., 0). Предположим, что уже построены первые к (к < 2П) полиномов искомой последовательности. Возьмем набор а*-и, который различает между собой множества Gk и Gk +1, и сравним значения Fk (ак + О и flak+i). Если они совпадают, то в качестве Fk + \ может быть выбран полином Fk. Если же эти значения отличаются одно от другого, то строим произведение Пк+\, которое включает в качестве сомножителей те и только те переменные из jci, х2, ..., jc„, которые на наборе ак+\ дают единицу, и полагаем Fk+\=nk + \ + Fk. Для набора ак+\ значение исходной функции/и полинома Fk+1 совпадают по построению. Для наборов из Gk совпадение значений/и Fk+\ будет в силу того, что на них произведение Пк+\ будет превращаться в нуль. Действительно, поскольку всякий набор из Gk отличный от ак+\ и включает количество единиц не больше числа сомножителей в произведении Пк+и то для всякого такого набора хотя бы один сомножитель из Пк+1 будет равен нулю. Следовательно, существование канонического полинома, представляющего функцию Д*ь JC2, ..., хп), доказано. Покажем теперь единственность этого полинома. Пусть F\ и F2 — полиномы, которые представляют одну и ту ж функцию/и отличаются не только порядком пересчета слагаемых и сомножителей. Рассмотрим полином F = F\ + F2, в котором в соответствии с тождеством х + х = 0 выполняется приведение подобных слагаемых. Полином F в силу предположения о выборе F\ и F2 должен отличаться от константы 0, а с другой стороны, в силу того, что F\ и F2 представляют одну и ту же функцию, он должен на всех наборах из области определения превращаться в нуль. Но эти условия взаимно противоположные. Действительно, если полином F имеет слагаемое 1, то на наборе (0, 0, ..., 0) он будет отличным от 0, в противном случае выберем в F слагаемое из минимальным числом сомножителей и построим набор, на котором все слагаемые, кроме выбранного, превращаются в нуль. Теорема доказана. Из доказанной теоремы следует, что система булевых функций, состоящая из константы 1, конъюнкции и суммы по модулю два, как и рассмотренная выше система (см. вышеприведенный пример 2), функционально полна. Классы Поста. Рассмотрим теперь вопрос общего характера. Пусть задана произвольная система булевых функций. Каким условиям должна удовлетворять эта система, чтобы быть функционально полной. Эти условия называются условиями полноты. Пост, характеризуя условия полноты произвольной
112 Часть I. Математические основы системы булевых функций, виделил пять классов булевых функций, замкнутых относительно суперпозиции: □ функции, сохраняющие 0; □ функции, сохраняющие 1; □ функции, двойственные сами себе; □ линейные функции; □ монотонные функции. Функция flxu X2, ..., хп) называется функцией, сохраняющей 0, если ло,...,о) = о. Функция j{x\, JC2, ..., хп) называется функцией, сохраняющей 1, если Л1 1) = 1- Функция, двойственная сама себе, называется самодвойственной функцией. Функция называется линейной, если каждое элементарное произведение канонического полинома Жегалкина, который представляет эту функцию, имеет не больше одного сомножителя. Функция называется монотонной функцией, если из того, что она принимает значение 1 на некотором наборе а, следует, что она принимает значение 1 на всяком наборе Ь, который получается из набора а путем замены произвольного числа нулей на единицы. Замкнутость каждого из пяти классов Поста следует из определения функций, входящих в эти классы. Для функций, не являющихся образующими рассмотренных выше алгебр, их принадлежность к тому или иному классу Поста приводится в табл. 2.2.6. Таблица 2.2.6 Функции* v & -I + Сохраняющие 0 + Сохраняющие 1 + Самодвойственные - Линейные - Монотонные + *"+" означает, что функция принадлежит соответствующему классу Поста, а "-" — не принадлежит. Из табл. 2.2.6, в частности, видно, что каждый из пяти классов Поста является собственным подмножеством всего множества булевых функций. + + + +
Глава 2. Основные понятия общей алгебры 113 Теорема Поста о функциональной полноте булевых функций. Для того чтобы система булевых функций S была функционально полной над алфавитом булевых переменныхХ= {xj, X2, ..., хп}, необходимо и достаточно, чтобы эта система включала хотя бы одну функцию, не сохраняющую 0, хотя бы одну функцию, не сохраняющую 1, хотя бы одну несамодвойственную функцию, хотя бы одну нелинейную и хотя бы одну немонотонную функцию. Доказательство. Необходимость условий теоремы вытекает из того, что каждый из классов Поста является собственным подмножеством всего множества булевых функций. Для доказательства достаточности зафиксируем пять функций: О f\{xu •••> хп) (п > 1), не сохраняет 0; П fi{xu • • •»х„) (п > 1), не сохраняет 1; □ /з(*ь •••» хп) (п > 1), несамодвойственная; □ f*(xu ...,хп)(п>1), нелинейная; О /з(*ь •••> *п) (п > 1), немонотонная. Подчеркнем, что некоторые из этих функций могут совпадать. В силу следствия 2.2.5 достаточно показать, что из выбранных пяти функций строятся, например, конъюнкция и отрицание. Покажем, прежде всего, как построить константы 0 и 1 в такой алгебре. Подставляя в функцию/i переменную х, получаем функцию h(x) =/i(jc, jc, ..., jc), для которой по условию справедливо равенство й(0) = 1. Если окажется, что й(1)= 1, то h(x)— функция, тождественно равная 1. Подставляя ее вместо аргументов в функцию/г, получаем другую константу— 0. Если же таким путем не удается получить 0 и 1, то функция h(x) представляет собой отрицание. Лемма 2.2.1. Если система S включает несамодвойственную функцию и функцию отрицания, то среди ее суперпозиций существуют также обе константы — 0 и 1. Доказательство. Действительно, если fix\, ..., х„)— несамодвойственная функция, то существует такой набор (аь ..., ап) ее аргументов, что j{au ..., ап) =y(-iab ..., —\ап). Но тогда для /= 1, 2, ..., п, подставляя вместо переменной jc, переменную х, если а{■= 1, и ее отрицание -а, если а, = 0, получаем функцию /i(jc), которая независимо от значений переменной х будет принимать одно и то же значение, т. е. будет константой. Если эту константу теперь подставить в функцию отрицания, то получим другую константу. Лемма 2.2.2. Если система S включает немонотонную функцию и обе константы 0 и 1, то среди ее суперпозиций существует функция отрицания.
114 Часть I. Математические основы Доказательство. Пусть/(;сь ..., хп)— немонотонная функция. Тогда найдутся такие наборы а и а\ что функция f(a) = 1,/(я') = 0, и те компоненты, которыми эти наборы отличаются, в наборе а равны 0, а в наборе а' — 1. Нетрудно построить такую последовательность а = а\, а2, ..., ак = а\ что всякие два соседних набора в этой последовательности отличаются один от другого только по одному компоненту, равному 0 для первого из них и 1 — для другого. После этого рассмотрим последовательность значений /(я0=1, f(a2) = 0, ...,/(а*) = 0 и найдем в последовательности наборов такие два набора а% и а/+ь что /(я,) = 1 uf(ai+\) = 0. Пусть j— номер компонента, по которому отличаются эти наборы. Подставив в функцию j{x\, .•., хп) вместо переменной Xj переменную х, а вместо остальных переменных соответствующие им константы 0 и 1 из наборов cii и ai+\, получим функцию h(x)9 которая, очевидно, будет отрицанием. Для окончательного завершения леммы теперь необходимо показать, как можно сконструировать конъюнкцию х\ л х2. Для этого возьмем нелинейную функцию Д. Ее канонический полином включает хотя бы одно слагаемое, состоящее более чем из двух переменных (пусть для определенности это будут переменные х\ и х2). Пользуясь дистрибутивностью конъюнкции относительно сложения по модулю два, функцию Д можно представить в виде х\ & х2 & gi(*3, • • •, хп) + х\ & g2(x3, . •., хп) + х2 & £з(*з, • •.. хп) + g*(x3, ..., хп), где g\ тождественно не равно нулю. Подставляя соответствующим образом константы вместо переменных jc3, ..., хп, функцию f\ преобразуем к виду х\ & х2 + а & х\ + Ъ & х2 + с, где а, Ь, с — константы 0 или 1. Подставим теперь вместо х\ функцию х\ + Ъ (х\ + Ъ = хи если й = 0, или —ос\, если Ъ = 1) и вместо х2 — функцию х2 + а, получим функцию (х\ + Ь) 8с (х2 + а) + а 8с {х\ + b) + b & (х2 + а) + с = х\ & х2 + а & х\ + + b&x2 + a&b + a&x\+a&b + b&x2 + a&b + c = x\&x2 + (a&b + c). Если теперь константа а & Ъ + с = 0, то полученная функция есть искомая, если же а & Ъ + с = 1, то искомой функцией будет ее отрицание. Лемма доказана. 2.2.10. Структуры Алгебра G = (А, £1) е K(Q, Eq) называется структурой, если Q состоит из двух бинарных операций v (верхняя грань) и л (нижняя грань), а \/я, Ъ, с е А справедливы такие соотношения: □ Claw а = я ла = а — идемпотентность; □ С2 avb = bv а, алЬ = Ьла — коммутативность;
Глава 2. Основные понятия общей алгебры 115 □ СЗ a v (b v с) = (a v b) v с,я л (b л с) = (а л fc) л с — ассоциативность; □ С4 a v (а л 6) = а, а л (a v 6) = а — поглощение. Если на множестве^ задана лишь операция v (л), то алгебра G(A, Q) называется верхней {нижней) полуструктурой. Если алгебра является полуструктурой, то на ее носителях можно задать отношение частичного порядка, которое имеет то свойство, что для любых элементов a, bs А существует элемент с е А такой, что а<с и Ь<с (а>с и Ъ > с) (сами элементы аи b могут быть такими, что не сравниваются между собой). Действительно, пусть G = (A, Q) — верхняя полуструктура. Определим для любых а, Ъ G А: а < Ъ <=> a v b = Ъ. Покажем, что < — частичный порядок на А. Для этого следует показать, что < рефлексивное, антисимметричное и транзитивное отношение. Рефлексивность. a<at=>ava = a, но последнее есть С1. Антисимметричность. а<Ъ и b<a=> a = b\ a<bt=>avb = b, b<a<^> bv а-а и в силу коммутативности операции v C2 заключаем, что а = Ъ. Транзитивность. а<ЬиЬ<с=>а<с: a<b<=>avb = b, b<c<=>bvc = c=$(avb)vc = av(bvc) = avc = c=>avc = c, откуда следует, что а < с. Таким образом, структуры можно считать частично упорядоченными множествами. Если G — структура, то из С1-С4 непосредственно вытекают такие свойства. Утверждение 2.2.6. Для любых элементов а, Ь, с из G справедливы такие соотношения: 1. а лЬ<а; 2. а < Ъ тогда и только тогда, когда а л Ъ - а\ 3. если a<buc<d,moavc<bvduaAc<bAd; 4. (а л с) v (Ь л с) < с. Доказательство. Соотношение 1 следует непосредственно из С4. Действительно, поскольку a v (а л Ь) = а, то по определению отношения < имеем алЬ<а. Докажем 2. Если а<Ь, то я v b-b и тогда из С4 получаем а л (a v Ь) = а л b = a. Наоборот, если а лЬ = а, и поскольку b v (b л а) = b v a = b, то это значит, что а < Ь.
116 Часть I. Математические основы Докажем 3. Если a < Ъ и с < d, то это значит, что avb = b и cv d = d. Но тогда, пользуясь СЗ, получаем (av c)v (bv d) = (av b)v (cv d) = bv d, т. e. (av c)<(bv d). Аналогично получаем (a ас) a (b Ad) = (a ab) а (с Ad)-a ас, т. е. (а л с) < (Ь л d) на основе (2). Докажем 4. На основе 1 имеем а лс<с и Ъ лс<с. Но тогда (а л с) v (Ь л с) < с v с = с на основе 3 и С1. Утверждение доказано. Другие полезные неравенства для элементов структуры приведены в упражнениях в конце раздела (см. упр. 20). Часто можно встретить и такое определение структуры. Множество А, частично упорядоченное отношением <, называется структурой, если она удовлетворяет таким условиям: □ (i) для любых элементов a, b из А существует элемент с = а лЬ — пересечение элементов а и Ъ такое, что с<аи с<Ь, причем если с' — некоторый элемент из А, такой что с < а и с < Ь,то с < с\ П (ii) для любых элементов а, Ъ из А существует элемент d = a v b — объединение элементов а и Ь, такой, что d > а и d > b, причем если d' — некоторый элемент из А, такой, что d' > а и d' > b, то d! > d. Из этого определения вытекает, что пересечение и объединение в структуре А определены однозначно, т. е. всякая структура является универсальной алгеброй с двумя бинарными операциями л и v. Пусть a<b, a, bsA. Рассмотрим, чему равны однозначно определенные элементы aAbnavb. В силу рефлексивности отношения частичного порядка < таким элементом есть элемент а, если же а = а л Ь, то а < а и а < Ь. Аналогично находим, что av b = b. Следовательно, отношение < может быть задано с помощью одной из этих операций. Справедливо такое утверждение. Утверждение 2.2.7. Если А - структура, определенная с помощью условий (i), (ii), то алгебра G = (А, {л, v}) удовлетворяет законам С1-С4 и наоборот, если G = (А, {л, v}) — алгебра, в которой выполняются законы С1-С4, то множество А есть структура в соответствии с пунктами (i), (ii) ее определения. Доказательство. Законы С1 и С2 в структуре А очевидные. Рассмотрим СЗ. Покажем сначала, что когда a<bwc<d,4oa/\c<b/\d\\avc<bvd. Действительно, a/\c = (a/\b)/\(c/\d)<a/\b<b, aAc = (aAb)A(cAd)<cAd<d.
Глава 2. Основные понятия общей алгебры 117 Но тогда, если (Г = Ъ л d, то d' < b, d' < d и в силу условия (i) a л с < d\ т. е. а ас<Ь Ad. Аналогично доказывается и второе неравенство. Теперь, пользуясь доказанными неравенствами, получим (а л Ь) л с < а л Ъ < а, (а л fe) л с < а л Ъ < Ъ, (а л Ь) л с < с, отсюда (а л 6) л с < а л (Z? л с). Аналогично из а л (Ь л с) < а, а л (Ь л с) < b л с < Ь, ал(Ьлс)<Ьлс<с получаем а л (Ь л с) < (а л Ь) л с. В силу антисимметричности отношения < имеем а л (Ь л с) = (а л Ь) л с. Рассмотрим второй из законов С4. В силу условия (i) а л (a v b) < а. Но поскольку а<а и a<av Ъ в силу условия (ii), то а = а л а < а л (a v b), т. е., второй закон поглощения выполняется. Другие детали доказательства предлагаются читателю в качестве простых упражнений. Утверждение доказано. Если в структуре существуют такие элементы: 0 (нуль) и 1 (единица), такие, что для всякого элемента а структуры G выполняются тождества av 0 = а л 1=а, а л 0 = 0, av 1 = 1, то структура G называется структурой соответственно с нулем и единицей. Конкретным примером структуры может служить булеан B(U) некоторого множества U. Частичный порядок на B(U) вводится с помощью операции включения для подмножеств, а роль операций v и л играют операции и и п. Заметим, что множество B{U) будет структурой с нулем и единицей, роль которых выполняют соответственно пустое множество 0 и все множество U. Поскольку структура есть частично упорядоченное множество, то можно рассматривать последовательности элементов #ь аг, ..., ап, ... из G, таких, что а\ < а2 < ... < ап < ... (щ > а2 > ... > ап > ...). (2.2.5) Последовательность (2.2.5) называется строго возрастающей {строго убывающей) или просто возрастающей (убывающей) цепью.
118 Часть I. Математические основы Структура G = (А, £2) называется структурой с условием обрыва убывающих {возрастающих) цепей, когда всякая возрастающая (убывающая) цепь обрывается на конечном индексе. Другими словами, для всякой последовательности (2.2.5) существует такой индекс л, начиная с которого эта цепь стабилизируется, т. е. ап = ап +1 = ... . Структуры с условием обрыва убывающих цепей являются алгебрами, имеющими ряд интересных свойств. Теорема 2.2.11. Если алгебра G = (A, Q)— структура с условием обрыва убывающих цепей, то всякое непустое подмноэюество мноэюества А имеет хотя бы один минимальный в этом подмножестве элемент. Доказательство. Предположим противное: существует некоторое непустое подмножество А\ множества А, не имеющее минимальных элементов. Отметим по одному элементу в каждом непустом подмножестве множества Ли пользуясь аксиомой выбора, а потом построим последовательность элементов аиа2, ...,ал, ... . Первым элементом берем элемент а\, отмеченный в множестве А\, другим берем элемент #2, строго меньший а\ в множестве А\, т.е. аг£ А\\{а\], аг<а\ и т. д. В силу предположения об отсутствии минимального элемента в множестве А\9 множество А\ \ {а{\ непусто, множество А\ \ {яь аг) непусто и т. д. Построенная нами последовательность — это бесконечная строго убывающая цепь, и поскольку эта цепь лежит в множестве А, то алгебра G не может быть структурой с условием обрыва убывающих цепей. Теорема доказана. Теорема 2.2.12. Если структура G = (А, £1) имеет то свойство, что всякое непустое подмноэюество из А имеет хотя бы один минимальный элемент, то в структуре G выполняется условие индуктивности. Доказательство. Предположим, что в множестве А существует некоторое подмножество элементов Аи такое, что элементы из А\ не удовлетворяют свойству Р. В силу существования минимальных элементов, подмножество А\ имеет хотя бы один минимальный элемент а. Элемент а не может быть минимальным для всего множества А, ибо в противоположном случае будет ложной посылка 1 условия индуктивности {см. разд. 1.1). Поскольку для всех элементов с < а условие Р истинно, то согласно второй посылке условие индуктивности Р{а) тоже должно быть истинным. Полученное противоречие доказывает теорему. Благодаря тому, что отношение частичного порядка двойственное, все сказанное остается справедливым и для структур с условием обрыва возрастающих цепей.
Глава 2. Основные понятия общей алгебры 119 Структура G называется дистрибутивной, если Eq, кроме законов С1-С4, включает закон дистрибутивности, т. е. для любых ее элементов а, Ьу с выполняется соотношение С5 (я v Ь) л с = (а л с) v (а л с). Отметим, что не все структуры дистрибутивные, равно как и не все структуры удовлетворяют условию максимальности (минимальности) и не обязательно должны иметь 0 или 1, или и то и другое вместе. Структура G называется дедекиндовой или модулярной, если, кроме законов С1-С4 для любых ее элементов я, Ъ, с, таких, что а < с, выполняется модулярный закон: МЗ (a v Ь) а с = a v (b а с). Сделаем несколько замечаний относительно дистрибутивных и дедекиндо- вых структур. Для дистрибутивных структур справедлива такая теорема. Теорема 2.2.13. Структура G имеет такие эквивалентные свойства: 1. G дистрибутивная; 2. (а а Ь) v с = (a v с) л (b v с) для любых а, Ь, с из G; 3. (a a b) v (Ь а с) v (с а а) = (a v b) л (b v с) л (с v а) для любых а, Ъу с из G; 4. если для некоторого с из G имеет место равенство av с = bv с и а а с = Ъ а с, то а = Ъ. Доказательство. (1) => (2). Имеем (a v с) a (b v с) = ((a v с) a b) v с = (a a b) v (Ь а с) v с = (a a b) v с. Следовательно, выполняется 2. (2) => (3). Действительно, (a a b) v (Ь а с) v (с а а) = (a v (b л с) v (с л а)) л (b v (fe л с) v (с л а)) = = (av (b а с)) a (b v (с л а)) = (fe v а) л (с v а) л (fe v с) л (Ь л а) = =(а v b) A(bv с) a(cv a). (3) => (1). Пусть G соответствует условию 3, а, Ь, с е С и а < с. Тогда (а л fe) v (Ь а с) = (a a b) v (Ь а с) v (с л а) = (a v fe) л (b v с) л (с v a) = = с л (a v fe) v (b v с) = с л (a v fc). Следовательно, в G выполняется модулярный закон. Далее, положим и = (a a b) v (Ь а с) v (с a a), v = (a v fe) л ф v с) л (с v a). 5 Зак. 3427
120 Часть I. Математические основы По условию u = v и, значит, с а и-с л v. Поскольку (я л с) v (ft л с) < с, то, учитывая уже доказанный модулярный закон, получаем с л и = с л ((я л ft) v (ft л с) v (с л а)) = = с л ((ft л с) v (а л с)) v (а л Ъ л с) = (а л с) v (ft л с). с л v = с л ((а v ft) л (ft v с) л (с v а)) = с л (а v ft), что и следовало доказать. (1) => (4). Если av c = bv сиа лс = Ь лс,то, применяя (1), получаем а = а л (a v с) = а л (ft v с) = (а л ft) v (а л с) = = (я л ft) v (ft л с) = (я v с) л ft = (ft v с) л ft = ft. (4) => (3). Предлагается читателю в качестве упражнения. Теорема доказана. Условие (3) теоремы 2.2.13 показывает, что частично упорядоченное множество относительно двойственного отношения частичного порядка тоже будет дистрибутивной структурой. Следовательно, для дистрибутивных структур применим принцип двойственности (соответственно которому всякое утверждение остается справедливым, если в нем заменить знак < на ему двойственный >). Рассмотрим теперь дедекиндовы структуры. Теорема 2.2.14. Структура G имеет такие эквивалентные свойства: 1. G—дедекиндова структура', 2. а а ((а л ft) v с) = (а л ft) v (а л с) для произвольных элементов a, ft, с из G; 3. если а>Ъ, и для некоторого с из G имеют место равенства aw с = ft v с и а ас = ft л с, то а-Ъ. Доказательство. Пусть G — дедекиндова структура, т. е. имеет свойство 1. Тогда для произвольных a,b,cG G имеем а л ft < а и, значит, a a ((a a ft) v с) = ((а л ft) v с) л а = (а л ft) v (а л с). Если структура G дедекиндова и выполнены условия 3, то а = а л (a v с) = а л (ft v с) = ft v (а л с) = ft v (ft л с) = ft. Таким образом, из справедливости условия 1 вытекают условия 2 и 3. Если выполнено 2 и а < с, то имеем (a v ft) л с = ((а л с) v ft) л с = (а л с) v (ft л с) = а v (ft л с), т. е. из условия 2 вытекает 1.
Глава 2. Основные понятия общей алгебры 121 Наконец, пусть имеет место 3. Если a,b,ce G и a < с, то a v Ъ < (a v Ь) л (с v b) < a v с, b л с < (a v (Ь л с)) л Ъ < (с v (b л с)) л b = Ъ л с, отсюда ((flvi?)Ac)vfc = avft, (a v (Ь л с)) v Ъ = a v Ъ, (a v b) л с л b = b л с, (a v (Ь а с)) a b = b а с. Поскольку (a v b) л с > a v (ft л с), то, применяя равенства из условия (3), получаем (a v Ь) а с = a v (b а с). Теорема доказана. Теорема 2.2.15. (Закон сокращения.) Если а,Ъ, с— элементы дедекиндовой структуры и {a v b) л с = 0, то а л (b v с) = а л Ь. Доказательство предлагается в качестве простого упражнения. На завершение заметим, что закон, двойственный закону модулярности, имеет вид (a a b) v с = a v (Ь л с), где я > с, т. е. снова является модулярным законом. Таким образом, структура, двойственная дедекиндовой структуре, сама будет дедекиндовой структурой. Следовательно, дедекиндовы структуры удовлетворяют принципу двойственности. 2.2.11. Многоосновные алгебры. Алгебра алгоритмов Глушкова Кроме алгебр с одним основным множеством, приходится рассматривать алгебры, заданные на нескольких разных носителях. Такие алгебры называют многоосновными или многосортными. Пусть U = {Al9 ie/}, где А,— некоторые множества, а /— множества сортов — имен соответствующих А,. Пару U = {Л„ i e /} называют комплектом или набором. В случае односортной алгебры каждой операции соответствует ее арность, а в многосортной алгебре с каждой операцией связывают ее тип. Типом операциии (О называют последовательность элементов из / вида s = О'ь *2, •••, in\ j)9 а операцией (О типу s на комплекте U = {Л„ i e 1} — отображение (0:Д хА; х...хА( => Aj. Если п = 0, то тип s имеет вид s = (j), и тогда о — нульарная операция, выделяющая элемент в множестве Aj.
122 Часть I. Математические основы Многоосновной алгеброй называется пара G = (£/, £2), где U— некоторый комплект, а £2 — сигнатура операций, определенных на комплекте U. На многоосновные алгебры легко переносятся рассмотренные выше определения и конструкции теории универсальных алгебр. Пусть U = {А„ i е /}, U' = {А,\ ie /} — два комплекта. Комплект £/' включается в комплект U (£/' с U), если А/ с Л, для любого / из /. Можно говорить также и о теоретико-множественных операциях над комплектами, которые сводятся к операциям над соответствующими компонентами множеств с одним и тем же именем. Например, £/и£/' = {Л,иЛА/е /}, где(/ = {A,, i e /} и t/={A/',ie /}. Если U' с £/, то алгебра G' = (U\ £2) называется подалгеброй алгебры G = ({/, £2), когда комплект £/' замкнут относительно любой операции из £2. Многоосновные алгебры G = (£/, й)иС = (£/, £2') называются алгебрами одного и того же типа, если они имеют одну и ту же сигнатуру, т. е. £2 = £2', и комплекты с одними и теми же именами, т. е. U = { А,-, / е / } i £/' = { Л/, / е / }. Отображение / алгебры G = (£/, £2) в алгебру G' = (£/', £2) одного с ней типа называется гомоморфизмом, если для любой операции О) е £2 типа 5 = (*'ь /г* ..., in'J) и любых элементов а\ е Aiy ..., а, е Д имеет место равенство Да)(аья2, ...,^)) = 0)(Да1),Ла2), ...,М,)), где/: Л, => А/ для всех / из /. Если для каждого / из /отображение/взаимно однозначное, то оно называется изоморфизмом алгебр G и G'. Если £/' = { Л/, i е / } — произвольный подкомплект комплекта £/, то пересечение всех подалгебр алгебры G = (£/, £2) с непустыми Л„ i e /, которые включают £/', является подалгеброй алгебры G, порожденной комплектом £/'. Если £/' порождает £/, то это обозначают {£/'} = U. В случае многоосновных алгебр, как и в случае одноосновных алгебр, определяют множество термов. Пусть £2 — некоторое множество многосортных операций, аX = {Х„ i е /} — некоторый комплект. Множество многосортных термов определяется индуктивно таким образом: □ термами являются все элементы из X, и все нульарные символы операций типа (/); □ если (О есть операция типа s = (i,j, ..., k\ I) и rb ti, ..., tn — термы типа i,j, ...,k соответственно, то (0(tu t2> ..., t„) — терм типа /; □ других термов нет.
Глава 2. Основные понятия общей алгебры 123 Многоосновную алгебру многосортных термов называют абсолютно свободной многоосновной алгеброй термов. Важным примером многоосновной алгебры есть алгебра алгоритмов, предложенная В. М. Глушковым в 1965 году. Перейдем к рассмотрению основных понятий алгебры алгоритмов. Пусть В — некоторое множество, которое будем называть информационной средой. Свяжем с множеством В две алгебры: ОП и УС, которые будем называть алгебрами соответственно операторов и условий. Элементами алгебры ОП являются (частичные) преобразования множества В, называемые операторами, а элементами алгебры УС — (частичные) предикаты, определенные на множестве В и называемые условиями. Кроме обычной операции умножения (суперпозиции) отображений в алгебре ОП, определяются еще две операции: а-дизъюнкция и а-итерация операторов, связывающих алгебры ОП и УС. Результатом а-дизъюнкции (Pv Q) двух операторов Р и Q будет такой опе- а ратор /?, который для всякого be В совпадает с Р(Ь), когда а(Ь) = 1, или с Q(b), когда а(Ь) = 0, или неопределен, когда а(Ь) неопределено. Результатом а-итерации { Р] оператора Р есть оператор R такой, что Vbe В R(b) а равняется первому из состояний памяти в ряду b, P(b), P (Ь), ..., Рп(Ь), ..., для которого выполняется условие а. Если такого состояния нет, то результат применения оператора R к состоянию b считается неопределенным. Операциями в алгебре условий УС служат операции дизъюнкции (v), конъюнкции (л), отрицания (—i) и (левого) умножения условия на операторы из ОП. Для первых трех операций пояснения требуют лишь те ситуации, когда вместе с обычными значениями условий — 0 и 1 встречаются неопределенные значения н. Правила выполнения операций в этом случае задаются такими соотношениями: 1 л н = н л 1 = н, Олн = нлО = 0, Н ЛН = Н, —\Н = Н.
124 Часть I. Математические основы Заметим, что в соответствии с приведенными соотношениями выражение н v —\н равно н, а не 1, поскольку н v —м =;/ v н = н. Пусть u е УС, Р е ОП — произвольные условие и оператор, Ъ е В. Тогда Ри есть условие и такое, что и\Ъ) = 1 <=> и(Р(Ь)) = 1, и'(Ь) = 0 <=> и(Р(Ь)) = 0 и м'(Ь) = н, если Р(Ь) или и(Р(Ь)) неопределено. Если в алгебре операторов и условий зафиксировать некоторые системы образующих (базисы), то элементы каждой из этих алгебр можно задавать выражениями, состоящими из образующих и символов операций системы Z = (On, УС), описанных выше. Такие выражения называются регулярными, а сама система Z = (ОП, УС) — алгеброй алгоритмов. В частности, алгебра алгоритмов позволяет представлять программы в виде выражений алгебры алгоритмов и проводить над программами формальные преобразования. Эти преобразования базируются, прежде всего, на тождественных и квазитождественных соотношениях алгебры алгоритмов и некоторых других соотношениях. Тождественные соотношения алгебры алгоритмов — это соотношения, выполняемые для всех операторов и условий независимо от состояний информационной среды В. Квазитождественными называются соотношения, выполняемые при некоторых требованиях, налагаемых на условия и операторы, которые входят в их запись, независимо от состояния информационной среды В. Пример 2.2.10. Тождества алгебры алгоритмов □ (Pv0=-( QvP); □ P(QvR) = ( PQvPR); U -iW □ (QPvRP) = (QvR)P; U U О ((Pv0vtf)= ( Pv ( QvR)); и и u&u u&-iu П {e} = e,{{P}} = {P}. и uu и Пример 2.2.11. Квазитождества алгебры алгоритмов □ Pu=u=*(PQvPR) = P(QvR); и и П Pu = u,PQ = QP=*P{Q) = {Q)P; и и П Pu = u,PQ = QP,P2 = P=^{PQ) = {QP) = (evP){Q}.i и и и и
Глава 2. Основные понятия общей алгебры 125 2.3. Полные структуры и полукольца В этом кратком разделе рассматриваются алгебраические структуры, не являющиеся универсальными алгебрами в том смысле, в котором они определены в разд. 2.1. Ряд алгебр обладает таким свойством, что пересечение, объединение или сумма определены в них не только для двух (и потому в силу закона ассоциативности — для произвольного конечного числа элементов), но и для бесконечного (счетного) числа элементов. Такие алгебры не являются универсальными, но они существуют и имеют применения. Рассмотрим две из таких алгебр — полные структуры и полукольца. 2.3.1. Полные структуры Пусть А — множество, частично упорядоченное отношением частичного порядка <. Множество А называется полной структурой, если для произвольного непустого подмножества В множества А в множестве А существуют такие элементы с и d, для которых выполняются условия: □ для всех элементов ае В с<а, и если существует некоторый элемент с\ такой что с' < а для всех а из А, то с < с; □ для всех элементов ае В d>a9 и если существует некоторый элемент d\ такой что d' > а для всех au3A,Tod'>d. Однозначно определенные элементы с и d называются соответственно пересечением и объединением элементов подмножества В, и их записывают так: с = г\В (или с= п а, или с= r\ai9 если а, пробегает все элементы множест- аеВ /е/ ва В), d = ufi (или d = П а, или d = П щ). аеВ /е/ Очевидно, что бесконечная полная структура не является универсальной алгеброй, но ясно, что она будет структурой. Кроме того, очевидно также, что полная структура имеет нуль и единицу — это будут соответственно элементы kjA и г\А. Теорема 2.3.1. Если частично упорядоченное множество А имеет единищ и в нем существует пересечение для любых непустых его подмножеств, то А есть полная структура. Доказательство. Необходимо доказать, что произвольное непустое подмножество В множества А имеет объединение. Пусть С — множество всех таких элементов Ъ из А, что Ъ > а для всех а из В. Множество С непусто, поскольку 1 е С, а значит, существует d = пС. Покажем, что d = kjB.
126 Часть I. Математические основы Действительно, если a e В, то для каждого Ъ из С a < b и, значит, a < d. С другой стороны, если элемент s е А такой, что для любого а е В s > а, то 5 G С и тогда d < s. Теорема доказана. Пусть А и А' — частично упорядоченные множества отношением частичного порядка < и (р: А —> А' — некоторое отображение множества А в множество А\ Отображение ф называется изотоннным, если из того, что a < b, вытекает ф(а) < ф(&). Элемент a e А называется неподвижной точкой изотонного отображения ф множества Л в себя, если ф(я) = а. Теорема 2.3.2. (о неподвижной точке). Если ф — изотопное отображение полной структуры А в себя, т. е. ф: А —>А, то (р(а) = а для некоторого а из А. Доказательство. Пусть В— множество всех таких элементов s из А, что s < ф(5). Ясно, что О G В, поскольку А — полная структура и, значит, В*0. Тогда существует а = глВ, причем для всякого s е В имеем ф(а) > ф($) > s в силу изотонности отображения ф. Отсюда вытекает, что ф(я) > а. Но тогда ф(ф(я)) > ф(я), откуда имеем, что ф(а) е В и, значит, ф(я) < а. Таким образом, а < ф(а) < а, т. е. ф(а) = а, что и следовало доказать. К сожалению, теорема, обратная теореме о неподвижной точке, не имеет места, как показывает такой простой пример. Пусть А = {а, Ь, с] — трехэлементное частично упорядоченное множество, где а<Ь и Ь<с. Очевидно, что данное множество не есть полная структура, но вместе с тем всякое изотонное отображение А в А имеет неподвижную точку. Пример. 2.3.1. Полные структуры □ Структура B(U) всех подмножеств произвольного множества U является полной структурой. □ Структура всех подалгебр любой алгебры G есть полная структура. * 2.3.2. Замкнутые полукольца Пусть на некотором непустом множестве А задана сигнатура операций Q, включающая две бинарные операции: сложение "+" и умножение "•", а также две нульарные операции: 0 и 1. Данные операции имеют такие свойства. 1. х + (у + z) = (x + y) = z — ассоциативность. 2. х + у = у + х — коммутативность. 3. х + х = х — идемпотентность.
Глава 2. Основные понятия общей алгебры 127 4. х + 0 = 0 + х = х. 5. х • (у • z) = (х • у) • z — ассоциативность. 6. х • О = 0 • х = 0. 7. х • 1 = 1 • х = х. 8. *-(y + z) = Jc-y + jc«z — дистрибутивность. 9. (у + z) • х = у • х + z • х. 10. счетная сумма вида ао + tfi + #2 + ••• существует, единственная и принадлежит множеству А. 11. операция умножения дистрибутивна относительно бесконечных счетных сумм, т. е. +а2 'bj + я2 -^2 + —+ 0з '^1 +аз '^2 + ••• • Эта алгебра применяется при вычислении значений достаточно важной унарной операции замыкания, которую в полукольцах обозначают "*". Результатом применения этой операции к элементу а есть элемент вида оо а = 2^а , 1=0 где а = 1, я1 =а,а' = а • а~ . Пример 2.3.2 Нетрудно убедиться, что приведенные ниже алгебры являются полукольцами. □ G = ({0, 1}, {v, л, 0, 1}), где операции v и л задаются таблицами Л 0 И 0 1 0 0 0 1 V 0 И 0 1 0 1 1 1 Свойства 1-8 легко проверить. Что же касается свойств 9 и 10, то следует отметить, что V ai=0<=>(\/iGN)ai=0 , i=0 V a:=l&(3ieN)a:=l ; i=0 □ G2 = (D+ u {0}, {min, +, ~, 0}), где D+ = {x e D | jc > 0}, a min(a, b) — это меньшее из чисел а и Ъ. Роль мультипликативной единицы относительно
128 Часть I. Математические основы операции + играет 0, а роль аддитивной единицы относительно операции min — ©о. □ Пусть F(X) — свободный моноид слов в некотором алфавите X, и е — пустое слово. Тогда Сз = (F(X), {u, •, 0, {е}})— полукольцо, где и — объединение множества слов, операция умножения множеств L и V определяется так: L-L'={pq\pe L,qe L'}, apq — слово, полученное в результате операции конкатенации. Относительно законов 9 и 10 необходимо заметить, что оо ре U А: <=> ре Aj для некоторого / из N. □ Алгебра d = ({0, 1},{+,-, 0, 1}), где операции + и • задаются таблицами: 0 и 0 1 0 0 0 1 + 0 и 0 1 0 1 1 0 не является замкнутым полукольцом, поскольку операция + не удовлетворяет закону идемпотентности. Для такой алгебры операция замыкания не имеет смысла, потому что l + l + l + l + .... + l + ...=(l + l) + (l + l)+...+(l + l)+...=Of и в то же время l + l + l + l + ....+ l + ... = l+(l + l) + (l + l) + ...+(l + l) + ... = lf а это означает, что бесконечная счетная сумма неопределена. * * 2 Если G = (A9 Q)— замкнутое полукольцо и аеА, то а =1+а + а +... . Свойство 9 гарантирует, что a G А, а из 9 и 10 вытекает, что 0=1=1, а также, что а = 1 + а • а . Например, в полукольцах, приведенных выше в качестве примеров 2.3.2, имеем: □ а = 1 для а - 1 и для а = 0; □ а = 0 для любого а из А\ □ L*= {e} uLuL2ut3u ... = {е} u {p\Pi-.. Pk\puPi, .-.,Pk£ L,k> 1} для всех L из F(X). В частности, если L = {а, Ь}, то L* = {е} и {a, b] u {aa, ab, ba.bb) и {aaa.aab, abb, aba, ...}... .
Глава 2. Основные понятия общей алгебры 129 2.4. Контрольные вопросы □ Какое отношение называется отношением конгруэнтности? □ Дайте определение подалгебры алгебры. □ Какое наибольшее число подалгебр может иметь алгебра, состоящая из четырех элементов? □ Что такое абсолютно свободная алгебра? □ Будет ли конечной алгебра термов, у которой Х= {х, у, а, Ь} и F = {+, -, *, /}? □ Дайте определения гомоморфизма (изоморфизма) векторных пространств. Я Всякая ли группа будет полугруппой? □ Какая разница между кольцом и полем? □ Постройте изоморфизм между полугруппами G = {е, а, а2, я3, ...} и N, где N — множество натуральных чисел с основной операцией сложения, а основной операцией на G является умножение (ctd = ak + 1). П Приведите пример кольца с делителями нуля. □ Объясните, почему полукольцо не является универсальной алгеброй. □ Приведите пример полной структуры. 2.5. Задачи и упражнения 1. Приведите доказательство утверждения 2.1.2. 2. Докажите, что в группе единичный элемент единственный, и что всякий элемент группы имеет единственный обратный элемент. 3. Докажите, что гомоморфный образ полугруппы, группы, кольца является соответственно полугруппой, группой, кольцом. 4. Докажите, что всякая ненулевая подгруппа аддитивной циклической группы сама является циклической группой. 5. Докажите, что всякая конечная группа, состоящая из п элементов, изоморфна симметричной группе подстановок некоторого множества М из п элементов. 6. Сформулируйте и докажите теорему о гомоморфизме для полугрупп, групп, колец. 7. Может ли свободная группа иметь абелеву подгруппу? Приведите пример. 8. Докажите, что для слов, которые составляют множество элементов свободной группы, выполняется закон ассоциативности.
130 Часть I. Математические основы 9. Докажите, что конечная полугруппа с единицей и законом (левого или правого) сокращения является группой. 10. Докажите, что подгруппа Н группы G индекса 2 будет нормальным делителем группы G. 11. Доопределите таблицу сложения GN5: + 0 1 2 3 U 0 0 1 2 3 4 1 1 3 4 2 0 2 2 4 3 3 C4J 4 4 0 12. Объясните, почему нельзя корректно доопределить таблицу сложения + 0 1 2 3 4 |б 0 0 1 2 3 4 5 1 1 0 3 5 2 4 2 2 3 3 3 5 4 4 2 5 5 4 (чтобы убедиться, что данное определение некорректно, найдите, чему равно 1 + 3). 13. Покажите, что когда бинарным отношениям R и R\ соответствуют матрицы A(R) и A(R\)9 то отношению R * R\ соответствует матрица A(R) • A(R\). Какие полезные свойства можно получить из этого? 14. Покажите, что порядок симметрической группы и-й степени равняется п\. 15. Докажите, что ядро ker(h) гомоморфизма h группы G в группу G является нормальным делителем группы G. 16. Будет ли гомоморфизмом отображение h из примера гомоморфизма абе- левых групп, если его задать так: fl, если п нечетное, Кп) = { 1-1, если п четное.
Глава 2. Основные понятия общей алгебры 131 17. Приведите доказательство теоремы 2.2.3. 18. Найдите кольцо, заданное приведенной ниже таблицей, где элемент 1 играет роль единицы кольца + о 1 2 3 4 5 0 0 1 2 3 4 5 1 1 3 0 5 2 4 2 2 0 3 3 5 4 4 2 5 5 4 19. Постройте кольцо для: • "троичной" арифметики (вычисления по модулю 3); + 0 1 2 0 0 1 2 1 1 1 0 2 2 0 1 • "пятеричной" арифметики; + 0 1 2 3 4 0 0 1 2 3 4 1 1 2 3 4 0 2 2 3 4 0 1 3 3 4 0 1 2 4 4 0 1 ■ 2 3 20. Докажите, что для любых элементов некоторой структуры G имеют место такие свойства: • из а<Ъис<Ъ следует av c<b\ • из а < Ъ следует, что для любого с из G a v с < Ъ v с; • из а<Ъиа<с следует а<Ъ л с;
132 Часть I. Математические основы • из a < Ь следует, что для любого с mG a лс<Ь лс\ • a v (b л с) < (a v b) л (a v с); • а л (Ь v с) > (а л Ь) v (а л с); • из а < Ь следует а v (Ь л с) < {a v Ь) л с. 21. Докажите, что все возможные бинарные отношения, заданные на некотором множестве А и упорядоченные относительно включения множеств, образуют полную структуру. 22. Будут ли полными структурами относительно включения рефлексивные, симметричные, антисимметричные, транзитивные отношения, заданные на некотором непустом множестве Л? 23. Докажите, что всякая цепь является структурой.
Глава 3 Элементы теории алгоритмов и математической логики В данном разделе рассматриваются понятия алгоритма и алгоритмической системы, а также основные (классические) исчисления формальной математической логики — исчисление высказываний и исчисление предикатов первого порядка. На примере исчисления высказываний рассматриваются методы доказательства теорем (вывод формул исчисления высказываний), которые затем переносятся на исчисление предикатов. В конце раздела приводится классификация логик, которая демонстрирует выразительность того или иного логического исчисления. 3.1. Понятие алгоритма и алгоритмической системы В этом разделе мы рассмотрим понятие алгоритма и связанные с ним основные алгоритмические системы. 3.1.1. Интуитивное понятие алгоритма Интуитивное понятие алгоритма включает в себя несколько общих свойств, которые ясно вырисовываются из предыдущих примеров алгоритмов построения ДНФ и КНФ, и часто считаются характерными для понятия алгоритма. □ Алгоритм — это процесс последовательного построения величин, который протекает в дискретном времени таким образом, что в начальный момент задается исходное конечное множество величин, а в каждый следующий система величин находится по полностью определенному закону (программе) из системы величин, которые были в предыдущий момент времени {дискретность алгоритма). □ Система величин, которая получается в какой-то отличный от начального момента времени, однозначно определяется системой величин, полученных в предыдущие моменты времени {детерминированность алгоритма).
134 Часть I. Математические основы □ Закон получения последующих систем величин из предыдущих должен быть простым и локальным (элементарность шагов алгоритма). П Если способ получения следующей величины из какой-нибудь заданной не дает результата, то следует указать, что считать результатом алгоритма (направленность алгоритма). О Начальная система величин может выбираться из некоторого потенциально бесконечного множества (массовость алгоритма). Понятие алгоритма, в некоторой мере определенное пунктами 1-5, конечно, не строгое: в формулировании этих пунктов встречаются слова способ, величина, простой, локальный, точный смысл которых не установлен. В дальнейшем это нестрогое понятие алгоритма будет называться непосредственным или интуитивным понятием алгоритма. Пользуясь интуитивным понятием алгоритма, можно описывать процесс решения той или иной задачи, но с его помощью нельзя убедиться в том, что описанный процесс представляет собой алгоритм. Действительно, одно дело— доказать существование алгоритма, и совсем другое— доказать его отсутствие. Для этого необходимо знать точно, что такое алгоритм. Решение этой задачи получено в середине тридцатых годов XX в. в двух формах. Первая базировалась на понятии рекурсивной функции, а вторая — на точно очерченном классе процессов. Обе формы получили название алгоритмические системы. 3.1.2. Вычислимые и частично рекурсивные функции. Тезис Черча Пусть N— множество натуральных чисел и F= {f\,fi, ...,/я, •••} — совокупность и-арных функций на множестве N. Дальше часто будем встречать унарные функции о, s и и-арную функцию /шС*ь •••, хп), которые определяются следующим образом: о(х) = О, s(x) = х + 1, Эти функции будем называть простейшими функциями. К простейшим относят также и и-арную функцию оп (х\, ..., хп), равную 0 для всех хх, х2, ..., XnG N. Рассмотрим п + 1 функцию из F: функцию/-арности п и функции/!, ..., Л одной и той же арности т.
Глава 3. Элементы теории алгоритмов и математической логики 135 Говорят, что m-арная частичная функция g(x\, ..., xm) получена в результате операции суперпозиции или подстановки (Sn + l) из функций fn , f"1, ..., f™ , если для любыххи ...,xm G N gm(xl,...,xm) = fH(flm(xl хт) /*(*, *„,)), некоторые из х, могут входить в/j фиктивно. Пример 3.1.1 Рассмотрим л-арную функцию fix\, • • •, хп) = а, где а — константа. Тогда a = s(...s(on(xx,...,xn))...), а раз то есть константу а получаем с помощью операции суперпозиции из простейших функций о и s. * Пусть заданы произвольные частичные функции: л-арная функция g и л+ 2- арная функция /г. Говорят, что п + 1-арная функция/получена операцией примитивной рекурсии из функций g, h (R(g, /г)), если для всех хи ...,хп,уе N имеем Д*ь ...,*„, 0) = g(*i, ...,*„), Дхь ...,*л,;у+1) = й(*1, ...,*„, у,Дхь ...,*„,)>)). Определение 3.1.1. Пусть Z— некоторая система частичных функций. Функция / называется примитивно рекурсивной относительно системы функций Z, если / можно получить из функций системы Z и простейших функций о, s, I с помощью конечного числа операций подстановки и примитивной рекурсии. Примитивно рекурсивная функция / относительно пустой системы функций Z называется просто примитивно рекурсивной функцией. Заметим, что операции подстановки и примитивной рекурсии, примененные к полностью определенным функциям, дают снова полностью определенные функции. В частности, все примитивно рекурсивные функции полностью определены. Пример 3.1.2 □ Для /г-арной операции оп(хи ..., хп) = 0 имеем о\хи ...,*„) = SV /f ) = о( /; (хи • •., *„)) = о(хх) = 0. Следовательно, эта функция примитивно рекурсивная. □ Функцию Д*, у) = х + у можно получить из функций l\ (х) и h(x, у, z) = z + 1 операцией примитивной рекурсии. Действительно, jc + 0 = jc= // (jc), х + (у + 1) = (х + у) + 1 = фс + у).
136 Часть I. Математические основы П Функция х - у в множестве N частична. Для того чтобы сделать эту функцию полностью определенной на множестве N, рассматривают усеченную разность \х-у9х>у9 х + у = < [0,х<у. Непосредственно из определения этой функции следуют такие свойства: х ■*■ 0 = jc, * + (у+ 1) = (* + у)+1, (х + у) + z = х + Су + z). Функция х ■*■ 1 примитивно рекурсивна, поскольку 0+1=0 = о(х\ (*+1)+1=* = I?(x,y), то есть ее можно получить из простейших функций о и /] операцией примитивной рекурсии. Из примитивной рекурсивности функции х •*■ 1 и приведенных свойств операции усеченной разности имеем JC Ч- 0 = X = // (JC), х + (у+ 1) = (* + у)+1, то есть функцию jc -з- у можно получить с помощью операции примитивной рекурсии из функций 1Х (х) и h{x, y,z) = z + l. Отсюда также следует, что \х - у| = (х ■*■ у) + (у -*- *) — тоже примитивно рекурсивная функция. □ Функцию Дх, у) = jc • у можно получить из функций о(х) и h(x, у, z) = z + x операцией примитивной рекурсии. Действительно, х • 0 = 0 = о(х), х-(у+1)=х-у + х, поскольку х + у — примитивно рекурсивная функция. □ Аналогично предыдущему, функцию хп можно получить из функций g(x) = 1 и h(x, y,z) = z- x операцией примитивной рекурсии. Действительно,
Глава 3. Элементы теории алгоритмов и математической логики 137 Рассмотрим еще некоторые свойства примитивно рекурсивных функций, которые понадобятся в дальнейшем. Теорема 3.1.1. Пусть п-арная частичная функция g примитивно рекурсивна (относительно системы частичных функций Z). Тогда п-арные функции / определенные с помощью уравнений хп f(xl9X29...,Xn) = Хв(Л1'Л2 Vl'O > 1=0 хп f(xl9X29...,Xn) = П«(^1^2 Vl'O ' 1=0 также примитивно рекурсивные (относительно Z). Доказательство. Из заданных в условии уравнений следует, что f[Xu ...,*„-!, 0) = g(*i, ...Д„-ьО), flxu ...,хл_ьу+ l)=ftx\, ...9xn-uy) + g(x\9 ...,дся-1,у+ 1), Ддсь ...,*„-ь;у+ 1)=Дль ...,j:n-ij)'gUi, ...,x„_i,y + l). Следовательно, функции / строятся с помощью операций примитивной рекурсии из примитивно рекурсивных функций g(x\, *г, ..., дг„-1, 0) и Кхих2, ...,xn-uy,z) = z + g(x\9X29 ...,xn-uy+ 1), h(xux2, ...,*„-ь)>, z) = z- g(xux2> ...,xn-uy+ 1), и поэтому эти функции примитивно рекурсивны. Рассмотрим еще один класс функций, которые часто встречаются. Пусть заданы некоторые функции ffau ••» хп), i = 1, 2, ..., k+ 1, и указаны некоторые условия (предикаты) Uj(xu ••» xn),j= l, 2, ..., к, которые могут быть для любой п-ки чисел хи • ••> хп истинными или ложными. Допустим, что ни для какой и-ки чисел никакие два условия не могут быть истинными одновременно (такие условия называются взаимоисключающими). ФункцияДхи ..., хп)9 заданная схемой [/!(*!,...,*„), если и1(х1,...хп) = 0, f(X\9...9Xn) — \fk(x{9...,xn)9 если ик(хь...,хп) = 0, [Л+iC*! ,-.■»*,,) для остальных хь...,хпч называется кусочно-заданной.
138 Часть I. Математические основы Теорема 3.1.2. Пусть заданы п-арные примитивно рекурсивные (относи- телъно Z) функции fj, ..., fk + i, uj, ..., и*, где Ui— взаимоисключающие условия, / = /, 2, ..., к. Тогда кусочно-заданная функция |7i(*i,..-,■*„), если щ(хь...хп) = 0, /(*!,...,*„) = Л (*i ,...,*„), если ик(хь...,хп) = 0, [fk+\(x\*—>xn) Дляостальныххь...,хп будет примитивно рекурсивной (относительно Z) функцией. Действительно, данную функцию можно представить в виде / = /l •(l-«i)+...+/k'(l-Mk)+/k+ l '("I '"I' ... -Ilk). Вследствие примитивной рекурсивности функций усеченной разности, сложения и умножения, получаем примитивную рекурсивность функции/. Заметим, что условия щ в теореме 3.1.2 имеют вид щ = 0. Поскольку условия Pi = Pp Pi ^ Pj, Pi < Pj эквивалентны условиям \Pi~Pj\ = 0. Pt + Pj = 0» 1 - (Pj + Pi) = 0, то теорема 3.1.2 остается справедливой и в этих случаях, если/?,,/?/— примитивно рекурсивные функции. Покажем теперь, что частное от деления х на у, т. е. функция [х I у], и остаток от деления х на у, т. е. функция rest(jc, у), — примитивно рекурсивные функции. Для этого необходимо доопределить данные функции до полностью определенных. Положим для всех х е N [х 10] = х, rest(;c, 0) = х. Очевидно, что определенные таким образом функции связаны тождеством restOr, у) = х н- (у • [х/у]) и, значит, из примитивной рекурсивности функции [х/у] следует примитивная рекурсивность функции rest(.x\ у). По определению при у > 0 число [х I у] = п удовлетворяет соотношению п • у < х < {п + 1) • у. Отсюда п равняется числу нулей в последовательности. 1 • у + х, 2 • у + х, ... ,п-у + х, ...,х • у + х. Поэтому при у > 0 справедлива формула [*/y]=t(i-(i-:y+*).
Глава 3. Элементы теории алгоритмов и математической логики 139 Непосредственной проверкой можно убедиться, что данная формула справедлива и при у = 0. Вследствие примитивной рекурсивности функции + и теоремы 3.1.1 получаем, что функция [хI'у]9 а вместе с нею и функция rest(;c, у), примитивно рекурсивны. Пусть/— w-арная частичная функция из F (п > 1). Зафиксируем первые п - 1 аргументов функции/и рассмотрим уравнение/(^ь ..., хп.\, у) = хп относительно переменной у. Допустим, что есть некоторая "механическая" процедура вычисления значений функции/, причем значение/неопределено тогда и только тогда, когда этот "механизм" работает бесконечно, не выдавая никакого результата. Чтобы найти решение данного уравнения, будем последовательно вычислять с помощью нашего "механизма" значения f(x\9 ..., хп. ь у) для у = 0, 1, 2, ... . Наименьшее число а, для которого имеет место f(xu ..., хп. ь а) = хп, обозначим \iy(f(xu ..., хп. ь у) = хп). Заметим, что \iy{f{x\, ..., хп. ь у) = хп) — и-арная частичная функция. Обозначим ее М/, и будем считать, что она получена операцией минимизации частичной функции/. Рассматривая введенные операции S1 /?, М, мы должны обосновать, действительно ли они будут операциями в нашем понимании. Если относительно операций подстановки и минимизации это полностью очевидно, то для операции рекурсии необходимы некоторые пояснения: для всяких ли функций g и h существует функция/, и будет ли такая функция единственной? Поскольку g и h— функции над множеством N, то ответ на оба вопроса утвердительный. Если функция / существует, то из определения операции примитивной рекурсии получаем flxu ...,*„, 0) = g(*i *„), j{xu ...,*„, 1) = й(*ь ...,*„, О, g(*i, ...,*„)), J{xu ...,*„,?+ 1) = А(дс1, ...,xn,y9f(xi, ...,xn,y)), и поэтому/определена однозначно. Основное определение. Частичная функция / называется частично рекурсивной относительно системы частичных функций Z, если / может быть получена из функций системы Z и простейших функций о, s, /,"г с помощью применения конечного числа операций подстановки, примитивной рекурсии и минимизации. Частично рекурсивная функция / относительно пустой системы функций Z называется просто частично рекурсивной функцией.
140 Часть I. Математические основы По определению универсальной алгебры пара G = (F, {Я,М,52, ...}), где F— множество всех частичных функций на N с любым числом аргументов, является частичной алгеброй. Совокупность всех частично рекурсивных функций относительно какой-нибудь системы функций Z является подалгеброй алгебры G, порожденной множеством функций Zu {о, s, /," }, m, n = 1, 2, ... . Тоже можно сказать и о частично рекурсивных функциях. Алгебра Gnp = (F, {/?, 52, S3, ...}) является частичной алгеброй. Совокупность всех частичных примитивно рекурсивных функций относительно какой- нибудь системы функций ZqF является подалгеброй алгебры Gnp, порожденной множеством Zu {о, s, Ij^ }, w, n = 1, 2, ... . Важность рассмотренных классов функций состоит в их связи с классом вычислимых функций. Это формулируется в виде таких тезисов. Тезис Черча. Класс алгоритмически, или машинно-вычислимых частичных числовых функций совпадает с классом всех частично рекурсивных функций. Более общим является тезис Тьюринга. Тезис Тьюринга. Класс функций, которые алгоритмически вычисляются относительно системы функций Z, совпадает с классом частично рекурсивных функций относительно системы Z. Поскольку понятие вычислимой функции не имеет точного определения, то доказать эти тезисы невозможно. Но благодаря им стало возможным придать необходимую точность формулировкам алгоритмических проблем. 3.1.3. Алгоритмические проблемы Под алгоритмической проблемой будем понимать вопрос вычислимости некоторых специальным образом построенных функций. Вследствие тезисов Черча и Тьюринга вопрос о вычислимости функции равнозначен вопросу о ее рекурсивности. Понятие рекурсивной функции строгое, и иногда с помощью обычной математической техники можно непосредственно доказать, что функция, которая решает проблему, не может быть рекурсивной. Если для решения проблемы не существует рекурсивной функции, то проблема называется (алгоритмически) неразрешимой. Если же рекурсивная функция существует, то проблема называется (алгоритмически) разрешимой. Всякий алгоритм, как было сказано выше, представляет собой способ решения некоторой массовой проблемы, т. е. проблемы преобразования (вычисления) не одного входного слова (одних входных данных), а целого множества
Глава 3. Элементы теории алгоритмов и математической логики 141 входных слов (данных) в соответствующие им выходные слова. Детальный анализ задач показывает, что существуют такие классы задач, для решения которых нет, и не может быть, единого универсального способа, т. е. эти задачи относятся к алгоритмически неразрешимым проблемам. Однако это совсем не означает невозможность решения какой-нибудь конкретной задачи из этого класса. Речь идет о невозможности решения всех задач данного класса одним и тем же способом. Для лучшего понимания понятий алгоритмически разрешимой и неразрешимой проблем рассмотрим примеры. Проблема тождества в элементарной алгебре. Для простоты ограничимся случаем, когда выражения строятся из рациональных чисел и букв с помощью действий сложения, вычитания и умножения. Из школьного курса математики хорошо известен такой прием решения указанной проблемы: используя дистрибутивный закон для умножения, раскрывают скобки в левой и правой частях данного тождества и выполняют приведение подобных членов. После этого как левая, так и правая часть тождества преобразуются в полиномы. Тождество будет справедливым, если эти полиномы тождественно равны. Другими словами, справедливость тождества означает, что после переноса всех членов преобразованного таким образом тождества в одну часть, эти члены взаимно уничтожаются, в результате тождество преобразуется в тривиальное тождество 0 = 0. Таким образом, проблема тождества в элементарной алгебре алгоритмически разрешима— существует единый конструктивный прием, который дает возможность за конечное число шагов выяснить, является ли любое заданное соотношение тождеством или нет. Можно построить примеры таких алгебраических систем, в которых проблема тождества неразрешима. К таким системам относятся полугруппы и группы, заданные с помощью системы образующих и соотношений, которые их определяют. Впервые такие примеры для полугрупп были найдены Е. Постом [51, 52], а для групп — П. С. Новиковым [54]. Поскольку эти проблемы формулируются почти одинаково как для полугрупп, так и для групп, рассмотрим только одну из них. Проблема тождества для полугрупп. Пусть F(X) — свободная полугруппа, где Х= {jci, jt2, ..., jc„}, операцией умножения в которой служит конкатенация, а пустое слово е играет роль единицы. В этой полугруппе можно ввести произвольное множество соотношений 5, которые являются формальными равенствами между двумя неодинаковыми словами: Pi = qi (i = 1, 2, ...). Два слова в полугруппе F(X) тождественны относительно заданной системы соотношений 5, если одно из них может быть получено из другого в результате
142 Часть I. Математические основы произвольного числа подстановок в другое слово правых частей соотношений из S вместо левых и, наоборот, левых вместо правых. Например, пусть Х= {х, у], a S = (xy = ух). Тогда слова р = хху и q = ухх тождественны между собой, поскольку первое слово может быть получено из второго в результате двух подстановок описанного выше типа: q = ухх —> хух —> хху = р. При подстановках в обратном порядке слово q можно получить из слова р, что дает возможность преобразования как слова q в слово р, так и слова р в слово q. Проблема тождества слов для полугрупп формулируется так. Пусть в произвольной свободной полугруппе F(X) с конечным числом образующих задана конечная система соотношений S. Необходимо найти единый конструктивный прием, позволяющий за конечное число шагов решить, являются ли любые два слова р и q из F(X) тождественными относительно системы соотношений S. Для некоторых систем соотношений S сформулированная проблема разрешима, но, как показал Пост, существуют и такие системы соотношений 5, для которых проблема тождественности слов полугрупп алгоритмически неразрешима. 3.1.4. Машины Поста и машины Тьюринга Как уже было сказано в начале данного раздела, рекурсивные функции не являются единственной алгоритмической системой. Существует еще много других эквивалентных ей алгоритмических систем: система нормальных алгорифмов Маркова, система Поста, система Тьюринга, система Колмогорова- Успенского и др. Рассмотрим более детально только три — машины Поста, машины Тьюринга и нормальные алгорифмы Маркова. Алгоритмическая система, предложенная в 1936 г. Е. Постом и названная машинами Поста, это — специальный класс алгоритмов. Для машин Поста входная и выходная информация задаются в алфавите Х= {О, 1}, а алгоритм — в виде конечного упорядоченного набора правил (команд), которые называются приказами. Для записи входной, выходной и промежуточной информации служит гипотетическая бесконечная в обе стороны информационная лента, поделенная на отдельные клеточки, в каждой из которых можно разместить только одну букву: 0 или 1. Те клеточки, в которых записаны единицы, называются отмеченными, а те, в которых записаны нули, — неотмеченными. Работа алгоритма проходит дискретными шагами, на каждом выполняется один из приказов, составляющих алгоритм. Каждому такому шагу соответствует полностью определенная активная клеточка на информационной ленте. Для первого приказа алгоритма фиксируется как активная некоторая начальная клеточка. Дальнейшие изменения местонахождения активной клеточки
Глава 3. Элементы теории алгоритмов и математической логики 143 на ленте должны быть предусмотрены в самом алгоритме. Приказы, которые составляют алгоритм, могут принадлежать к одному из шести типов. □ Первый тип. Отметить активную клеточку (записать в нее единицу) и перейти к выполнению /-го приказа (/ может быть произвольным числом из чисел, которые использованы для нумерации приказов алгоритма). □ Второй тип. Стереть отметку активной клеточки (записать в нее нуль) и перейти к выполнению /-го приказа. □ Третий тип. Переместить активную' клеточку на один шаг вправо и перейти к выполнению /-го приказа. □ Четвертый тип. Переместить активную клеточку на один шаг влево и перейти к выполнению /-го приказа. □ Пятый тип. Если активная клеточка отмечена (если* в ней записана единица), то перейти к выполнению у-го приказа, а если не отмечена (если в ней записан нуль), — к выполнению /-го приказа. □ Шестой тип. Остановка, окончание работы алгоритма. Алгоритмы, которые состоят из конечного числа приказов перечисленных типов, называются алгоритмами Поста. Следовательно, для того чтобы задать машину Поста, необходимо задать такую четверку (Х= {О, 1}, активную клеточку, # — специальный пустой символ, Р — алгоритм). Работа машины Поста состоит в выполнении приказов алгоритма функционирования машины. Машина останавливается тогда и только, тогда, когда последним выполненным приказом машины является приказ шестого типа. Результатом ее работы является записанное на информационной ленте слово <7, которое называется заключительным. Таким образом, машина Поста перерабатывает входные слова в заключительные, т. е. вычисляет значение некоторой словарной функции/р в алфавите X, для которой выходные слова служат ее аргументами, а заключительное слово— значением этой функции. Если машина Поста останавливается с некоторым словом на информационной ленте, то функция, определяемая этой машиной, считается определенной. А если машина Поста не останавливается, то значение соответствующей функции считается неопределенным. При интерпретации заключительного слова как значения функции пустые символы # игнорируются. Доказано, что алгоритм Поста вычисляет некоторую частично рекурсивную функцию, и, наоборот, любая частично рекурсивная функция может быть вычислена соответствующим алгоритмом Поста. Иначе говоря, имеет место такое утверждение: Утверждение 3.1.1. Класс всех алгоритмов, эквивалентных алгоритмам Поста, совпадает с классом всех частично рекурсивных функций [16, 51, 59].
144 Часть I. Математические основы Пример 3.1.3. Алгоритм Поста Покажем, что простейшая функция S(n) = п + 1 вычисляется на машине Поста. Для этого представим число п в двоичной системе исчисления, т. е. в алфавите Х= {О, 1}. Запишем его на информационную ленту и установим активную клеточку, в которой находится первый символ числа п (его старший двоичный разряд). Тогда алгоритм Р функционирования машины Поста имеет такой вид: I Алгоритм Поста ' ; /\ ; А;АГ i 1. Если в активной клеточке 0, то перейти к п. 2, иначе перейти к п. 3. 2. Сдвинуть активную клеточку на один шаг вправо и перейти к п. 1. 3. Если в активной клеточке 1, то перейти к п. 2, иначе перейти к п. 4. 4. Сдвинуть активную клеточку на один шаг вправо и перейти к п. 5. 5. Если активной клеточке 0, то перейти к п. 6, иначе перейти к п. 7. 6. Записать в активную клеточку 1 и выполнить приказ СТОП. 7. Записать в активную клеточку 0 и перейти перейти к п. 8. 8. Сдвинуть активную клеточку на один шаг влево и перейти к п. 9. 9. Если в активной клеточке 0, то перейти к п. 6, иначе перейти к п. 10. 10. Если в активной клеточке #, то перейти к п. 6> иначе перейти к п. 7. Тестирование этого алгоритма предлагается выполнить в качестве упражнения. * К описанной алгоритмической системе Поста очень близка система Тьюринга, которую называют машинами Тьюринга. В этой системе также выполняется запись информации на бесконечную в обе стороны ленту, разбитую на клеточки. Но, в отличие от системы Поста, тут для записи информации используется произвольный конечный алфавит X = {х\, xj, ..., хп). I Р Рис. 3.1.1. Схема машины Тьюринга
Глава 3. Элементы теории алгоритмов и математической логики 145 Каждая клеточка информационной ленты служит для записи только одной буквы. Эта буква может осматриваться специальным чувствительным элементом, так называемой головкой машины Тьюринга, которая имеет возможность передвигаться вдоль информационной ленты в обе стороны. Головка машины Тьюринга может находиться в конечном числе разных состояний qu qiy •••> qm, печатать в клеточке, которую осматривает головка, любую букву jci, X2, ..., хт и оставаться на месте или перемещаться вправо или влево вдоль информационной ленты на одну клеточку. Задать машину Тьюринга означает задать такую пятерку (X, Q, q0, #, Р), где: □ X — алфавит машины; О Q — конечное непустое множество состояний машины (X n Q = 0); О q0— начальное состояние машины (go £ Q)\ О # — специальный "пустой" символ, такой, что # £ X u Q; П Р — программа работы машины. Программа работы машины — это конечное множество пятерок вида xqyq's. Каждая такая пятерка называется командой. Выполнение команды xqyq's означает, что, когда головка машины Тьюринга находится в состоянии q и читает записанную в клеточке ленты букву х, то она записывает на место этой буквы х новую букву у (которая может совпадать с *), переходит в состояние q' (которое может совпадать с состоянием q) и перемещается вдоль ленты на величину s = 0, ± 1. Работа машины Тьюринга состоит в повторении такого цикла действий, которые являются общими для любой машины Тьюринга: □ чтение символа из клеточки, на которую смотрит головка; □ поиск применимой команды, то есть поиск команды xqyq's, в которой q — состояние головки в данный момент времени, ах — символ в клеточке, на которую смотрит головка; □ выполнение найденной команды. При этом считается, что в программе не существует таких двух команд, у которых были бы одинаковыми первые два символа. Машина Тьюринга останавливается в том, и только в том случае, если ни одна из команд ее программы не применима. Результатом работы машины после ее остановки является слово, записанное на ленте. Следовательно, машина Тьюринга становится алгоритмической системой. При этом она обрабатывает заранее записанное на ленте слово или бесконечно долго, или останавливается после конечного числа шагов. В первом случае считается, что
146 Часть I. Математические основы алгоритм, который выполняется машиной, неприменим к входному слову р, а во втором случае слово, которое остается на ленте после остановки машины, принимается как выходное, являющееся результатом преобразования машиной заданного входного слова р. Для машин Тьюринга, как и для машин Поста, имеет место такая теорема. Теорема 3.1.3. Всякая частично рекурсивная функция может быть реализована с помощью некоторой машины Тьюринга и, наоборот, всякая машина Тьюринга реализует некоторую частично рекурсивную функцию. В разд. 7 мы еще вернемся к понятию машины Тьюринга. Пример 3.1.4 □ Пусть (X = {0, 1}, Q = {go, qu «72 b <?o, #, Р\ где Р имеет такой вид: 1 <7о 1 <7о 1; OgoOtfo 1; #qo#q\ -1; 1 qx Oqri-1; 0#i 1 <?2-1; #?i 192-1, и где в начальный момент головка смотрит на первый символ слова р е F(x) в состоянии go- Нетрудно убедится в том, что эта машина Тьюринга реализует алгоритм прибавления единицы к числу р, представленному в двоичной системе исчисления. Рассмотрим некоторые примеры. Пусть р = 100111, тогда имеем последовательность команд: 1 q0 1 <7о 1 —> 0 до 0 q0 1 -> 0 q0 0 q0 1 -> 1 q0 1 qo 1 -> 1 <?o 1 <7o 1 —> 1 <7o 1 <7o 1 —> -> #qo#qi -1 -> I q\ 0 q\ -1 -> 1 q\ 0 qi -1 -> I q\ 0 q\ -I -* 0 qx 1 q2 -1. В результате этого слово р = 100111 "переписалось" машиной в слово р' = 101000 = 100111 + 1 в двоичной системе исчисления. Пусть теперь р = 1111, тогда машина выполнит такую последовательность команд: 1 q0 1 q0 1 —> 1 q0 1 q0 1 —> 1 q0 1 q0 —> 1 q0 1 q0 1 -» # go 1 <7i -1 —> 1 q\ 0 ф -1 —> -> 1 91 0 qx -1 -» 1 qx 0 <7i -1 -» 1 q\ 0 91 -1 -» # gi 1 92 -1. В результате слово /> = 1111 "переписалось" машиной в слово р = 10000 = 1111 + 1 в двоичной системе исчисления. □ Пусть (X = {0, 1}, Q = {q0, q\}, q0, #, Р), где Р имеет такие команды: OqoOqx -1;
Глава 3. Элементы теории алгоритмов и математической логики 147 I qolqi -1; #q0 1 q\ -1. Действие этой машины, как нетрудно убедиться, состоит в том, что, начав работу с любого непустого слова р, к этому слову приписывается слева символ 1. Машина при этом не останавливается. Таким образом, результат работы машины не определен, поскольку машина неприменима ни к какому непустому слову/? Е F(x). □ Пусть (X = {0, 1}, Q = {qo, q\}, qo, #, Р\ где Р включает такие команды: #qo#qo 1; 0 q0 О q0 1; 1 q0 l q\ 0. Действие этой машины Тьюринга состоит в том, что в слове р машина ищет символ 1 и, найдя его (если он есть), останавливается. Если слово р является записью числа в двоичной системе исчисления, то машина останавливается, если это число не равняется нулю. В противоположном случае работа машины продолжается бесконечно. < 3.1.5. Алгоритмическая система Маркова Алгоритмическая система Маркова строится почти по тем же принципам, что и предшествующие системы Поста и Тьюринга, но в отличие от них носит несколько более простой и интуитивно более понятный характер [52, 53]. Пусть X— некоторый конечный алфавит, F{X) — полугруппа слов в этом алфавите и е Е F(X), где е — пустое слово. Если р, q Е F(X), то выражения р —» q и р —» .q называются формулами подстановки в алфавите X. При этом считается, что символы —> и "." не принадлежат алфавиту X, а слова pwq могут б ыть пусты ми. Формула подстановки р —»q называется простой, а формула подстановки р —» .q — заключительной. Пусть выражение /?—>[.] q означает любую из формул подстановки р —» q или р —> .q. Конечная последовательность R формул подстановки в алфавите X |>1-»Н?1 Pi -> И?2 < pi -»Lb
148 Часть I. Математические основы называется схемой или системой переписывания. Всякая система переписывания представляет собой функцию/: F(X) —» F(X), значения которой вычисляются по таким правилам. □ Если никакое из словр,(/ = 1, 2, ..., /) не является подсловом словар, тор остается без изменений и является результатом переписывания. Этот факт будем записывать в виде /?: р!. П Если среди слов ри Ръ •••> Pi существуют такие, которые являются полсловами слова р, то пусть m — такое наименьшее число, что 1 < m < I и рт — подслово слова р. Слово р', полученное в результате замены самого левого вхождения (первого вхождения) слова рт словом qm в слове р, будем обозначать R: р \р . Работа по данным правилам может закончиться по двум причинам: □ если формула подстановки рт —» [.] qm заключительная; □ если существует такая последовательность г0, п, ..., rk слов из F(X), что р- го, q = rk и /?: г, \-ri+\ для 1 = 1, 2, ..., Ь2и либо R: rk !, либо R: Г*-! -> .Гк. Функция /: F(X) -> F(X), определенная таким образом, называется нормаль- ным алгорифмом Маркова в алфавите X. Работа алгорифма R может быть описана так. Пусть р е F(X). Находим в R первую формулу подстановки рт —> [.]gw, такую что рт — подслово слова р. Выполняем замену первого вхождения слова рт словом qm в слове р. Если р — результат этой подстановки, и если рт —> [.]qm заключительная, то работа алгорифма заканчивается, и результатом будет слово р'. Если формула подстановки рт —> [.]qm простая, то к слову р применяется тот же поиск, что и к слову р и т. д. Если, наконец, получается такое слово г„ что /?: г,!, т. е. ни одно из слов р/, /= 1, 2, ..., /, не является подсловом слова г„ то работа алгорифма заканчивается, и г, будет его значением. Из выше сказанного следует, что возможна ситуация, когда описанный процесс никогда не закончится. В этом случае будем говорить, что алгорифм R неприменим к слову р. Пример 3.1.5 □ Пусть Х- {a, b}, a R имеетвид \а->.е \Ь-*Ъ. Алгорифм R переписывает всякое слово р из F(X), которое имеет хотя бы одну букву а, в слово, которое получается из р путем вычеркивания первого
Глава 3. Элементы теории алгоритмов и математической логики 149 вхождения буквы а в слове р. Ясно также, что R(e) = е и R не применим к непустым словам из F(X), которые не имеют вхождения буквы а. □ Пусть Х- {х, у, х~\ y'l},aR имеет вид \хх~ =е \х~ х-е уу~х = е [у~]у = е. Алгорифм R переписывает всякое слово р из F(X) в слово q, не имеющее подслов вида хх~\ х~1х, уу~\ у~1у. Например, слово ххухуу' х~ у~ ух переписывается таким образом: ххухуу~]х~1у~1ух —» ххухх~1у 1ух —» ххуу~хух —> ххух. □ Если Х- {jci, jc2, ..., хп), а система/? имеет вид \Ху \х2 < [хп = е = е = е то алгорифм R переписывает всякое слово р из F(X) в пустое слово е. * Пусть R и Q — нормальные алгорифмы над алфавитом X и р е F(X). Запись R(p) ~ Q(p) означает, что или оба алгорифма R и Q не применимы к слову р, или оба применимы, и R(p) = Q(p). Два алгорифма R и Q над алфавитом X называются полиостью эквивалентными, если (V/? е F(X)) R(p) ~ Q(p). Алгорифмы R и Q называются эквивалентными относительно алфавита X, если R(p) ~ Q(p) каждый раз, когда р Е F(X)9 и хотя бы одно из слов R(p) или Q(p) определено и тоже принадлежит F(X). Пусть Х = {1}, а Х'= {1, *}, тогда всякое натуральное число п можно записать в виде слова п в алфавите X'. Действительно, это можно сделать с помощью такого соответствия: О = 1, 1 = 11, 2 = 111, 3 =1111, 4 = 11111, ... . Поставим в соответствие всякому вектору (/ii, п2, ..., щ), где пи п2, ..., пк — натуральные числа, слово в алфавите X' вида п\ * т *... * пк, которое обозначим (П|,п2,...,/!*). Например, вектору (4,0,2) соответствует слово 11111*1*111.
150 Часть I. Математические основы Пусть/: N* —> N— некоторая частичная функция и R/обозначает алгорифм в алфавите X такой, что Rf(k],k2,:.,kn) = f(kbk2^kn) тогда и только тогда, когда хотя бы одна из частей этого равенства определена. При этом считается, что /?/ не применим к словам, отличным от слов вида Функцию / будем называть частично вычислимой по Маркову, если существует нормальный алгорифм Q над Х\ полностью эквивалентный /?/ над алфавитом X'. Если функция/полностью определена, то ее называют просто вычислимой по Маркову. Теорема 3.1.4. Простейшие функции о(х) = 0, s(x) = х + 1 и /," (*i, х2, ..., хп) = хт вычислимы по Маркову. Доказательство сводится к построению соответствующих нормальных алгорифмов. 1. Нетрудно убедиться, что функцию о(х) реализует такой алгорифм /?0: f* -> * (а); ос 11 —> ocl (б); ■< сс1->.1 (в); |е-»сс, (г), который применим ко всем словам в алфавите X, где а £ X'. Действительно, пусть р= 11... 11— произвольное слово в алфавите X. Тогда в силу формулы подстановки г) /?о: р г оср. После этого, применяя формулу подстановки б), получаем R0: ар [- ocl и, наконец, применяя заключительную формулу подстановки в), имеем /?о: ocl f-1. Поскольку 1 представляет число 0 в алфавите X, то /?о и является искомым алгорифмом вследствие произвольности слова р. 2. Для функции s(x) таким алгорифмом будет алгорифм Rs вида: Г* -> * (а); сс1->.11 (б); [е -> а, (в), где а 6 X. Этот алгорифм применим к тем и только к тем словам в алфавите X, которые являются натуральными числами, причем Rs(ri) = п + 1 для любого п G N.
Глава 3. Элементы теории алгоритмов и математической логики 151 3. Более сложную структуру имеет алгорифм вычисления функции /," . Пусть (Хь 0С2, ..., OLin £ X и 1 <т<п, тогда обозначим Subm список формул подстановки п * ■ ><*2т-1* <*2т-\1-*<*ъЛ a2J ► <х 2т «2«*->a2m+l- Теперь нормальный алгорифм, который вычисляет функцию /,", будет иметь такой вид: для п = 1 для 1 < т < п для т = п tfj*- >ax * а,1—>а21 аЛ->1<х> а2*- Sub2 Sub, >(Ъ Sub,.» «2л-1*- ► а 2л-1 «2л*->^* a 2л ► а,. Sub, Sub, '«2m-.* Subm , m-l "2m-l a2—il->«2»l «2«l-^l«2m «2«*^«2m+. Sub /w+1 Sub а л-1 *- 2л-1 «2„-.l «2л1- («2„-.* «2„1 la,, «2„*->«2m* >a,, Sub, Sub, sub„;, «2.-1*- «2.-.1- ►«2.-1* «2Л1-^1«2Л «2«*- '«2„* a2„->.e Действительно, после первого применения алгорифма к слову Xi *х2*---*хп, будем иметь слово щх\ *X2 *...*хп- После этого Subi, Sub2, ..., Subm.ь Subm+1, ..., Sub„ вычеркивают все ^orl дот-1 иотт+1 доп 6 Зак. 3427
152 Часть I. Математические основы включительно, оставляя слово хп. Подробности рекомендуется рассмотреть самостоятельно в качестве упражнения. Теорема доказана. Нормальный алгорифм называется замкнутым, если его схема включает формулу подстановки вида е —> .q. При работе такого алгорифма остановка возможна лишь в том случае, когда применяется заключительная формула подстановки. Всякий нормальный алгорифм можно преобразовать к замкнутому алгорифму путем добавления в конце схемы новой формулы подстановки е —> .е. Если обозначить через а* схему полученного алгорифма, то, очевидно, что а# замкнут и полностью эквивалентен алгорифму а. Теорема 3.1.5. Композиция двух нормальных алгорифмов есть нормальный алгорифм. Доказательство. Пусть а, в— нормальные алгорифмы в алфавите А. Сопоставим каждой букве b этого алфавита букву £д, которую назовем двойником буквы Ь. Пусть А*— алфавит двойников букв алфавита А. Выберем еще какие-нибудь две буквы: а и Р, не принадлежащие A uAR. Обозначим через sA схему алгорифма, которая получается из схемы нормального алгорифма а заменой точки в каждой заключительной формуле подстановки буквой а, и обозначим через Se схему, которая получается путем замены в схеме алгорифма в всех букв алфавита А их двойниками, всех точек— буквами Р с дальнейшей заменой всех формул подстановки вида е —> Q и е —> .Q соответственно формулами подстановки а —> aQ и а —> a&Q. Рассмотрим схему (в сокращенном виде): I асе —> а а а а —> а яд адЬ->ад6д адр->|3йд Рад->Ря aba —» аЬ ар—>.е sB (яеЛ> (as А) (а,ЬеА) 0> € А) (as А) (е,£ е .4) Нормальный алгорифм Z над алфавитом А, определяемый этой схемой, такой, что для любого слова р е А справедливо соотношение Z(p)« в(л(р))
Глава 3. Элементы теории алгоритмов и математической логики 153 (см. упр. 9 в конце разд.). Полученный нормальный алгорифм называется композицией алгорифмов а и в и обозначается в • а. В общем случае запись ал • ал_1 • ... • А] будет означать а„(ал_1(...(а2-А1 ))...). Пусть А — некоторый нормальный алгорифм в алфавите А и В — некоторое расширение алфавита А. К схеме алгорифма Д добавим сверху все возможные формулы подстановки вида Ь—> Ь9 где Ъ— произвольная буква из В\А. Полученная схема определяет некоторый нормальный алгорифм Дв в алфавите В, который не применим ни к какому слову, состоящему из букв алфавита В\А9 и такой, что Дв(р)«Д(р) для любого слова р в А. Алгорифм Дв полностью эквивалентен алгорифму А относительно алфавита А и называется формальным распространением алгорифма Д на алфавит В. Пусть даны нормальные алгорифмы айв соответственно в алфавитах А\ и Аг. Рассмотрим алфавит A=A\UA2 и формальные распространения аа и ва алгорифмов а и в на алфавите. Композиция Z алгорифмов вА • аа называется нормальной композицией алгорифмов а и в и обозначается в • а (Недоразумений с повторным введением символа в • а не возникает, поскольку в случае, когда А1 =Лг, нормальная композиция алгорифмов в и а совпадает с их композицией). Z является нормальным алгорифмом над А\, причем Z(p) « в (а(/?)) для любого слова р в А\, и кроме того, Z применим только к тем словам р в алфавите А, которые отвечают условиям: □ р является словом в алфавите^; □ а применим кр; □ в применим к А(р). Допустим, что алфавит В является расширением алфавита А, и пусть р — произвольное слово в алфавите В. Проекцией рА слова р на алфавит А называется слово, которое получается из слова р, если в р стереть все вхождения букв из В\А. Сокращенно записанная схема {£—>е (£е В\А) задает нормальный алгорифм вв,а такой, что вв,а(р) - рЛ для любого слова р в В. Алгорифм вв,а называется алгорифмом-проекцией. Пусть А и С— алфавиты без общих букв. Положим 5 = Л и С. Тогда сокращенно записанная схема {са —» ас (а е А, с е С) задает нормальный алгорифм хА,с в алфавите В такой, что xAiC(p) = pApc для любого слова р в В. Если а— нормальный алгорифм в алфавите А, и В— расширение А9 то нормальный алгорифм в в алфавите В, который задается схемой алгорифма а, называется обычным распространением алгорифма а на алфавит 5. Очевидно,
154 Часть I. Математические основы что в(р) = л(р) для любого слова р в Л, и, кроме того, B(pq) ~ &(p)q для любого слова р в А и для любого слова q в В\А. Заметим, что обычное распространение алгорифма а на В отличается от формального распространения а на В, поскольку формальное распространение не применимо ни к какому слову, включающему буквы из В \А. Теорема 3.1.6. Пусть А/, ..., а*— нормальные алгорифмы и А — объединение га алфавитов. Тогда существует нормальный алгорифм в над Д который называется соединением алгорифмов А/, ..., а& такой, что в(р) ~ А*(р) к*{р) ... Ai?(p) для любого слова р в алфавите А, где а,# — обычное распространение А* на А. Доказательство. Покажем сначала, что данная теорема имеет место для к = 2, а потом индукцией по числу к можно доказать и общий случай. Введем алфавит двойников АД букв алфавита А. Положим B = AuAR. Пусть Ai — нормальный алгорифм, схема которого получается путем замены каждой буквы схемы алгорифма а\ ее двойником, и пусть Ai , Аг — обычные распространения соответственно алгорифмов Ai и Ai на В. Пусть А = {яь •••, аг] и M = Sub(ai, ..., ак\ q\, ..., д*) — нормальный алгорифм, который задается схемой [оса,—><?/(* О* = 1,2,...Д) ]а£->£а (£ е А\{аь...,ак}) ]а—>.е и выполняет одновременную подстановку слов qu •-, <?* в слово р вместо букв аи ..., ak соответственно (см. упр. 9 в конце разд.). Тогда нормальные алгорифмы Mi = Sub(ab..., an : аха\\ ..., апапД) и м2 = Sub(fl?A ..., апЛ : аи ..., ап) над В такие, что щ выполняет одновременную подстановку a\a\R, ..., ananR вместо аи • •., а„, а м2 — одновременную подстановку яь ..., ап вместо а*, ..., апл. Существуют, кроме того, нормальные алгорифмы XА ^д и Х^д , такие, что X. Ад(р) = рАрА , Х.д = рА рА. Тогда, как нетрудно проверить, А, А А ,А нормальная композиция в = м2- Ai#- X д • Аг#- X д Mi имеет искомое свойство: в(р) = А\*(р) Аг (р) для любого слова р в алфавите А. Доказательство индукцией общего случая предлагается в качестве упражнения.
Глава 3. Элементы теории алгоритмов и математической логики 155 Следствие 3.1.1. Пусть аь ..., а*— нормальные алгорифмы соответственно над алфавитами А\, ..., Ak, и пусть А -А\ и ... иАк. Тогда существует нормальный алгорифм в над Л и {*}, такой, что в(р) « Ai#(p) * А2#(р) * ... * а/(р) для любого слова р в А, где а,#— обычное распространение на А. В частности, в(р) ~ Ai(p) * А2(р) * ... * Ak(p) для любого слова р в алфавите А\П ... пАк. Доказательство. Существует такой нормальный алгорифм Дв^и{*}, что А (р) = * для любого слова р в А. Алгорифм А задается схемой [а->е (ае Л) Тогда на основе теоремы 3.1.6. в является соединением алгорифмов аь А, а2, А, ..., А, Ак. Легко заметить, что в(р) ~А\*(р) * А2#(р) * ... * дДр) для любого слова р в Л и, в частности, в(р) - Ai(/?) * а2(/?) * ... * А*(р) для любого слова р в алфавите^] п ... пЛ*. Теорема 3.1.7. 1. Пусть х— нормальный алгорифм в алфавите А и а— произвольная буква. Тогда существует нормальный алгорифм А над A U {а}, такой, что для любого слова р в А [ар, если Х(р) = е, Д(р) = 1 [ р, если Х(р) Ф е, и алгорифм А применим только к тем словам, к которым применим х. 2. Если а и в — нормальные алгорифмы в алфавите А, и а — буква, не принадлежащая А, то существует нормальный алгорифм р над A u fa}, такой, что р(р) ~А(р) и р(<хр) ~ в(р) для любого слова р в А. Доказательство. 1. Существует нормальный алгорифм Bi над ^и{а}, который преобразует пустое слово е в а и всякое непустое слово в алфавите А и {а} в пустое слово е. Такой алгорифм можно задать, например, схемой [а->Р (аеАи{а}\ [е->.а где Р — буква, которая не принадлежит алфавиту Л и {а}.
156 Часть I. Математические основы Пусть в2 = В! • х. Для любого слова р в А9 если х(р) = е, то в2(р) = ос, и если х(р) Ф е, то ъ2{р) = е. Пусть Т — тождественный нормальный алгорифм (схема которого имеет вид {е —» .е), а Д — соединение алгорифмов в2 и Г. Тогда если х(р) = е, то Д(р) = ар, и если х(р) * е, то Д(р) = р. 2. Введем алфавит Лд двойников букв алфавита А. Пусть Л = ^и/и{а,Р(, где Р £ Л иЛд и {а}. Если заменить в схеме алгорифма в каждую букву алфавита А ее двойником, все точки — буквой (3 и в полученной схеме заменить каждую формулу подстановки вида е —> q и е —> .q соответственно на а —> щ и а —> аРд, то получим некоторую схему, которую обозначим ]£ g. . Пусть £ . — схема алгорифма а . Построим теперь схему аа->ссад (^еА) яд&-^яд*>д (fl^A) «ДР->Р«Д (aGA) (aeA) (a,beA) Рад->Ра я&д —»а£ аР->.е 2 5 Нормальный алгорифм г, который задается этой схемой над ^и{а}, является искомым алгорифмом, т. е. т(р)« а(/?) и т(ар) ~ в(р) для всякого словар в Л. Теорема 3.1.8. Пусть а, в, X — нормальные алгорифмы, и А — объединение их алфавитов. Тогда существует нормальный алгорифм г над А такой, что [В(р), если р — слово в А и Х(р)=еу [А(р), если р — слово в Аи Х(р)Фе, и который применим к тем и только к тем словам в А, к которым применим X. Алгорифм г называется разветвлением алгорифмов пив, управляемым алгорифмом X. Доказательство. Пусть Аь вь Xi — формальные распространения соответственно алгорифмов а, в, X на А9 и а — буква, не принадлежащая А. По теореме 3.1.7(1) существует такой нормальный алгорифм Д над А и {а}, что Гар, если р — словов А и Г(р)=е, Г(р) = А(Р) = - р, если р — словов А иГ{р)*е.
Глава 3. Элементы теории алгоритмов и математической логики 157 Кроме того, по теореме 3.1.7, (2), существует такой нормальный алгорифм ф над А и {а}, что, если р — слово в алфавите А9 то Ф(р) « А\(р) и ф(ар) = Bi(p). Теперь остается положить х = ф Д. Теорема доказана. Пусть даны алгорифмы а и X в алфавите А и произвольное слово ро в А. Применим а кро- Если в результате получится некоторое слово р\9 то применим X к р\. Если окажется, что Х(рм) = е, то процесс заканчивается, если Х(р\) Ф е, то снова применим а к р\. Если в результате этого получится некоторое слово рг, то применим X к р2, и снова, если окажется, что Х(р2) = е9 то процесс остановится, а если Х(р2) * е то, применим а к рг и т. д. Определенный таким образом алгорифм в называется повторением алгорифма а, которое управляется алгорифмом X. Очевидно, что в(р0) = q тогда и только тогда, когда существует последовательность слов ро, р\, ••, рп (п>0) такая, что рл = <7, *(Рп) = е, Pi = A(p/_ i) при 0 < I < п и Х(р,-) * е при 0 < i < п. Теорема 3.1.9. Пусть а и X — нормальные алгорифмы, А — объединение их алфавитов, и A/ wX/ — формальные распространения соответственно а и X на А Тогда существует нормальный алгорифм в над Д являющийся повторением алгорифма А/, который управляется алгорифмом Ху. Доказательство. Теорему, очевидно, достаточно доказать для случая, когда алфавиты алгорифмов а и X совпадают, и тогда Ai = а и Х| = X. Пусть буква а не принадлежите. По теореме 3.1.7, (1) существует такой нормальный алгорифм Д над В =А и {а}, что 1а р, если р — слово в Л и Г(р) = е, р, если р — слово в Л и \(р) * е. Пусть Т = А • а, Т — нормальный алгорифм в некотором расширении F алфавита В. Пусть буква Р не принадлежит F. Рассмотрим такую схему: (За -».а где ^ тр — схема, полученная из схемы Т путем замены в ней всех точек буквой р. Эта схема задает некоторый нормальный алгорифм ф, такой что ф(р) = q <=> существует последовательность слов ро, ри •. • , рп такая, что рп = q, р{ = Т(р,-_ i) (0 < / < п) ир„ — единственное в этой последовательности слово, которое начинается с буквы а. Пусть н — алгорифм, который проектирует
158 Часть I. Математические основы алфавит F на алфавит F\ {а} (то есть, алгорифм, который вытирает все вхождения буквы а). Теперь легко убедиться, что нормальный алгорифм в = н • ф — искомый. Теорема доказана. Следствие 3.1.2. Пусть айв— нормальные алгорифмы и А — объединение их алфавитов. Тогда существует нормальный алгорифм Z над А, который всякое слово р в алфавите А преобразует в слово q тогда и только тогда, когда существует такая последовательность слов р0, ..., рп (п> 0), что р0 = р, рп = q, в(рп) = е, р, +, = A(pi) и А(р/) Ф е для i = 0, 1, ..., п - 1. Доказательство. Пусть Т— тождественный нормальный алгорифм, ив — повторение алгорифма а под управлением Z. Искомым алгорифмом Д тогда является ветвление в и Т под управлением z (см. теорему 3.1.8). Этот алгорифм Д называется полным повторением алгорифма а под управлением z. Теорема 3.1.10. Какой бы ни был нормальный алгорифм а в алфавите А, существует такой нормальный алгорифм а7 над алфавитом B-AkjC, где С = {1, *}, что для любого слова р в А и любого натурального числа к имеем ?! (к *р) = Q тогда и только тогда, когда существует последовательность словро, Pi, ..., Pk (к > 0), удовлетворяющая условиям: ро = р, Рк = Q, Pi = MPi-i) для /= /, 2, ..., п. Доказательство. Пусть а — какая-нибудь буква, не входящая в алфавит В. Положим D = В и {а}. Рассмотрим нормальные алгорифмы в D, которые задаются такими схемами: [а 11 —> .1 а 1*—>а* В! =]а*£->а* (^е В). а* —>.е [е —>а Нетрудно убедиться, что вг( 0 * р) = е и Bi( п * р)Фе, если п > 0. [* —>е Если р не включает символ *, то в2(р * Q) = р. Га 1->а В3 = \ос * —> .е. е —>а В2 =
Глава 3. Элементы теории алгоритмов и математической логики 159 Очевидно, что в3( п * р) = р для любого р е F(B). в4 = {1 -> .е, в5= {1*-^.е. Очевидно, что в4( п * р) = п -1 * р, когда п > О, и в4( 0 * р) = *р. Кроме того, в5(6 *р)=р. Пусть теперь z — такой нормальный алгорифм, что z(p) = (в2 • в4)(р) * (а • в3)(р) для любого слова р е F(D) (см. следствие 3.1.1). Отсюда получаем \/р е F(A)\ 2(й*р) = Р*А(р)'еСЛИИ>°' [ *В(р), если и = 0, где в — полное повторение алгорифма а. Обозначим через Е алфавит алгорифма z. Из следствия 3.1.2 следует, что найдется такой нормальный алгорифм ф над Е, что ф(р) = Q тогда и только тогда, когда существует последовательность слов ро, Р\, • •., Рк(к ^ 0), которая удовлетворяет условиям: Ро = p,Pk = Q, вх(рк) = е, pi = z{p,. ,), (0 <1<к) и B(pi) *e(0<i< к). Теперь нетрудно убедиться, что ау = в5 • ф. Теорема доказана. Теорема 3.1.11. Всякая частично рекурсивная функция частично вычислима по Маркову. Доказательство. Для того чтобы доказать теорему, необходимо показать вычислимость по Маркову простейших функций, а также вычислимость операций суперпозиции, примитивной рекурсии и минимизации частично рекурсивных функций. Вычислимость по Маркову простейших функций о, s и /'" следует из теоремы 3.1.4. Операция суперпозиции. Пусть функция (р построена из функций/,/i, ...,/* с помощью операции суперпозиции: фОь ..m^/i)=/(/1Ui. ...,*„), ...,/*C*i» ....*„)), где/,/ь ...,fk— частично рекурсивные функции. Допустим, что Существуют нормальные алгорифмы А^, Ад, ..., А^ над М= {1, *}, которые частично вычисляют соответствующие функции. Тогда из следствия 3.1.1 следует, что существует нормальный алгорифм в над М, такой, что ■В(р)«А/(р)*А/(р)*...*А/ (р)
160 Часть I. Математические основы для любого р е F(M). В частности, В(х},...,хп) = fx(xl9...,xn)*...* fk(xx,...,xn) для любых натуральных чисел х\, jc2, ..., х„. Положим z = А/- в. Тогда для любых натуральных чисел х\,хг, ...,хп будем иметь Z((jC|,...,jcll)) = Av(/,(jc,,...,jcll),...,/Jk(jc,v..,JcII)) = = <P(/|(^lv.-^II),...,/it(jC|,...,JC|I)). Операция рекурсии. Пусть функция / построена по функциям g и h с помощью операции примитивной рекурсии flxu ...,*„,)> + 1) = A(jci, ...,*„,)>, Д*ь ...»*#i,y))» и пусть Ag и Ah— нормальные алгорифмы над М такие, что частично вычисляют соответственно функции g и h. Наконец, пусть Ао, а, и А"п — нормальные алгорифмы, вычисляющие простейшие функции о, s и /,'*. С помощью алгорифмов Аш можно построить (следствие 3.1.1) такой нормальный алгорифм Bi над A/, 4TO.Bi (х\, ..., хп* у)= х\ * ... * хп. Пусть в = а8 • В]. Исходя из алгорифмов a£+J, Af+1, ..., A^+1, Ао, в и следствия 3.1.1, строим нормальный алгорифм в2 над Мтакой, что В2(х, *... * хп * у) « у * хх *... * хп * 0 * g(x{,..., хп). Нормальный алгорифм В3=Ад.-А*+12 работает так, что B3(jcj *...**„ *у*х) = у + 1. Снова, применяя следствие 3.1.1 к алгорифмам Aj+ ,..., Ak+2, В3 и А/, получаем нормальный алгорифм В4 над Мтакой, что В4(х, *...**„ *?**) = *! *...**„ *y + l*h(xx,...,xn,y,x). По теореме 3.1.10 существует такой нормальный алгорифм В4, что при любом п>0 равенство В4(п* p)=q выполняется тогда и только тогда, когда существует последовательность слов р0> Ри ...» Рт удовлетворяющая условиям р0= р, Pn = q и p/ = B4(p/_i), где 0</<п. Тогда алгорифм В = AJt+i • В4 • В2 и есть искомый алгорифм, вычисляющий функцию/. Действительно, B2(xx*...*xn*y) = y*xl*...*xn*0*g(xx,...,xn).
Глава 3. Элементы теории алгоритмов и математической логики 161 Применение В4 к слову у*^ *••.**„ *0* g(xy,...,xn) очевидно равносильно у-кратному применению в4, начиная со слова х} *...**„ *0*^(дс1,...,хл). Нетрудно понять, что при этом получаем слово х\ *... * хп * у * /(л^ *... * хп * у). Применив к этому слову алгорифм Ак\2 > получаем f(xl *... * хп * у). Операция минимизации. Пусть Дл:ь ..., дся) = Му(£(*ь • •, ля, у) = 0), и Ag — нормальный алгорифм над М, вычисляющий функцию g. Исходя из алгорифмов A{,+1,...,Ajj+1 и As A"+1, построим алгорифм М такой, что M(j?i *...*хп * у ) = х{ *...* jt„ *у + 1. Рассмотрим нормальный алгорифм Д над Л/, который определяется схемой Jl1 —>.1 Если п = 0, то Д(и) = е, а если п > О, то Д(и) * е. Пусть Z= Д • Ag9 тогда zu-,......„.5>{:e-8,<jri"-w;:°' [ *е, g(*!,...,*„, у )*0. Пусть теперь Р— нормальный алгорифм над Л/, такой что Р(хх *...**„ * у ) = *! *...*хп *0. Из следствия 3.1.2 следует, что для алгорифмов миг существует нормальный алгорифм в над Л/, для которого в(р) = g выполняется тогда и только тогда, когда существует последовательность ро,ри • •., Рп, такая что р0 = р,рп = q, z(p„) = e,pi+{= м(р,-) и z(p/) * е для f = 0, ..., л-1. Определим теперь нормальный алгорифм Г = А"+}-ВР. Нетрудно видеть, что r(xx*...*xn)=\iy(g(xl9...9xn9y) = 0) = f(x]9 ...,*„). Таким образом, если flx\, ..., хп)— частично рекурсивная функция, то существует некоторый нормальный алгорифм такой, что Af(x{ *...**„ ) = /(х,, ...,*„). Пусть А(*! *...**,J = AJ4*!*...**„ )*...*А"(л1 *...**„ ) = *|*...* *„. Тогда Z(J1*...*J/I) = A/-A(x,*...*I/l) = /(^1, ...,*„). Причем z применим к тем и только к тем словам р из F(M), которые имеют вид 3cj *... * хп и для которых Д*ь • • •, *л) определена. Теорема доказана.
162 Часть I. Математические основы Имеет место и обратная теорема. Теорема 3.1.12. Всякая частично вычислимая по Маркову функция является частично рекурсивной. Доказательство этой теоремы выходит за пределы материала данной книги и поэтому не приводится. При необходимости это доказательство можно найти, например, в монографии [31]. Из теорем 3.1.10 и 3.1.11 следует, что все, что вычисляется, можно вычислить в свободных моноидах. Этот факт подчеркивает важность понятия свободного моноида и его роль в теории алгорифмов. В следующих разделах мы еще вернемся к понятию нормального алгорифма Маркова и свободного моноида. 3.1.6. Контрольные вопросы □ Какие функции называются простейшими? □ Дайте определение операций суперпозиции, примитивной рекурсии и минимизации. □ Какая функция называется примитивно рекурсивной, частично рекурсивной? □ Сформулируйте тезис Черча, тезис Тьюринга. □ Какие команды выполняются в алгоритмической системе Поста? □ Чем отличается алгоритмическая система Поста от системы Тьюринга? □ Что такое формула подстановки? □ Что собой представляет алгорифмическая система Маркова? 3.1.6. Задачи и упражнения 1. Докажите, что: • х + у = s(x) + s(y)\ • х + (у+х) = у + (х + у)\ • x + (y + z) = (x + y) + z\ • (х - у) -з- z = (х - z) + у. 2. Докажите, что если функция/(*i, *2, ..., хп) примитивно рекурсивна, то приведенные ниже функции тоже примитивно рекурсивны: • g(xux29 ...,*„) =/(х2.*ь*з. ...,хп)\ • g(Xu ХЪ ..., Хп) = Д*2, *3, ... > Хм
Глава 3. Элементы теории алгоритмов и математической логики 163 • g(xux29... , ХПу Хп+\ ) =Д*1, х29 ..., хп) (введение фиктивного аргумента); • g(x\9 х2, ..., *„_i) =f(x\, xu х29 ..., хп.\) (отождествление аргументов). 3. Докажите, что функция f(x) = x\ примитивно рекурсивная. 4. Какие функции можно построить из функций / и h с помощью операции примитивной рекурсии: • f(x) = х9 h(x9 у, z) = z\ • f(x) = x9h(x9y9z)=x?l 5. Докажите, что приведенные ниже функции примитивно рекурсивные: 10, если л; = 0; 1, если *>0; — [1, если х = 0; • sg(jc) = \ [0, если *>0; • max (х, у); • min (jc, у). 6. Докажите, что приведенные ниже функции частично рекурсивные: • нигде не определенная функция е; 1х-у, если х> у; не определена в остальных случаях; Где/ у, если уделит х\ [не определена в остальных случаях; U, если zy =x\ • /(*, у) = \ [не определена в остальных случаях; • функция, определенная лишь в конечном числе точек. 7. Докажите, что если z, g,h — частично рекурсивные функции, то частично рекурсивными будут и такие функции: • \iy[z(xux2, ...9x„9y) = g(xux29 ...,ля,у)]; • \iy[z(xux29 ...,xn9y)*g(xux29 ...9хП9у)]9 • \iy[z(xux29 ...9xn9y)<g(xi9x29 ...9хП9у)]9 • [iy[z(xux29 ...,xn9y)<g(x\9x29 ...,*„, у)];
164 Часть I. Математические основы • |iy [z(xu x2, ..., хП9 у) = 0 & g(xu х2, ..., хп, у) = О]; • Ну b(*i, ^2 ^j) = Ov g(xu хъ ...9хП9у) = О]; • Цу [г(дсь л:2, ..., дсп, у) = О v g(xb *2. . •., хпч у) < h(xu х2, ..., хП9 у)]. 8. Покажите, что алгорифм, который построен в теореме 3.1.5, действительно является суперпозицией алгорифмов айв. Покажите, что алгорифм, приведенный в теореме 3.1.6, выполняет одновременную подстановку слов р\, ..., р* вместо слов q\, ..., ць в слове р. 9. Пусть Х= {au a2, ..., an} ире F(X) — произвольное слово. Опишите действия нормальных алгорифмов Маркова, которые задаются схемами: • S={e->.p; S = 5 = a£->£ot a—>.p e->a, где ae X, £g X\ ax —>e a2 —>e -> .p 10. Постройте нормальные алгорифмы, вычисляющие значения операций cone, head и tail в алфавитеХ= {щ, а2, ..., ап). 11. Постройте нормальные алгорифмы, вычисляющие значения операций сложения, модуля разности двух чисел, усеченной разности, умножения. 12. Покажите, что приведенные ниже функции вычисляются машинами Тьюринга: • о(п)и 1"х(кикп)\ • m + п и т-ь 1; • т -*- и и т • и; • conv(p) = XkXk-1.. Jti, где р = XiX2.. .**. 13. Напишите программу работы машины Поста для вычисления значений таких функций: • о(х) = 0;
Глава 3. Элементы теории алгоритмов и математической логики 165 • /£(ть ...,mn) = mk\ • tin) = 2л; • m + и; • conv(p) = *рсы jci, где р = х\Х2.. .**. 3.2. Исчисление высказываний 3.2.1. Алфавит и формулы Пусть Л/= {Л, В, С, ..., X, У, Ль .} — алфавит переменных (конечный или счетный). Каждая из переменных этого алфавита может принимать одно из двух значений ДА (истина— 1) или НЕТ (ложь— 0), а сами переменные в этом случае будем называть высказываниями. Иначе говоря, высказывание — это или ложное, или истинное высказывание, но не то и другое вместе. Пример 3.2.1. Высказывания □ А — Снег белый. □ А\ — Аня студентка университета. □ X— Группа САПР насчитывает 30 студентов. * Элементы алфавита Д/, которые используются для высказываний, будем называть пропозициональными переменными, или атомарными формулами, или просто атомами. Из высказываний можно строить составные высказывания, используя атомарные формулы и логические связки. В логике первого порядка и, в частности, в логике высказываний используют пять логических связок: □ -|(нет); а & (и); □ v (или); □ —> (если..., то); □ <=> (тогда и только тогда). Пример 3.2.2. Составные высказывания □ Снег белый, и температура ниже нуля. □ Если Петр на занятиях, то Аня дома. □ Петр — студент института или рабочий ДОК. *
166 Часть I. Математические основы Определение 3.2.1. Правильно построенными формулами (ППФ) в логике высказываний являются формулы: 1. атомарная формула является ППФ; 2. если А — ППФ, то -лА — тоже ППФ; 3. еслиСиЯ— ППФ, то (G & Я), (G v//), (G-> Я), (G <=>//) — тоже ППФ; 4. никакие другие формулы, кроме формул, порожденных правилами 1-3, не являются ППФ. ППФ еще называют словами в алфавите А1, построенными с помощью логических связок. Подформулой ППФ А называется всякое подслово слова А, такое, что само является ППФ. При записи формул можно обойтись без некоторых скобок, если приписать ранги логическим связкам. Ранги логическим связкам чаще всего задаются в таком порядке (от низшего к высшему): <=>, —>, v, &, —i. Пример 3.2.3. Высказывания и формулы □ Р — влажность большая. □ Q — температура высокая. □ С— мы чувствуем себя хорошо. Высказывание "если влажность большая и температура высокая, то мы не чувствуем себя хорошо" можно записать в виде формулы ((Р & Q) —> (—\С)) или с учетом рангов операций: Р & Q —> —\С. * Вычисление значений формул. Значения формул -v4,Av В, А & В, А —> В и А <=> В задаются с помощью таблиц, которые называются таблицами истинности. А 1 0 -тА 0 1 А 1 1 0 0 В 1 0 1 0 AvB 1 1 1 0 А&В 1 0 0 0 А->В 1 0 1 1 А<=*В 1 0 0 1 Из этих таблиц видно, что логические связки, если их рассматривать как операции на множестве формул, удовлетворяют законам коммутативности, ассоциативности, дистрибутивности и другим законам (см. упр. 1 в конце разд. 3.3).
Глава 3. Элементы теории алгоритмов и математической логики 167 3.2.2. Интерпретация формул логики и высказываний Приписывание значений (то есть значений 1 или 0) атомарным формулам, которые входят в составные формулы, называется интерпретацией. Формально это можно сформулировать так. Определение 3.2.2. Отображение h: Al—> {0, 1} называется интерпретацией, если для любых формул А, В исчисления высказываний h удовлетворяет таким условиям: К-лА) = -Л(Л), h(A&B) = h(A)&h(B), h(A v В) = h(A) v h(B). Следовательно, задавая интерпретацию А, можно вычислить с помощью таблиц истинности значение произвольной заданной формулы А. Пример 3.2.4 Пусть А = ((Ах &А2) v -Ах) & -лА2 и h(Ax) = h(A2) = 0. Тогда h(A) = h((A{ &A2) v -Ах) & h(-nA2) = (h(Ax) & h(A2) v -пА(Д,)) & -,h(A2) = = ((0 & 0) v -nO) & -.0 = (0 v 1) & 1 = 1 & 1 = 1. < Определение 3.23. Говорят, что формула А исчисления высказываний истинна при некоторой интерпретации h тогда и только тогда, когда h(A)= 1, в противоположном случае говорят, что А ложна при интерпретации h. Если h(A) = 1, то интерпретацию h называют моделью для формулы А. Определение 3.2.4. Формула А исчисления высказываний называется тавтологией (противоречием), если она принимает значение 1 (0) независимо от интерпретации. Определение 3.2.5. Если формула А —» В — тавтология, то говорят, что из формулы А логически следует формула 5, или что формула В— логическое (семантическое) следствие формулы А в исчислении высказываний. Если формула А <=> В — тавтология, то говорят, что формулы А и В логически (семантически) эквивалентны в исчислении высказываний. Таблицы истинности дают нам эффективную процедуру для решения вопроса: является ли данная формула тавтологией. Пример 3.2.5 □ Будет ли формула ((А —> В) —> В) —> В тавтологией?
168 Часть I. Математические основы Решение. А В А-»В (А->В)->В ((А->В)-»В)-»В 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 Ответ: приведенная формула не является тавтологией. □ Известно, что А и А —> В— тавтологии. Доказать, что В — тоже тавтология. Решение. А В А -> В Если бы В принимала значение 0, то А -»В была бы 1 1 1 противоречием, а этого не может быть по условию. 1 0 1 Таким образом, В должна быть также тавтологией. □ Будет ли тавтологией формула А —> А1 Решение. А А->А 1 1 О 1 Значит, приведенная формула является тавтологией. < 3.2.3. Полные системы связок Всякая формула от п переменных порождает соответствующую функцию истинности от п аргументов, т. е. может рассматриваться как булева функция. Логически эквивалентные формулы порождают одну и ту же функцию истинности, и возникает вопрос: а все ли функции истинности порождаются таким образом? Теорема 3.2.1. Всякая функция истинности порождается некоторой формулой, имеющей лишь связки —i, &, v. Доказательство. Пусть f{xu x2, ..., хп) — заданная функция истинности. Очевидно, что/может быть представлена таблицей истинности с Т строками,
Глава 3. Элементы теории алгоритмов и математической логики 169 где каждая строка включает некоторое распределение значений истинности для переменных хи х2, ..., хп и соответствующие значения f(xu х2, ..., хп). Пронумеруем строки этой таблицы натуральными числами 1,2, ..., Т. Пусть для каждого /= 1, 2, ..., 2п С, обозначает конъюнкцию U[ & Ul2 & ... &Uln, где Ulj G Aj9 если в /-ой строке таблицы истинности Xj принимает значение 1, или Ulj e -u47, если х} принимает значение 0. Пусть D — дизъюнкция всех С, таких, что/в /-ой строке принимает значение 1. Если таких строк нет, то / всегда 0, и тогда нашей теореме удовлетворяет формула (А[ & -tAi). Покажем, что таблица истинности D совпадает с/. Действительно, пусть дано некоторое распределение значений истинности атомарных формул А\, А2, ..., АП9 и соответствующее значение/для этой строки представлено &-ой строкой. Тогда С* имеет значение 1, в то время как другие С, имеют значение 0. Если значение С* равно 1, то Q является членом D, и тогда D принимает значение 1. Если же/имеет значение 0 в этой строке, то С* не входит в D, и поскольку все оставшиеся С, ложны на этом наборе, то и D ложна на этом наборе. Что и нужно было доказать. Пример 3.2.6 1. а *1 1 0 1 0 *2 1 1 0 0 f(xu х2) 0 1 1 1 Ci = -А & д>, С2 = А, & -,А2, Оз = -Л & -.Д>, Следовательно D = {-А\ & А2) v (А\ & -тА2) v (-1A1 & -тА2). 2. хЛ х2 f(xux2) 1 C, = A,8i A2f 1 С2 = -.^ & А2, О 1 С3 = -А & -пД>. Таким образом, D = (А\ & А2) v (-А\ & А2) v (-А\ & -тА2). Преобразуя данную формулу в соответствии с законами ассоциативности, коммутативности и дистрибутивности, как было определено выше, имеем: D = (гАх & -iA2) v ((Л, v -тА,) & А2) = (-iAi & -iA2) v A2 = = (-iAi vv А 2) & (-iA2 v A2) = -iAi v A2. 1 0 1 0 1 1 0 0
170 Часть I. Математические основы Заметим, что J{x\y x2) как раз и есть функция истинности для формулы А\ —» Л2, т. е. А\ —» А? <=> —А\ v А2. *1 1 0 1 0 *2 1 1 0 0 f(xb х2) 1 0 0 1 Сл = Ал & А2 . С2 = "4^1 & —i^2 . Значит, D = Ы, & -тД2) v (Л, & Л2) = (-iAi v (Ai & А2)) & ЬА2 v (А, &А2)) = = ((-И, v АО & (-v\, v Л2)) & ((-пД2 v Л,) & (-тА2 v А2)) = (-iAi vA2) & (iA2vAi). Таким образом, Л, » Л2 = ЬЛ, v Л2) & (iA2 v Л,) = (Л, -> Л2) & (Л2 -> Л,). < Нетрудно проверить, что имеют место такие формулы: Л & В <=> -i(-u4 v -ifi) <=» -.(Л -> -ifi), Avfl^ -,(-тЛ & -iB) <=> -Л -> В. Теорема 3.2.2. Всякая функция истинности f порождается формулой, которая имеет только одну из следующих пар логических связок: (-% &), (-i, v), (—>, -1). Теорема 3.2.2 представляет собой обобщение теоремы про полноту системы соответствующих операций для булевой алгебры. 3.2.4. Система аксиом для исчисления высказываний Формальная аксиоматическая теория Th считается определенной, если выполнены такие условия. □ Задан некоторый счетный алфавит— символы теории 77г. Конечные последовательности символов теории Th называются выражениями Th. В Задано подмножество выражений теории Th, элементы которого называются формулами, а само подмножество — множеством формул теории Th (Часто существует алгоритм, с помощью которого можно выяснить, есть или нет данное выраэюение формулой). □ Задано подмножество множества формул, элементы которого называются аксиомами теории Th. (Если есть возможность проверить, является ли данная формула аксиомой, то Th называется эффективно аксиоматизированной или аксиоматической теорией).
Глава 3. Элементы теории алгоритмов и математической логики 171 □ Дано конечное множество /?ь /?2, .--9Rn отношений между формулами, которые называются правилами вывода. Для любого отношения Я} 3/ из N+ такого, что для множества формул А\у Аг, ..., Aj и любой формулы А эффективно решается вопрос о том, находятся ли данные формулы Аь А2, Aj в отношении /?, с формулой А или нет. Если (А\, Аг, ..., Д/, А) е /?,-, то А называется непосредственным следствием формул А\,Аг, •••, Aj в соответствии с правилом /?, (Ль ..., А7) (/?,) |-А). Выводом в Th называется всякая последовательность формул Аи Аг, ..., А„, такая, что любая из формул А-х является либо аксиомой, либо непосредственным следствием некоторых предыдущих формул в соответствии с одним из правил вывода. Формула А называется теоремой теории Th, если существует вывод в Th формулы А9 такой, что в нем последним элементом является формула Л. Этот вывод называется выводом формулы А в Th. Если существует алгоритм для проверки, является ли А теоремой теории 77г, то теория Th называется разрешимой теорией, иначе — теорией, которая неразрешима. Формула А называется следствием в Th множества формул /"тогда и только тогда, когда существует такая последовательность формул А\9 ..., Ап, что Ап=А, и любая из формул А{ является либо аксиомой, либо элементом Г, либо непосредственным следствием некоторых предыдущих формул в соответствии с одним из правил вывода. Последовательность А\, ..., Ап называется выводом А из Г, а элементы множества Г — гипотезами вывода. Запись Г У А означает, что А является следствием множества формул Г. Формальная аксиоматическая теория Th для исчисления высказываний задается таким способом. 1. Символами Th являются "-Г, "-»", "," и буквы А{ из алфавита А1. Символы "-l", "—»" называются примитивными связками, a At— пропозициональными переменными или пропозициональными буквами. 2. Все Ах являются формулами Th. Если А и В— формулы ГЛ, то (—\А), (А —> В) — формулы Th. 3. Для любых формул А, В, С теории Th аксиомами (точнее, схемами аксиом) являются следующие формулы: • Al A->(£-> А); • А2 ((А -> (В -» О) -» ((А -> В) -> (Л -> О); • A3 ((-iB -> -тА) -» ((-ifi -» А) -» В).
172 Часть I. Математические основы 4. Единственным правилом вывода служит правило отделения или правило modus ponens (MP, правило отделения): А,А->В |-В. Другие связки можно ввести с помощью уже известных нам формул: А & В <=> -i(A -> -.В), A v В <=> -v4 -> 5, Л <=> S <=> (Д -> В) & (В _> Л). Пример 3.2.7 1. А-*Ае Th. Доказательство. Подставим А —> А в аксиому А2. (А -> ((Л -»Л) -»Л)) -»((А -> (А -» А)) -»(А -» А)). Но (А -> ((А -> А) -> А)) — это аксиома А1, и по правилу MP получаем А-^> (А-> А)-) (А-* А). Но А —> (А —> А) — это аксиома А1, и снова по правилу MP получаем А-^>А. 2. (-ъ4->А)->А)е Г/г. Доказательство. Из A3 имеем ((-А -» -iA) —> ((-iA —> А) —> А). По предыдущей теореме и по правилу MP имеем (-А —> А) -» А. * ЕслиЛГ— некоторое подмножество множества аксиом К, то множество ^называется независимым, если никакая формула из множества Хне может быть выведена с помощью правил вывода из множества аксиом YIX. Имеет место такая теорема. Теорема 3.2.3. Каждая из аксиом А1-АЗ независима. Доказательство этой теоремы опускается, но при необходимости его можно найти, например, в [32, 54]. Система аксиом А1-АЗ теории Th не единственная. Существуют и другие аксиоматизации исчисления высказываний. Приведем некоторые из них. Аксиоматизация Гильберта-Аккермана. Логическими связками являются —» и v, а А —> В служит сокращением для формулы -ui v В. Аксиомы: □ ГА1А vA->A; □ ГА2А->А vB; □ rA3AvB->£vA; □ ГА4 (В -> О -> ((A v В) -> (A v Q).
Глава 3. Элементы теории алгоритмов и математической логики 173 Правило вывода: MP. Аксиоматизация Россера. Логические связки &, —■, а А —> В служит сокращением для формулы -у{А & -пВ). Аксиомы: □ РА1А->(Д&Д); □ РА2(А&В)Д; □ PA3(A->fi)-»(-i(fi&Q->-i(C&A)). Правило вывода: MP. Другие аксиоматизации исчисления высказываний можно найти в [28, 33]. 3.2.5. Теорема дедукции Приведенная ниже теорема, которая носит название теоремы дедукции, достаточно полезна при доказательстве теорем, поскольку она дает новое правило вывода. Теорема дедукции. Если Г— множество формул, А и В — формулы из Г, А У В, то Г У А —> В. В частности, если А {• В, то \- А —> В. Доказательство. Пусть Ви Вг, ..., Вп— вывод из Ги {Л} формулы В, т. е. Вп = В. Доказательство будем вести индукцией по i — длине вывода (1 < / < п) формулы В. i = 1. В этом случае В\ должна быть либо: □ элементом Г, □ аксиомой, О самой формулой А. В первых двух случаях теорема следует из того, что по схеме А1 имеем В\ —> (А —> Si). Отсюда по MP получаем, что Г |- (А —» В{). В последнем случае, т. е. когда А = Ви из доказанного выше имеем, что А -* А — теорема. Следовательно, Г \- А —> А и случай / = 1 этим исчерпан. Пусть теперь /"|-Л—> В* справедливо для всех k<i. Покажем, что Г У А —> В/. В данном случае возможны такие варианты: □ Bt является аксиомой; □ Bt является элементом Г\ □ В( = А\ О Bi является следствием по правилу MP некоторых формул Bj и Вт, (/, т < 0, и Вт имеет вид Bj -» В,.
174 Часть I. Математические основы Доказательство первых трех случаев ничем не отличается от приведенного выше доказательства при / = 1. В последнем случае, используя принцип индукции, имеем 7"|-Л—> В, и Г \- А —»(Bj■ —> Bt). По схеме аксиом А2 имеем (А —»(Bj -» Bi)) —> ((Л —> Bj) —> (А —> Bi). Следовательно, по правилу MP получаем Г \- (А —> Bj) —> (А -» Bi) и снова по правилу MP — Г \- А —> Bt. Теорема доказана. Пример 3.2.8 Доказать теоремы. 1. А->В,В->С |-А->С. Доказательство. 1. А -» В — гипотеза. 2. В —> С — гипотеза. 3. у4 — гипотеза. 4. В— по MP из 1,3. 5. С— по MP из 2, 4. Следовательно, А —» В, В -» С, Д |- С, и по теореме дедукции имеем Л->В,В->С [-Д->С. Эта теорема показывает, что операция импликации является транзитивным отношением. 2. Д->(В->С), В \-А->С. Доказательство. 1. А —»(В -» С) — гипотеза. 2. В—гипотеза. 3. А — гипотеза. 4. В -> С— по MP из 1,3. 5. С—по MP из 4, 2. Следовательно, А -» (В -> С), В, Л |- С, и по теореме дедукции имеем Л->(В->С),В |-Л->С. 3. -n-iB-^B. Доказательство. 1. (-.В —» -.-.В) -» ((-iB -» -.В) —» В) — схема аксиом A3.
Глава 3. Элементы теории алгоритмов и математической логики 175 2. -iB —> -ifi — теорема 1 из примера 3.2.7. 3. (-ifi —» —i—iB) —> В — теорема 2 из данного примера. 4. —i—iS —> (—ii5 —> —i—ifi) — схема аксиом Al. 5. -i-ifi —> В — теорема 1 из данного примера. 4. В->^^В. Доказател ьство. 1. (-i-i-iZ? -» -|Д) —> ((-i-i-ifi —» В) -» -i-iB) — схема аксиом A3. 2. —i—i—iS —» -лВ — теорема 3 из данного примера. 3. (-i-i-iB -> В) -> -.-.В — по MP из 1, 2. 4. В —> (-1—i-iB —> В) — схема аксиом А1. 5. В —> -i-iB — теорема 1 из данного примера и по MP из 3, 4. Сопоставляя теоремы 3 и 4, получаем такую теорему: В « -.-iB, которая выражает известный нам из булевых алгебр закон двойного отрицания. 5. -ъ4->(Л->В). Доказательство. 1. —Л — гипотеза. 2. А — гипотеза. 3. А —> (—iB —> Л) — схема аксиом А1. 4. -,В-^Л — по MP из 2, 3. 5. -Л —> (-iB -» -тЛ) — схема аксиом А1. 6. -iB -> -v\ — по MP из 5, 1. 7. (-iB -» -тЛ) —> ((-.В -> Л) —> В) — схема аксиом A3. 8. (-1В->Л)->В — по MP из 6, 7. 9. В —по MP из 4, 8. Итак, -i4, Л |- В, и по теореме дедукции имеем |- -Л -> (Л -» В). 6. (-1В->-тЛ)->(Л->В). Доказательство. 1. -iB—>-тЛ — гипотеза. 2. Л — гипотеза.
176 Часть I. Математические основы 3. (-\В -» -А) —> (-iB —> Л) —> В) — схема аксиом A3. 4. А —> (-.В —> А) — схема аксиом А1. 5. (-нВ->А)->В — по MP из 1,3. 6. А —> В — теорема 1 из данного примера. 7. В —по MP из 2, 6. Следовательно, -iB —> -i4, A |- В, и по теореме дедукции имеем |-(-iB->-tA)->(A->B). 7. (А-> В)-> (-.В->-пА). Доказательство. 1. А ^> В — гипотеза. 2. -г-«А —> А — теорема 3 из данного примера. 3. -i-iA —> В — теорема 1 из данного примера. 4. В —> —1-пВ — теорема 4 из данного примера. 5. -1—«А —> -1—iB — теорема 1 из данного примера. 6. (—1—тА -» -1-1Д) -» (-пВ —> -А) — теорема 6 из данного примера. 7. -iB -> -А — по MP из 5, 6. Следовательно, А -» В |- -iB —> -А, и по теореме дедукции имеем |- (А -> В) -> ЬВ -> -А). Сопоставляя теоремы 6 и 7, получаем такую теорему: А —> В <=> -.В -» -А, на которой основывается метод доказательства утверждений, известный под названием метод доказательства от противного. 8. А -» (-iB -> -.(А -> В)). Доказательство. Поскольку А, А -> В \- В, то по теореме дедукции имеем А-* ((А -* В)—> В). По теореме 7 имеем [- ((А -> В) -> В) -» (-iB -> -i(A -> В)). И, наконец, по теореме 1 из данного примера получаем искомое |-A->(-nB->-i(A->B)). 9. (А -» В) -> ((-А -> В) -> В). Доказательство. 1. А —> В — гипотеза.
Глава 3. Элементы теории алгоритмов и математической логики 177 2. —А —> В — гипотеза. 3. (А —» В) —» (-i5 —> —Л) — теорема 7 из данного примера. 4. -пВ -> -тА — по MP из 1, 3. 5. (-Л —» 5) —> (-iB —» —1—u4) — теорема 7 из данного примера. 6. -iB->-i-tA — no MP из 2, 5. 7. (—\В —» —i—ьЛ) —» (-i# —> —А) —» В) — схема аксиом A3. 8. (-пЯ -> -тА) -> В) — по MP из 6, 7. 9. В —по MP из 4, 8. Следовательно, Л —> В, —Л —> В |- В, и по теореме дедукции имеем (Л -> Я) -> ((-.А -» В) -> В). < 3.2.6. Непротиворечивость и полнота исчисления высказываний Теория L называется непротиворечивой теорией, если либо Л, либо —Л является теоремой теории 7%, т. е. существует вывод в Th либо А, либо —А. Теорема 3.2.4. А е Th тогда и только тогда, когда А — тавтология. Доказательство. В одну сторону доказательство следует из того факта, что аксиомы А1-АЗ являются тавтологиями, в чем нетрудно убедиться. А применение правила MP к тавтологиям приводит снова к формуле, которая является тавтологией. Следовательно, всякая теорема Th — тавтология. В другую сторону теорема доказывается сложнее и требует доказательства вспомогательного утверждения. Лемма 3.2.1. Пусть А — формула, a Blt В2, ..., Bk— пропозициональные переменные, входящие в формулу А, и пусть задана некоторая интерпретация h. Положим В{ равным Bit если h(Bt) = 1, и равным —Д, если h(Bi) = 0, и, наконец, А' равным А, если h(A) = 1,и -Л, если h(A) = 0. ТогдаВх',В2', ...,В/ \-А'. Доказательство ведется индукцией по числу п вхождений в формулу А логических связок (обычно предполагается, что формула А записана без сокращений). Если п = 0, то А — пропозициональная буква 5, и утверждение леммы сводится к В \-В или -i5 \--\B. Следовательно, при п = 0 лемма верна. Допустим, что лемма справедлива для всех j < п. Случай 1. А имеет вид отрицания \В. Число вхождений логических связок в 5, очевидно, меньше п.
178 Часть I. Математические основы Случай 1а. Пусть Л(В) = 1,тогда h(A) = 0. Таким образом, В' есть В, а А' есть -лА. По предположению индукции относительно формулы В, имеем В/, В{, ...,Вк' У В. По теореме 4 из примера 3.2.8 и MP имеем В/, Вг', ...» В/ |—|—ьВ, но -1-гВ — как раз и есть формула А'. Случай 16. Пусть h(B) = 0, тогда В' есть -iB, а Л совпадает с А'. По предположению индукции имеем В/, Вг', ..., В/ |—iB, что и необходимо было доказать, поскольку -iB и есть А'. Случай 2. Пусть А имеет вид В -> С. Тогда число вхождений логических связок в В и С меньше, чем в А. В силу предположения индукции В/, В{, ..., В/ г В, В/, Вг', .., В/ |- С. Случай 2а. Пусть /г(В) = 0, тогда /г(Л) = 1, и В' есть -iB, а Л' есть Л. По предположению индукции имеем В/, Вг, ...,6/ |—iB, и из теоремы 5 примера 3.2.8 получаем, что Я,',В2',...,Як' |-В->С, но В —> С и есть формула Л. Случай 26. Пусть /г(С) = 1 и h(A) = 1, тогда С' есть С, а А' есть Л. По предположению индукции имеем В\ , Вг , ..., В* |-С, и из схемы аксиом А1 получаем В/, Вг\ .., Вк г В —> С, где В —> С совпадает с А. Случай 2в. Пусть Л(В) = 1 и Л(С) = 0, тогда h(A) = 0и/ есть -лА, В' есть В и С" е —«С. По предположению индукции имеем В/, Вг', ..., В/ г В, В/, Вг', ..., В* рС, откуда по теореме 8 из примера 3.2.8 получаем Bx'9B2\...9Bk' |--,(Д-»С), где -п(В —> С) и есть Л'.
Глава 3. Элементы теории алгоритмов и математической логики 179 Доказательство леммы закончено. Теперь завершим доказательство теоремы 3.2.4. Пусть А — тавтология и В/, В2\ ..., Вк— пропозициональные буквы, входящие в формулу А. При любой интерпретации букв В, в силу леммы 3.2.1 имеем В,',В2', ...,В/ У А {А' совпадает с А, поскольку А — тавтология). Благодаря этому, в случае, когда 5* принимает значение 1, применяя лемму 3.2.1, получаем В/, В{, ..., В/ \-Ач а когда Вк принимает значение 0, то, по той же лемме, получаем В/, В{, ..., —iBic' YА. Отсюда по теореме дедукции получаем В,',В2', ...,ВЫ' \-Вк->А9 В\\ В{, ..., Вк.\ |—\Вк—)А. По теореме 9 из примера 3.2.8 имеем В,',В2', ...,ВЫ' [А. Действуя таким образом и дальше, мы исключим все В, из рассмотрения и придем после к шагов к |- А. Теорема 3.2.4 доказана. Эта теорема дает возможность доказать утверждение, обратное теореме дедукции. Теорема 3.2.5. Если \-А->(В-> ... -> (С-> D)...), то А, В, ...,С \-D. Доказательство. Если А —»(В —> ... —> (С —> £>)...)— теорема, то пусть G, С2, ..., Ск — ее вывод. Тогда вывод СЬС2, ...,СЬ Д-> (В->...-> (C^D)...), А — гипотеза, В—> (... —» (С—> D)...) — по MP из предыдущих двух формул, В — гипотеза, C-^D — по MP из предыдущих двух формул, С — гипотеза, есть вывод формулы D из Л, В, ..., С, те. Д, В, ..., С |-D. Следствие 3.2.1. Формула D является следствием формул А, В, ..., С<=>Д&В&...&С-»0 — тавтология.
180 Часть I. Математические основы Действительно, если Д & 5 & ... & С —> D — тавтология, то A&B&...&C->D = -*(A&B&...&CvD = -Av-iBv...v-nCvD = = -iA vnflv ... v(C->D)= ... = Д->(В-> ... (C->D)...). Последняя формула— тавтология. По теореме 3.2.5 имеем Л, 5, ..., С |-D. Следствие 3.2.2. Формула D есть следствие формул А, В, ...,С *=>А &В & ... &С & -iD — противоречие. Доказательство предлагается как простое упражнение. Пример 3.2.9 Доказать, что -\Р является логическим следствием формул Р —> Q и -»(?. Решение. Из следствия 3.2.1 формула (Р —> Q) & -i<2 —> -i/* должна быть тавтологией. Пользуясь таблицами истинности находим: р 1 1 0 0 Q 1 0 1 0 -IP 0 0 1 1 -,Q 0 1 0 1 P-+Q 1 0 1 1 (р-> 0)& 0 0 0 1 -.Q (P->Q)&-iQ->-hP 1 1 1 1 Следовательно, —\Р есть следствие формул Р —> Q и -i(?- ^ Теорема 3.2.4 обосновывает аксиоматизацию исчисления высказываний, поскольку она утверждает, что синтаксическое следствие (следствие, которое получено в результате вывода из аксиом) является также и семантическим следствием, (то есть тавтологией) и наоборот. Теорема 3.2.6. Теория Th исчисления высказываний — непротиворечивая теория. Доказательство теоремы является простым следствием теоремы 3.2.4. Действительно, если A (-vi) — теорема исчисления высказываний, то A (—iA) должна быть тавтологией. Следовательно, -vl (А) не может быть тавтологией и по теореме 3.2.4 не является теоремой исчисления высказываний. 3.2.7. Исчисление высказываний и булевы алгебры Рассматривая исчисление высказываний Th в целом, нетрудно заметить аналогии между булевой алгеброй и исчислением высказываний (между операциями, между, функциями истинности и выражениями булевой алгебры и т. д.). Выясним, насколько глубоки эти аналогии.
Глава 3. Элементы теории алгоритмов и математической логики 181 Прежде всего отметим, что множество S всех формул исчисления высказываний по теореме 3.2.2 можно рассматривать как универсальную алгебру с двумя операциями — унарной -л и бинарной & и носителем S. Кроме того, с помощью связки <=> можно ввести отношение эквивалентности R на множестве формул S: ARB в том и только в том случае, когда А <=> В. Иначе говоря, ARB <=> h(A) = h(B) для любой интерпретации h. To, что отношение R является отношением эквивалентности, очевидно, но нетрудно убедиться, что отношение R является конгруэнтностью. Действительно, если А, В, С— формулы исчисления высказываний, то из ARB и CRD следует справедливость формул (-пАЩ-пВ) и (A&C)R(B&D); если ARB и CRD, то h(A) = Л(Я), A(Q=A(D) и Л(-тА) = -Л(Д) = -пй(Д) = й(-пв), h(A&Q = h(A) & h(Q = h(B) & h(D) = h(B & D). Следовательно, отношение R является конгруэнтностью на множестве формул 5, и можно рассматривать фактор-алгебру Th IR. Алгебра Th IR называется алгеброй Линденбаума исчисления высказываний или алгеброй высказываний. Основное свойство алгебры Линденбаума дает такая теорема. Теорема 3.2.7. Алгебра Th IR = ([5], {-«, &}), где [S] — множество классов эквивалентных формул, является булевой алгеброй. Доказательство. Поставим в соответствие 0 булевой алгебры формулу А & -тЛ, а 1 — формулу ~п(А & -тЛ). Заметим, что булеву алгебру по законам де Моргана, можно рассматривать так же, как алгебру с двумя операциями: & и —«. После этого доказательство теоремы сводится к простой проверке выполнения законов булевой алгебры, то есть к проверке того, что (А & B)R(B & Л) и т. д. Выполнение этой проверки предлагается как упражнение. Из теоремы 3.2.7 следует, что исчисление высказываний представляет собой модель булевой алгебры. 3.3. Методы проверки тождественной истинности формул исчисления высказываний Из предыдущего параграфа следует простой метод проверки заданной формулы на тождественность, т. е., является ли она тавтологией или противоречием. Для этого необходимо найти ее значения при всех возможных интерпретациях. Будем называть этот метод тривиальным. Хотя он довольно
182 Часть I. Математические основы прост, но основной его недостаток— громоздкость. Существуют более совершенные методы. Рассмотрим некоторые из них. 3.3.1. Алгебраический метод Алгебраический метод базируется на применении законов булевой алгебры (в силу теоремы 3.2.7) для упрощения формул логики исчисления высказываний. Поскольку разные формулы могут принимать одни и те же значения, то есть могут быть логически эквивалентными, то лучше выбрать для соответствующей проверки ту из формул, которая проще. Примерами такого рода преобразований могут служить алгоритмы построения ДНФ и КНФ. Кроме того, если Р — некоторое конечное множество формул, состоящее из п формул, то, пользуясь формулами из Р, можно построить бесконечное множест- во формул, среди которых существует лишь 2 логически разных формул. Алгебраический метод дает возможность выделять это множество формул, т. е. заменить рассмотрение бесконечного множества формул конечным множеством. 3.3.2. Метод Куайна Данный метод представляет собой непосредственное обобщение тривиального алгоритма. Пусть {р, q, ..., г]— упорядоченное множество высказываний, которые встречаются в формуле Р(р, д, ..., г). Возьмем первое из высказываний —р и припишем ему, например, значение 1 (0). Подставим это значение в формулу Р и выполним вычисления, которые могут возникнуть в результате такой подстановки. После выполнения вычислений получим некоторую формулу P\q, ..., г), к которой применяется описанная процедура, т. е. выбираем формулу д, приписываем ей значение 1 (0), выполняем вычисления и т. д. Может случиться так, что на некотором шаге будет получена формула Р", которая является тавтологией или противоречием независимо от значений высказываний, входящих в состав формулы Р". Следовательно, на этом шаге работу алгоритма можно остановить. Таким образом, метод Куайна в некоторых случаях приводит к рассмотрению значительно меньшего количества интерпретаций, чем тривиальный алгоритм. Пример 3.3.1 Доказать, что формула Р = (((р & д) -> г) & (р -> q)) -> (р -> г) является теоремой исчисления высказываний.
Глава 3. Элементы теории алгоритмов и математической логики 183 Решение. Множество высказываний формулы Р— это {р, q, r}. Выбираем высказывание р. При этом возникает два случая. □ р = 1. Тогда Р = (((1 & q) -+ г) & (1 -+ q)) -> (1-» г) = ЦЯ -> г) & д) -» г = А*. Выбираем теперь g и рассмотрим снова возможные случаи. • q = 1. ТогдаР' = ((1 & г) & 1) —> г = г—> г — тавтология. • <? = 0. ТогдаР' = ((0^г)&0)->г = 0-->г= I. □ р = 0. Тогда /> = (((0 & <jf) -> г) & (0 ->(7» -> (0 -> г) = ((0 -> г) & 1) -> 1 = 1 -> 1 = 1. Следовательно, данная формула является тавтологией, а, значит, и теоремой исчисления высказываний. Кроме того, возможные интерпретации формулы г в данной формуле Р не играют никакой роли. * 3.3.3. Метод редукции Метод редукции дает возможность выполнить проверку формул исчисления высказываний путем сведения к абсурду. Он особенно удобен, когда в записи формулы встречается много импликаций. Пусть формула Р имеет вид импликации, например Р = <2 —> R. Допустим, что в некоторой интерпретации h формула Р принимает значение 0. Тогда в соответствии с таблицей истинности для импликации имеем h(Q) = 1 и h(R) = 0. Таким образом, проверка формулы Р сводится к проверке формул Q и /?. После этого данный процесс применяется к формулам Q и R и т. д. Пример 3.3.2 Является ли формула Р = ((р & q) -> г) -> (р -> (q -> г)) тавтологией? Решение. Пусть для некоторой интерпретации h имеем h(P) = 0, тогда h{p -> (q -> r)) = 0 и h((p & q) -> r) = 1. Применим эту же процедуру к первой из формул. Получаем h{p) = 1 и А(9 -» г) = 0. Откуда находим, что hip)=Uh(q)=\ ий(г) = 0. Но полученные значения противоречат тому, что ft((p&qr)->r)=l. Полученное противоречие показывает, что формула Р — тавтология. ^ 7 Зак. 3427
184 Часть I. Математические основы 3.3.4. Метод Девиса-Патнема Прежде чем перейти к изложению этого метода, введем некоторые определения. Литерой называется атом или отрицание атома. Дизъюнктом называется дизъюнкция литер. Единичным дизъюнктом называется однолитерный дизъюнкт. Если дизъюнкт не имеет ни одной литеры, то он называется пустым дизъюнктом и обозначатся 0. Литеры L и —\L называются контрарными. Пусть S— множество дизъюнктов. Суть метода Девиса-Патнема состоит в применении таких четырех правил. □ ДП1. Вычеркнуть все тавтологические дизъюнкты из 5. Множество оставшихся дизъюнктов S' противоречиво тогда и только тогда, когда S противоречиво {Правило тавтологии). □ ДП2. Если существует единичный дизъюнкт L в S, то S' получим из S путем вычеркивания из S дизъюнктов, включающих L. Если S' пусто, то 5 — истинно. В противоположном случае строим множество S" путем изъятия из S' всех вхождений —\L. S" противоречиво тогда и только тогда, когда и 5 противоречиво. Заметим, что если —\L— единичный дизъюнкт, то при вычеркивании —\L он преобразуется в пустой дизъюнкт {Правило однолитер- ных дизъюнктов). П ДПЗ. Литера L некоторого дизъюнкта из S называется чистой в S тогда и только тогда, когда литера —«L не появляется ни в каком дизъюнкте из S. Если литера L чиста в S, то вычеркнем все дизъюнкты, которые включают L. Оставшееся множество 5' противоречиво тогда и только тогда, когда и S противоречиво {Правило чистых литер). П ДП4. Если множество S можно представить в виде {Ах v L) & ... & (Am v L) & (Si v -nL) & ... & {Вп v -nL) & /?, где Ai, Bj и R чисты от L и —\L, S\=A\ &... &Ат& R и $2 = B\ & ... & Вп & /?, то S противоречиво тогда и только тогда, когда (Si v S2) противоречиво, т .е. Si и Бг противоречивы {Правило расщепления). Теорема 3.3.1. Метод Девиса-Патнема — корректный метод. Доказательство. Правило 1. Поскольку тавтология выполняется при любой интерпретации, то S' — противоречие тогда и только тогда, когда и S— противоречие. Правило 2. Если S7 — пустое множество дизъюнктов, то все дизъюнкты из S включают L. Значит всякая интерпретация, которая включает L, выполняет S. Следовательно, S выполняется в этой интерпретации. Покажем теперь, что S"
Глава 3. Элементы теории алгоритмов и математической логики 185 противоречиво тогда и только тогда, когда S противоречиво. Допустим, что S" противоречиво. Если S непротиворечиво, то существует модель М для S, которая включает L. Для S" модель М должна удовлетворять все дизъюнкты, не содержащие L. Теперь, поскольку на М литера -iL противоречива, то модели М должны удовлетворять все дизъюнкты, которые сначала включали —\L. Следовательно, S" выполняется на модели М. А это противоречит тому, что S" не имеет модели. Таким образом, 5 тоже должно быть противоречием. Напротив, пусть S— противоречие. Если S" выполняется при некоторой интерпретации, то существует модель М" для S". Отсюда следует, что всякая интерпретация, включающая модель М" и L, должна служить моделью для S'. Но это противоречит тому, что S не имеет модели. Следовательно, S" должно быть противоречием. Значит, S противоречиво тогда и только тогда, когда S" противоречиво. Правило 3. Допустим, что S' — противоречие. Тогда S будет противоречием, поскольку S'— подмножество множества S. Наоборот, пусть S— противоречие. Если S' выполняется при некоторой интерпретации, то S' имеет модель М. Значит, ни L, ни —\L не находятся в 5', и ни L, ни -iL не находятся в М. Отсюда следует, что всякая интерпретация 5, включающая М и L, является моделью для S. А это противоречит тому, что S не имеет модели. Следовательно, S должно быть противоречием. Таким образом, S'— противоречие тогда и только тогда, когда S— противоречие. Правило 4. Допустим, что S— противоречие. Если Si v S2 выполняется при некоторой интерпретации, то либо Si, либо S2 имеет модель. Когда Si(S2) имеет модель М, то всякая интерпретация S, включающая -iL(L), является моделью для S. А это противоречит предположению. Значит, Si v S2 — противоречие. Допустим теперь, что Si v S2— противоречие. Если S выполняется при некоторой интерпретации, то S имеет модель М. Если М включает -iL(L), то М может удовлетворять Si(S2), а это противоречит тому, что Si v S2 не имеет модели. Следовательно, S должно быть противоречием. Таким образом, S противоречиво тогда и только тогда, когда Si v S2 противоречиво. Теорема доказана. Пример 3.3.3 □ Доказать, что S = (PvQv —*R) &(Pv —iQ) & -»P & R & U противоречива. Решение. • (P v Q v -,/?)& (P v -.0 & -,/> & R & U9 • (Q v -,/?) & (-iQ) &R&U— правило ДП2 с -iP,
186 Часть I. Математические основы • -nR&R&U— правило ДП2 с -.£, • 0 & U — правило ДП2 с -л/?. Поскольку последний дизъюнкт включает пустой дизъюнкт 0, то формула S противоречива. □ Показать, что S = (PvQ)& —1<2 & (—\Р v Q v R) непротиворечива. Решение. • (PvQ)&-,Q&(^PvQvR), • P & (-■/> v R) — правило ДП2 с -н<2, • R — правило ДП2 с Р, • 0 — правило ДП2 с -л/?. Последнее множество представляет собой пустой дизъюнкт. Итак, S непротиворечива. * 3.3.5. Метод резолюций Метод резолюций — это, по сути, обобщение правила однолитерных дизъюнктов Девиса и Патнема. Рассмотрим дизъюнкты вида С: Л С: ^Р v Q. Пользуясь правилом однолитерних дизъюнктов, из С и С можно получить дизъюнкт С": Q. Обобщая данное правило и применяя его к любой паре дизъюнктов (не обязательно только единичных), получаем правило резолюций (ПР). Правило резолюций. Для любых дизъюнктов С и С, если существует литера L в С, контрарная литере Vв С' то, вычеркнув L и L' из С и С соответственно, построим дизъюнкцию оставшихся членов. Построенный дизъюнкт называется резольвентой С и С. Важное свойство резольвенты двух дизъюнктов: С\ и Сг выявляет такое утверждение. Теорема 3.3.2. Пусть даны два дизъюнкта: С\ и Съ Тогда резольвента С дизъюнктов С\ иС2 — логическое следствие С\ и Сг. Доказательство. Пусть С\ = L v С/, Сг = —\L v С{, С = С/ v C2', где С/, С{ — дизъюнкции литер. Допустим, что С\ и С2 выполняются при интерпретации h. Покажем, что С также выполняется при интерпретации h. Пусть L
Глава 3. Элементы теории алгоритмов и математической логики 187 ложна в h. Тогда С\ не может быть единичным дизъюнктом, поскольку С\ был бы ложным в h. Следовательно, С/ должна выполняться в /г, а тогда и С = С/ v С{ выполняется в h. Таким образом, С/ v C{ должна выполняться при интерпретации h. Теорема доказана. Определение 3.3.1. Пусть S— множество дизъюнктов. Резолютивным выводом дизъюнкта С из 5 называется такая конечная последовательность Си Сг> ..., С/с дизъюнктов, в которой каждый из С, либо принадлежит 5, либо является резольвентой дизъюнктов, предшествующих С,, и С = С*. Вывод пустого дизъюнкта 0 из 5 называется доказательством противоречивости 5, или опровержением S. Говорят, что дизъюнкт С может быть выведен или получен из 5, если существует резолютивный вывод С из S. Правило резолюций (ПР) — достаточно мощное правило вывода. В следующих разделах оно будет определено для логики предикатов первого порядка, где и покажем полноту метода резолюций, т. е., что данное множество дизъюнктов S противоречиво тогда и только тогда, когда существует резолютивный вывод пустого дизъюнкта 0 из S. А теперь рассмотрим некоторые примеры применения этого метода в логике высказываний. Примеры 3.3.4. 1. Проверить противоречивость множества дизъюнктов S = {Р, -iP v Q v Л, -.0 v С, -,/? v С, -пС}. Решение. Применяя правило ПР к 5, имеем: 1. Р — дизъюнкт 1; 2. —tPvQvR — дизъюнкт 2; 3. -nQvC — дизъюнкт 3; 4. —\RvC — дизъюнкт 4; 5. —\С — дизъюнкт 5; 6. Qv R — поПРиз 1и2; 7. -./? — по ПР из 4 и 5; 8. -.£> — поПРизЗи5; 9. Q — по ПРиз 6, и 7; 10. 0 — по ПР из 8 и 9. Следовательно, заданное множество дизъюнктов противоречиво, поскольку из него выводится пустой дизъюнкт.
188 Часть I. Математические основы 2. Проверить противоречивость множества дизъюнктов S={PvQ,PvR,^Qv ^/?, -,/>}. Решение. Применяя ПР к S, имеем: 1. PvQ— дизъюнкт 1; 2. Р v R — дизъюнкт 2; 3. -i<2 v "if — дизъюнкт 3; 4. -iP — дизъюнкт 4; 5. Pv-./? — поПРиз 1 иЗ; 6. Q — по ПР из 1 и 4; 7. Pv-i(2 — поПРиз2иЗ; 8. Л —по ПРиз 2 и 4; 9. Р — по ПР из 2 и 5; 10. -.Я —по ПРиз 3 и 6; 11. -.£ — поПРизЗ и 8; 12. -./? — по ПР из 4 и 5; 13. -»<2 — по ПРиз 4 и 7; 14. 0 — по ПР из 4 и 9. Следует заметить, что проверка множества дизъюнктов на противоречивость с помощью правила резолюций в общем недетерминирована, поскольку строить резольвенты можно разные. Из приведенного примера видно, что описанная стратегия применения правила резолюций не является оптимальной. Вывод пустого дизъюнкта из множества S можно было бы выполнить с меньшим числом резольвент, например: 1. Q — по ПРиз 1 и 4; 2. Л —по ПРиз 2 и 4; 3. -.£ — по ПР из 3 и 6; 4. 0 — по ПРиз 5 и 7. < 3.3.6. Контрольные вопросы □ Что называется атомом? □ Дайте определение ППФ. □ Когда логическая теория считается определенной?
Глава 3. Элементы теории алгоритмов и математической логики 189 О Какая формула называется • тавтологией, • противоречием? □ Сколько аксиом и правил вывода имеет исчисление высказываний. □ Сформулируйте аксиомы исчисления высказываний. Какие вы знаете другие аксиоматизации исчисления высказываний? □ Сколько правил вывода вы знаете в исчислении высказываний? □ Какая взаимосвязь существует между булевыми алгебрами и исчислением высказываний? □ Какая теория называется непротиворечивой? □ Сформулируйте теорему • дедукции, • обратную к теореме дедукции. □ Что называется литерой? □ Какие литеры называются контрарными? □ Что называется дизъюнктом? □ В чем состоит суть метода резолюций? □ В чем состоит суть метода Куайна? □ Назовите правила вывода исчисления высказываний, отличные от правила modus ponens. □ Будет ли теоремой исчисления высказываний формула Л v -ui! 3.3.7. Задачи и упражнения 1. Пользуясь таблицами истинности, попробуйте убедиться в том, что логические связи -I, &, v, которые рассматриваются как операции над формулами, удовлетворяют законам булевой алгебры. 2. Выясните, являются ли формулами исчисления высказываний выражения: • {ASlB)C^D\ • (А&В)->С; • (04->Д)&-пЯ; • ((M)^B)^n(CvD)). 3. Сколькими способами можно расставить скобки в таких выражениях: • A->Bv-,B&C;
190 Часть I. Математические основы А -> В -> С -> -Л -» -.Р; A&flvC&D&CvA? 4. Напишите все подформулы формулы: (((A -4B)&(B->Q)^Mv О); ((Л -> В) -» ((Л -> -Л) -> -Л)). 5. Постройте таблицы истинности для таких формул: ((P-»0v(P->(G&P))); (-.P-»-.(Q&P))->(/>vJ?)); ((P&(G-»P))->-iP); (((P&-.0^G)->(P->G)); ((P & (G v -,p» & ((-.G -> F) v 0)- 6. Докажите, что существуют интерпретации, в которых выполняются формулы: -.(Р->-,Р); ((^->G)->(G-»^)); ((G -> (Р & Л)) & -л((Р v«)^ G))- Докажите, что приведенные ниже формулы являются тавтологиями: ((P-»G)v(P-»-.G)); (P->(G-»(/>&0)); ((Р -»G) -> ((G ->«) -> (/»-* Л))); ((-^->-.0->(G-*P)); (P^(G_*P)); Р v -,P; ((Р -> 0 -> (С -* (G -> Л)) -> (Р -* Р))); (Р->0->'>; P->(PvG); G-»(PvG); (Р v P) -> Р;
Глава 3. Элементы теории алгоритмов и математической логики 191 8. При каких значениях переменных х, у, z приведенные ниже формулы ложны: (((* —> О & z)) —> (-vy -> -*)) -> -пу); ((х & у) v (jc & z) v (у & z) v (-vc & -*); (((* v у) v z) -> (С* v у) & (* v z))); (((* v у) & ((у v z) & (z v x))) -> ((х & у) & z)); ((* vy)-> ((-л & у) v (x & -.у)))? 9. Докажите, что -Л->Я,Д->С |--пВ-^С(ПР); -v4 -> fi, Д -> С, fi -> D |- -iC -> D\ 10. Докажите, что формулы ГА1-ГА4 и РА1-РАЗ являются теоремами исчисления высказываний, то есть выводятся из аксиом А1-АЗ с помощью правила вывода. 3.4. Исчисление предикатов первого порядка Существуют такие виды логических формул, которые нельзя записать в виде формул исчисления высказываний. Например: □ все рыбы, кроме акул, хорошо относятся к детям; □ все люди смертны. Сократ — человек. Значит, Сократ смертен; □ каждый, кто дружит с Ярославом, друг Игоря. Олег не друг Игоря, значит, Олег не друг Ярослава. Корректность таких выводов базируется не только на истинности соответствующих функциональных отношений, а также и на понимании таких слов, как "все", "всякий" и т. д. Для того чтобы сделать более понятной структуру сложных высказываний, пользуются специальным языком — языком исчисления предикатов первого порядка. Этот язык является расширением языка термов, к определению которого мы и перейдем. 3.4.1. Алфавит и формулы Расширим алфавит функциональных символов языка термов символами Лп\ Лп2 Лпк 1 > Л2 '' * *' к » ""'
192 Часть I. Математические основы которые будут называться предикатными символами. Верхний индекс предикатного символа, как и раньше, будет означать его арность. Множество предикатных символов будем называть сигнатурой предикатов и обозначать П. Предикатные символы, если их применить к термам, порождают элементарные (атомарные) формулы, или точнее: если Ап — предикатный символ, tu h, ...,tn — термы, то An(tu h, ..., tn) — элементарная формула. Определение 3.4.1. Формулы исчисления предикатов первого порядка. Индуктивно определение дается так: □ всякая элементарная формула является формулой; □ если А и В — формулы их — лредметная переменная, то каждое из выражений (-Л), (А —> В), (Ух)(А) является формулой; □ выражение будет формулой тогда и только тогда, когда это следует из первых двух пунктов. Определение 3.4.2 формул (А & В), (A v В), (А <=> В) такое же, как в исчислении высказываний. Символы -л, —>, &, v, <=> называются логическими связками, а V — квантором общности. Часто еще рассматривают квантор существования (Зх)(А), который определяется как -n(\/x)(-vi). Формула (\/х)(А) читается "для всех х имеет место А", а формула (Зх)(А) — "существует х такое, что имеет место А". Заметим, что имеют место ранги логических связок, о которых шла речь в разд. 3.2, но, кроме того, условимся, что кванторы \/у и Зу размещаются по рангам между связками <=>,—> и v, &, -i. Условимся также опускать скобки, в которых находится формула Q А в формулах вида Q\(Q А), где Q и Q\ — произвольные кванторы. Например, вместо (\/х\ (3*2 (V*4 A\ (х\ч хг, ^д)))) пишется формула V*i Зхг ЧхаА\Ъ(х\, хг, хл). Введем понятие свободного и связанного вхождения переменной в формулу. В выражении (Vjc)G4) ((3x)(A)) формула А называется областью действия квантора \/х (Вх). Следует заметить, что формула А может и не иметь вхождений переменной jc. В таком случае считается, что формулы А и Vjc А одинаковые. Вхождение переменной х в данную формулу А называется связанным, если х— переменная квантора Ух или Ек, входящего в данную формулу, либо находится в области действия квантора Ух или Ек, входящего в данную формулу; в противоположном случае вхождение переменной х в данную формулу называется свободным. Переменная называется свободной (связанной) переменной в данной формуле, если существуют свободные (связанные) ее вхождения в эту формулу. Следовательно, переменная может быть одновременно свободной и связанной
Глава 3. Элементы теории алгоритмов и математической логики 193 в одной и той же формуле. Формула называется замкнутой, если она не имеет свободных переменных. Пример 3.4.1 1. А?(х,у); 2. A?(x,y)-+\/xAl(x); 3. \/х(А{2(х,у)->\/х А\(х)). Единственное вхождение переменной х в формулу 1 свободное. Первое вхождение переменной х в формулу 2 свободное, а второе и третье — связанные. Все вхождения переменной х в формулу 3 связанные. Следует заметить, что одна и та же переменная может иметь свободные и связанные вхождения в одну и ту же формулу, как это имело место в формуле 2. Отметим также, что вхождение переменной может быть связанным в той или иной формуле А и в то же время свободным в некоторой подформуле формулы А. Например, первое вхождение х в формулу 2 свободное, но формула 2 есть подформула формулы 3, где то же вхождение х уже связанное. * Терм t называется свободным для переменной х в формуле А, если никакое свободное вхождение х в А не лежит в области действия никакого квантора \/у , где у — переменная, входящая в терм t. Пример 3.4.2 □ Терм х свободен для переменной у в А (у), но не свободен в \/х А (у). Терм flx, z) свободен для переменной х в У у А (х, у) —> В (х), но не свободен для x*3zVy(A2(x,y)->Bl(x)). П Всякий терм, не имеющий переменных (константный терм), свободен для всякой переменной в любой формуле. □ Терм t свободен для любой переменной в формуле А, если никакая переменная терма t не является связанной переменной в формуле Л. □ Терм х свободен для х в любой формуле. □ Всякий терм свободен для х в формуле А, если А не включает свободных вхождений х. * 3.4.2. Истинность интерпретации, модели Формулы имеют смысл только тогда, когда существует какая-нибудь интерпретация символов, входящих в эти формулы. Перейдем к определению выполнения и истинности формул исчисления, которые будем формулировать соответственно индуктивным шагам определения формул.
194 Часть I. Математические основы Пусть имеем некоторую интерпретацию, т. е. систему, состоящую из некоторого непустого множества D— области интерпретации— и соответствия Л, которое ставит каждому предикатному символу А" некоторое и-арное отношение на D, каждому функциональному символу fj1 — некоторую л-арную операцию на D и каждой предметной константе a — некий элемент из D. При заданной интерпретации предметные переменные пробегают область D этой интерпретации. Пример 3.4.3 Рассмотрим формулы: 1. Л,2(х,>0; 2. Vy Л,20с,з0; 3. 3yVxA?(y,x). Если множество натуральных чисел N+ взято в качестве области интерпретации и А\\х, у) интерпретируется как х<у, то формула 1 представляет собой отношение х < у, которое выполняется на всех упорядоченных парах чисел (а, Ь), таких что a < Ъ\ формула 2 представляет собой отношение с одним аргументом х вида "для каждого натурального положительного числа у, х<у'\ которое выполняется лишь для числа 1; формула 3 будет истинным высказыванием, утверждающим существование минимального целого положительного числа. Если бы областью интерпретации служило множество всех целых чисел, то формула 3 была бы ложной. Пусть задана некоторая интерпретация с областью D, и пусть Е — множество всех счетных последовательностей элементов из D. Определим теперь, что означает, что формула Л выполнена на последовательности s = (b\9 b2, ...) из £ при заданной интерпретации. Пусть s обозначает функцию одного аргумента, определенную на множестве термов и принимающую свои значения в области D некоторой интерпретации А, т. е. 5*: T(Q, X) —> D. Эта функция определяется так: □ если терм t — предметная переменная xh то s (t) = 6,; □ если терм t — предметная константа, то s (t) = /z(f), т. е. s (t) совпадает с интерпретацией этой константы в области D; □ если fn — функциональный символ, которому при интерпретации h соответствует операция g на области D, и tu t2, ..., tn — термы, то s (fn(t\, t2, ..., tn)) = g(s\tOy s\t2\ ...,/(0). Следовательно, если говорить неформально, то для любой последовательности s = (b\, b2, ...) и любого терма t, s*(t) является элементом множества D,
Глава 3. Элементы теории алгоритмов и математической логики 195 полученного путем подстановки для каждого / элемента 6, вместо всех вхождений переменной х{ в терм t и выполнения после этого всех операций интерпретации А, которые соответствуют функциональным символам терма t. Пример 3.4.4 Пусть t = /2 (х4, /i (*2, я)), область D = Z — множество целых чисел, а /2 и /i интерпретируются как операции умножения и сложения соответственно, и a = 1, то для любой последовательности целых чисел s = (Ьь Ь2, &з, £4, •••) 5 (0 представляет собой целое число £4 • (Ь2 + 1) -^ Если Л — элементарная формула A"(tu h, ..., *л) и /?— отношение, соответствующее этой формуле на D при заданной интерпретации, то формула А считается выполненной на последовательности s = (b\, Ь2, ..., £л, ••) тогда и только тогда, когда 0*00, s*(t2), ..., s*(tn)) e R. Формула -1/4 выполнена на последовательности s тогда и только тогда, когда формула Л не выполнена на s. Формула А —> В выполнена на s тогда и только тогда, когда формула А не выполнена на s либо когда формула В выполнена на s. Формула (\/х\)(А) выполнена на s = {b\, Ь2, ...) тогда и только тогда, когда формула А выполнена на любых последовательностях из £, которые отличаются от s не более чем своей /-й компонентой. Формула А называется такой, что выполняется, если существует интерпретация А, при которой она выполняется хотя бы на одной последовательности интерпретации А. Формула А называется истинной при заданной интерпретации А, если она выполняется на всякой последовательности из Е, и ложной, если она не выполняется ни на одной последовательности из £. Интерпретация А называется моделью для заданного множества формул Г, если каждая формула из Г истинна при интерпретации А. Формула Л называется логически общезначимой, если она истинна при любой интерпретации. Формула А называется противоречием, если —\А логически общезначима, либо, что тоже самое, А ложна при любой интерпретации. Говорят, что формула А — логическое следствие множества формул Г, если при некоторой интерпретации формула А выполняется на каждой последовательности этой интерпретации, на которой выполняются все формулы из Г. Формулы называются логически эквивалентными, если каждая из них есть логическим следствием другой. Рассмотрим такие простые утверждения, которые непосредственно следуют из приведенных выше определений.
196 Часть I. Математические основы Теорема ЗАЛ. Для любых формул А и В имеют место такие свойства: 1. А ложна при данной интерпретации « -Л истинна в той лее интерпретации и наоборот. 2. Никакая формула не может быть одновременно ложной и истинной при одной и той же интерпретации. 3. Если в данной интерпретации истинны формулы А и А —> В, то в этой интерпретации истинна и формула В. 4. А —> В ложна при данной интерпретации <=> А истинна при этой интерпретации, а В ложна. 5. А &В выполняется на последовательности s некоторой интерпретации тогда и только тогда, когда А выполняется на s и В выполняется на s. Aw В выполняется на последовательности s тогда и только тогда, ко- гда либо А выполняется на s, либо В выполняется на s. A <=> В выполняется на s тогда и только тогда, когда либо А выполняется на s и В выполняется на s, либо, если А не выполняется Has и В не выполняется на s. Зх А выполняется на s тогда и только тогда, когда А выполняется хотя бы на одной последовательности s', которая отличается от последовательности s не больше чем своей i-ou компонентой. 6. А истинна при данной интерпретации тогда и только тогда, когда Vx, (А) истинна при данной интерпретации. 7. Всякий отдельный случай всякой тавтологии истинный при любой интерпретации. (Отдельным случаем тавтологии называется формула, полученная путем подстановки формул в данную тавтологию вместо пропозициональных букв, при условии, что вместо одной и той же буквы подставляется одна и та же формула). 8. Пусть свободные переменные формулы А, если они существуют, находятся среди переменных xif xjf ..., xj<. Если последовательности s и s'некоторой интерпретации имеют одинаковые компоненты с номерами /, j, ..., к, то формула А выполняется на последовательности s <=> она выполняется на последовательности s'. 9. Если формула А замкнута, то при любой заданной интерпретации либо истинна А, либо истинна -А. 10. Пусть t и v— термы, s— некоторая последовательность из Е, ^полученный из t подстановкой v вместо всех вхождений х, и s/ получена из s заменой в ней i-й компоненты на s*(v), тогда s (t') = (s') (t). 11. Если формула А не включает свободную переменную xit то формула V*/ (А —> В) —> (А —> Vjc/ В) истинна при любой интерпретации. Доказательство предлагается читателю в качестве упражнений.
Глава 3. Элементы теории алгоритмов и математической логики 197 3.4.3. Аксиоматика и правила вывода Исчисление предикатов первого порядка К определяется аксиоматическим путем. Аксиомы делятся на два класса: логические аксиомы и собственные аксиомы. Логические аксиомы: для любых А, В, С е К формулы: □ ШЛ->(Я->Л); □ П2 (А -> (В -> С)) -> ((А -> В) -> (А -> О); □ ПЗ (-^В -> -Л) -> ((-^В ->Л) -> 5); □ П4 V*,- ^(jc,) —> A(t\ где Л(х,-) — формула из К и г — терм из К, свободный длях,вЛ(х,); □ П5 Vjc, {А —> 5) —> (А —» Vx,- 5), если формула Л не включает свободных вхождений л/, являются аксиомами исчисления К. Собственные аксиомы не могут быть сформулированы в общем виде, поскольку они изменяются от теории к теории. Правила вывода: □ modus ponens: тАиА-ьВ следует В (MP); □ правило обобщения: из А следует \/ххА (Gen). Исчисление предикатов называют еще теорией первого порядка. Ограничения, приведенные в формулировках аксиом, требуют некоторых пояснений. Если бы в аксиоме П4 терм t мог бы быть произвольным, то была бы возможной такая ситуация. Пусть В(х) = -iVy А(х, у) и t = у. Заметим, что t не свободный для х в В(х). Рассмотрим такой случай аксиомы П4: Ух (-iVy Arf*. у)) -> -nVy А,(у, у\ и возьмем в качестве области интерпретации любую область, имеющую не меньше двух элементов, а А\ интерпретируется как отношение тождества. Тогда посылка истинна, а заключение ложно. Следовательно, и вся формула ложна. Аналогичное справедливо и для аксиомы П5. Действительно, пусть А и В представляют собой А\\х). Таким образом, х входит свободно в А. Рассмотрим отдельный случай аксиомы П5: \/х (Ах\х) -> V(*)) -> (Vto -> VxAx\x)). Очевидно, что посылка в данной формуле истинна. Если выбрать интерпретацию так, чтобы А\\х) выполнялась не на всех элементах области, а лишь на
198 Часть I. Математические основы некоторых, то окажется, что заключение в данной формуле будет ложным. Следовательно, и сама формула в данной интерпретации будет ложной. Моделью исчисления К называется всякая интерпретация, при которой истинны все аксиомы теории К. Легко заметить (см. теорему 3.4.1), что если правила вывода применять к истинным в данной интерпретации формулам, то результатом являются формулы, также истинные в той же интерпретации. Значит, всякая теорема, т. е. формула, которая выводится в К из аксиом, истинна во всякой модели К. Исчисление предикатов, кроме логических аксиом, может иметь, о чем шла речь выше, и собственные аксиомы. Если собственных аксиом нет, то такое исчисление называется исчислением предикатов первого порядка. Исчисление предикатов первого порядка с непустым множеством собственных аксиом служит для задания теорий и их моделей для разнообразных алгебр. Как пример такого исчисления рассмотрим теорию полугрупп. Пример 3.4.5. Теории первого порядка Пусть К имеет один бинарный предикатный символ и один бинарный функциональный символ, которые запишем так: t = s и t + s. Собственными аксиомами теории К являются формулы: а) \/х\ УхгУхз (х\ + (хг + *з)) = (C*i + х2) + *з) (ассоциативность); б) \/х\ (х\ = х\) (рефлексивность); в) \/х\\/х2 (х\ = хг —> хг = х\) (симметричность); г) \/х\ \/хгУхз (х\ = хг —> (хг = jc3 —> х\ = *з)) (транзитивность); д) VjciУхгУхз (хг = *з —> (jci + хг = Х\ + хз) & (хг + jci = Х3 + х\)) (подстановка); Всякая модель этой теории называется полугруппой. Если в полугруппе истинна формула \/х\\/х2 (х\ + х2 = хг + хх\ то полугруппа называется коммутативной. * 3.4.4. Основные свойства теории первого порядка Рассмотрим основные свойства логики предикатов первого порядка. Прежде всего, установим такой факт. Теорема 3.4.2. Всякое исчисление предикатов первого порядка К — непротиворечивая теория. Доказательство. Для всякой формулы А из К пусть h(A) обозначает формулу, полученную из формулы А путем опускания в ней всех кванторов и термов вместе со всеми соответствующими скобками и запятыми. Например: A(Vjc2A32Ub^2)->AiW) = A32->Ai1;
Глава 3. Элементы теории алгоритмов и математической логики 199 A(-iVx5 A2\x3, au х5) -> A3W) = -Лг -> Аъх. Из определения h следует, что Л(-тЛ) = -ih(A) и h(A —> В) = Л(Л) —> Л(В). Отсюда имеем, что всякая аксиома П1-П5 превращается в тавтологию. Действительно, это очевидно для Ш-ПЗ, а для П4 имеем h(\fxi А(хд -> A(t)) = А -> Л, что тоже является тавтологией (как было показано выше). Далее A(Vjc,- (A -> Я) -> (А -> Vjc,- В)) = (Л -> В) -> (Л -> В). Значит, если h(A) — тавтология, то и h(\/xi A) — тавтология, кроме того, как мы убедились, если h(A) и h(A —> В) — тавтологии, то и h(B) — тавтология. Таким образом, если А е К, то h{A) — тавтология. Если бы существовала такая формула 5, что В е К и -лВ е К, то формулы В и —\В одновременно должны были бы быть тавтологиями, что невозможно в силу того, что исчисление высказываний — непротиворечивая теория. Теорема доказана. Теорема 3.4.3. Если А е К — тавтология, то А является теоремой в К и может быть выведена в К лишь с использованием аксиом Ш-ПЗ и правила MP. Доказательство. Пусть формула А получена из некоторой тавтологии В путем подстановок. Согласно теореме 3.2.6 существует вывод А в исчислении высказываний. Сделаем в этом выводе всюду подстановки по такому правилу: □ если какая-нибудь пропозициональная буква входит в 5, то на места всех ее вхождений в каждую из формул вывода подставляем ту формулу теории К, которая подставлялась в В\ О если данная пропозициональная буква не входит в В, то на места всех ее вхождений в формулах вывода подставляем произвольную (но одну и ту же) формулу теории К. Полученная таким образом последовательность формул и будет выводом формулы А в теории К, причем выводом, который использует лишь аксиомы Ш-ПЗ. Теорема доказана. Определение 3.4.3. Пусть А есть формула некоторой совокупности формул Г, и В\, Вг, ..., Вп— какой-нибудь вывод из Г с обоснованием каждого шага в нем. Будем говорить, что 5/ зависит от Л в этом выводе, если: □ Bt есть А и обоснованием В, служит принадлежность 5,- к Г\ О Bi обосновывается как непосредственное следствие по правилу MP, либо Gen некоторых предшествующих в этом выводе формул, из которых хотя бы одна зависит от А.
200 Часть I. Математические основы Пример 3.4.6 Рассмотрим формулу: А,\/хА->В \-\fxB. 1. А — гипотеза,(зависит от А). 2. \/х А — (1), Оеп,(зависит от А). 3. \/х А —> В — гипотеза,(зависит от А). 4. В — по MP из (2), (3)5(зависит от А и Уд: А -> В). 5. \/хВ — Gen и (4),(зависит от А и \/х А —> В). * Теорема 3.4.4. Если формула В не зависит от формулы А при выводе Г, А У В, то Г У В. Доказательство индукцией по длине вывода В\,Вг, ...,Вп = В. При п = 1 имеем В\ = В, и В либо принадлежит Г и {А}, либо является аксиомой. Но В не может совпадать с^в силу независимости В от А. Следовательно, Г \-В. Пусть теорема справедлива для всех формул В, длина вывода которых меньше п. Если В е Г или В — аксиома, то Г \-В. Если же В — непосредственное следствие некоторых формул из В\, Вг, ..., Вп-\ (одной или двух), и поскольку В не зависит от А, то от А не зависит ни одна из этих формул. Но тогда, по предположению индукции, из Г выводятся эти формулы (одна или две), а вместе с ними — и формула В. Теорема доказана. Теорема дедукции для исчисления предикатов не может быть сформулирована в таком виде, в каком она формулировалась для исчисления высказываний. Но все-таки некоторый вариант этой теоремы существует. Теорема 3.4.5 (теорема дедукции). Пусть Г, А \- В, и при этом пусть существует такой вывод В из Г, А, в котором ни одно применение правила Gen к формулам, зависящим от А в этом выводе, не связывается квантором общности никакая свободная переменная формулы А. Тогда Г [- А —> В. Доказательство индукцией по длине вывода В\,Вг, •.., Вп = В. При п = 1 существуют две возможности: □ Bi G Гили является аксиомой; □ В( = А. В первом случае А —> 5„ поскольку это следует из аксиомы Ш, Bt —> (А —> Bt) по правилу MP.
Глава 3. Элементы теории алгоритмов и математической логики 201 Во втором случае, если А = Bi9 то Г |-Л/ -» Bi9 поскольку А->А — тавтология (см. пример 3.2.7). Пусть теперь теорема справедлива для всех i < п. Допустим, что существуют индексы к и у, меньшие /, и что Вк = Bj -» Bt. Тогда по предположению индукции Г \-А -» Bj и Г \-А -» (Bj; -» 5|). Но из аксиомы П2 имеем А -> (Я,- -> Д) -> ((Л -> Я,) -> (Л -> 5,)), и по правилу MP получаем, что Г |-Л -» 5,. Допустим, наконец, что существует такой индекс j < i, что Я, = Vjc^ Bj. Тогда по предположению индукции Г \-А —» 5/, и либо 5, не зависит от А, либо jc* не является свободной переменной формулы А. Если Bj не зависит от А, то по теореме 3.4.4 Г \- Bj и, применяя правило Gen, получаем Г |- \/хк Bj. По схеме аксиом Ш находим, что Bt->(Л->Д), и А -» 5, — по правилу MP. Если дел не является свободной переменной формулы А, то по схеме аксиом П5 имеем V** (А -> Bj) -> (Л -> Vjc* Bj). По предположению индукции Г \-А -» Bj, а по правилу Gen Г \- \/хк (А —> Bj) и, наконец, по правилу MP получаем Г \-А —> V** Я/, т. е. Г \-А —> 5,. Теорема доказана. Следствие 3.4.1. Если Г, Л |- 5, и существует вывод В без применения правила Gen к свободным переменным формулы А, то Г |-Л->Я. Следствие 3.4.2. Если формула А замкнута иГ,А |- В, то Г |-Л->Я. Пример 3.4.7 □ |»V*VyA->VyVjcA. 1. Vjc \/y A — гипотеза. 2. Vjc Vy Л -» Vy A — схема аксиом П4. 3. УуА— MP из 1 и 2. 4. Vy Л -» Л — схема аксиом П4. 5. А — MP из 3 и 4. 6. V*A — Gen из 5. 7. Vy Vjc A — Gen из 6.
202 Часть I. Математические основы П |-Vjc(A->B)->(VjcA->VjcB). 1. Vjc (А —> В) —гипотеза. 2. Vjc (А —> В) —> (А —> В) — схема аксиом П4. 3. А->В— МРиз1 и 2. 4. V;c Л—гипотеза. 5. V* Л —> Л — схема аксиом П4. 6. A— MP из 4 и 5. 7. В—MP из 2 и 6. 8. Vjc В — Gen из 7. 9. Vjc (А —> В) —> (Л —> Vjc В) — схема аксиом П5. 10. А->\/хВ— МРиз1 и 9. 11. Vjc Д —> А, А —> Vjc В |- Vjc Л —> Vjc В — на основании транзитивности импликации. □ \- V*i Vjc2 ... Vjcn A —> А. 1. V*i Vx2... V*n Д — гипотеза. 2. Vjci Vjc2 ... Vjcn A —> Vjc2 ... Vjcn A — схема аксиом П4. 3. Vjc2... VjcnA —МРиз1 и 2. 4. V*2... Vjcn A —> VJC3 ... Vjcn A — схема аксиом П4. 5 6. \/xnA — MP из 5. 7. V*n A —> A — схема аксиом 114. 8. A — MP из 6 и 7. Следовательно, формула А выводится без применения правила Gen, и из следствия 3.4.1 окончательно получаем Vjcj Vjc2 ... Vjcn А |-Л, |- Vjcj Vjc2 ... Vxn A —> А. * На примере исчисления высказываний мы видели, насколько полезным является расширение множества правил вывода. Такие правила дают возможность сократить длину вывода. Рассмотрим некоторые из них для исчисления предикатов.
Глава 3. Элементы теории алгоритмов и математической логики 203 Правило индивидуализации (RI). Если терм t свободный для переменной х в формуле А(х), то V;c A(x) \- A(t). Доказательство. Для А(х) имеем: □ \/хА(х)—гипотеза; □ Vjc А(х) —> A(t) — схема аксиом П4; □ Л(0 — MP из первых двух пунктов. Следовательно, Vjc А(х) |- —> A(t). Правило существования (RE). Если терм t свободный для переменной х в формуле А(х), то A(t) \- Зх А(х). Доказательство. □ Vjc -tA(jc) —> —A(t) — схема аксиом П4. □ (А —> -ifi) -» (В —> -тА) — тавтология. □ A(t) —> -iVjc -iA(jc) — MP из первых двух пунктов. Следовательно, A(t) —> 3jc A(x\ или \-A(t)->3xA(x). Правило конъюнкции (RK). Для любых формул А и В: А, В \-ASlB. Доказате л ьство. 1. Л, В— гипотезы. 2. А —> (В —> -п(Л -» -\В) — тавтология (см. примеры 3.2). 3. В -> -.(Л -> -пВ) — MP из 1 и 2. 4. -п(Л->-,5)«=>Л&5— MP из 1 ЙЗ. Правило дизъюнкции (RD). Для любых формул А и В: А -> С, В -> D, -тЛ -> В |- -пС -> D. Доказательство. Для А и В имеем: 1. А —> С, В —> D, -А -» 5, -пС — гипотезы. 2. (Л —> Q —> (-пС —> -А) — тавтология. 3. -iC->-tA— MP из 1 и 2. 4. -\С —> -iA, -А —> S |—iC —> S — транзитивность—>. 5. 5 —MP из 1 и 4. 6. В —> D — гипотеза. 7. D —MP из 5 и 6.
204 Часть I. Математические основы Теорема 3.4.6. Если А и В — формулы теории первого порядка К, и х — предметная переменная, не являющаяся свободной переменной в формуле А, то справедливы такие теоремы в К: 1. Л<=> Ух А. 2. ЗхА<=*А. 3. Vjc (А -> В) <=> (А -> Vjc В). 4. Ух (В -> А) <=> (Зх В -> А). 5. Vjc(A<=>D)->(VjcA<=> Vjc 5). Доказательство. Для 1 имеем: О А — гипотеза; □ Ух А — Gen из предыдущего пункта. Поскольку х не является свободной переменной в А, то по теореме дедукции А \- Ух А, а это значит, что \-А —> Ух А. Доказательство в другую сторону и утверждения 2-5 предлагаются в качестве упражнения. Пусть переменные х и у не совпадают, и формула А (у) получена из формулы А(х) подстановкой у вместо всех свободных вхождений дс, тогда формулы А(х) и А(у) называются подобными, если у свободна для х в А(х) и А(у) не имеет свободных вхождений^. Иначе говоря, формулы А(х) и А(у) подобны тогда и только тогда, когда А(у) имеет свободные вхождения у в точности в тех местах, в каких А(х) имеет свободные вхождения х. Лемма 3.4.1. Если формулы А(х) и А(у) подобны, то \- Ух А(х) <=> У у А(у). Доказательство. По схеме аксиом П4 имеем |- Ух А(х) —> А(у). Из условия леммы и правила Gen получаем \- У у (Ух (А(х) —> А(у)). По схеме аксиом П5 имеем |- Ух А(х) —> Уу А(у). Аналогично доказывается и формула |- У у А(у) —> Ух А(х). Воспользовавшись тавтологией А —> (-.-.S —> -\(А —> -\В) <=> А —> (В —> (А & В)) и теоремой 3.4.3, получаем УхА(х)^УуА(у). Лемма доказана. Лемма 3.4.2. Если замкнутая формула —А теории первого порядка К не выводится в теории К, то теория К', полученная из К в результате присоединения формулы А как аксиомы, — непротиворечивая теория. Доказательство от противного. Пусть Кг противоречива. Это значит, что существует формула 5, для которой имеет место \-В и \--\B в теории Кг.
Глава 3. Элементы теории алгоритмов и математической логики 205 Воспользовавшись тавтологией -Л—> (А —> В) и теоремой 3.4.3, имеем в теории К'. Следовательно, в К' верно |—ь4, или, что тоже самое, в теории К А |- —\А. Поскольку А — замкнута, то в силу следствия 3.4.2 имеем \А —> -А в К. Но тогда из тавтологии (А —> -Л) —> -А получаем , что |—ь4 в теории К. Но последнее противоречит условию леммы. Лемма доказана. Лемма 3.4.3. Множество всех выражений теории первого порядка К счетно. Доказательство. Пусть и — некоторый символ алфавита теории первого порядка. Поставим в соответствие символу и нечетное число g(u) по такому правилу: *(() = 3,*()) = 5, g(,) = 7,£(-п) = 9,*(->) = 11, g(xk) = 5 + 8*, g(ak) = 7 + 8/:, g(fkn) = 9 + 8(2"3*), g(V)= И+ 8(2*3*). Далее, выражению вида щщ...иг поставим в соответствие чис- ло25(Мо)3*'(М1).../?у-(Мг\ где/7г— r-тое простое число. При таком соответствии, очевидно, разные выражения получают разные номера, и таким образом можно пересчитать все выражения в порядке возрастания чисел, поставленных им в соответствие. Лемма доказана. Теория первого порядка К называется полной, если для всякой замкнутой формулы А теории К имеет место \-А или |- -\А в К. Теория первого порядка К', имеющая те же символы, что и теория первого порядка К, называется расширением теории К, если всякая теорема теории К является также теоремой теории К'. Очевидно, что для доказательства того, что теория К' является расширением теории К, необходимо доказать, что все собственные аксиомы теории К являются теоремами теории К'. Лемма 3.4.4. Если теория первого порядка непротиворечива, то существует непротиворечивое полное ее расширение. Доказательство. Пусть Ви Вг, ••— некоторый перечень всех замкнутых формул теории первого порядка К (он существует в силу леммы 3.4.3). Определим такую последовательность теорий Ко, Kt, .... Пусть Ко = К и допустим, что Кп определена . Если же неверно, что |- —\Вп + \ в К„, то добавляем формулу Вп +1 к К„ как новую аксиому и получаем теорию К„ + \. А если \- -и5, то положим К„ = Кп + \. Пусть теперь Кг — теория первого порядка, аксиомами которой являются все аксиомы теорий К0, Кь ..., К„, ... . Очевидно, что
206 Часть I. Математические основы К„ +1 служит расширением для К„, в том числе и для теории К = К0. Для доказательства непротиворечивости теории К' достаточно доказать непротиворечивость каждой из теорий К„ поскольку всякий вывод противоречивости в К' использует лишь конечное число аксиом, и поэтому является выводом противоречивости в некоторой теории К„. Доказательство выполняется индукцией по числу п. Для п = О теория Ко = К непротиворечива по условию. Пусть теория К непротиворечива для всех / < п+ 1. Тогда, если Кя +1 = К„, то и К„ +1 непротиворечива. Если же K„ + i *К„, то существует формула -тД, + ь которая не выводится в Кп. Но по лемме 3.4.2 теория Kn + i тоже непротиворечива. Следовательно, непротиворечива и теория К'. Покажем полноту теории К'. Пусть А — свободная замкнутая формула теории К'. Ясно, что А = Bj+1 для некоторого^ Е N. Согласно определению теории К, либо |- -иВ/ +1 в теории К7, либо \-Bj+ j в теории К/ +15 поскольку формула Bj+\ добавляется как аксиома в К/+1. Таким образом, имеем или f--i5/ + i, или \-Bj + \ в теории Ку+ь Лемма доказана. Теорема Геделя. Всякая непротиворечивая теория первого порядка имеет модель, область которой — счетное множество. Доказательство этой теоремы опускается из-за недостатка места, а ознакомится с ее доказательством можно в [32]. Теория, которая имеет областью интерпретации счетное множество, называется теорией со счетной моделью. Теорема 3.4.7. Всякая логически общезначимая формула теории первого порядка К является теоремой теории К. Доказательство. Достаточно рассмотреть лишь замкнутые формулы теории К, поскольку всякая формула В логически общезначима тогда и только тогда, когда логически общезначимо ее замыкание, и В выводится в К тогда и только тогда, когда выводится ее замыкание (см. теорему 3.4.1, п. 6). Пусть А — логически общезначимая замкнутая формула из К. Если А не выводится в К, то построим теорию К' путем добавления формулы —А как аксиомы. Теория К' непротиворечива в силу леммы 3.4.2 и имеет модель А/по теореме Геделя. Поскольку формула —А является аксиомой в К', то и она истинна в М Но в силу общезначимости А она тоже истинна в М. Следовательно, формулы А и -v4 одновременно истинны в М, чего не может быть в силу теоремы 3.4.1, п. 2. Таким образом, формула Л должна быть теоремой теории К. Теорема доказана.
Глава 3. Элементы теории алгоритмов и математической логики 207 Теорема о полноте. Теоремами исчисления предикатов первого порядка являются те и только те формулы, которые логически общезначимы. Доказательтво. По теореме 3.4.1 п. 7 аксиомы, которые задаются схемами Ш-ПЗ, логически общезначимы. В силу п. 10 и следствия 3.4.1, а также п. 11, общезначимыми являются и аксиомы, порождаемые схемами П4 и П5. В силу п. 3 и 4 теоремы 3.4.1 правила вывода MP и Gen сохраняют свойство формул быть общезначимыми. Таким образом, всякая теорема любого исчисления предикатов первого порядка логически общезначима. Доказательство другой половины этой теоремы следует из теоремы 3.4.7. Теорема доказана. Следствие 3.4.3. Из теоремы о полноте следует: □ формула А истинна в каждой счетной модели теории К тогда и только тогда, когда \-А в К, следовательно, А истинна в каждой модели теории К тогда и только тогда, когда \-А в К; □ если в каждой модели теории К формула В выполняется на каждой последовательности, на которой выполняются все формулы некоторого множества формул Г, то Г \- В в К; □ если формула В теории К является логическим следствием данного множества формул Г, то Г [ В в К; □ если формула В теории К является логическим следствием формулы А той же теории, то А [ В в К. Доказательства предлагаются в качестве упражнений. Следствие 3.4.4 (теорема Сколема-Левенгейма). Если теория первого порядка К имеет какую-нибудь модель, то она имеет и счетную модель. Действительно, если К имеет модель, то К непротиворечива (см. теорему 3.4.1, п. 2). По теореме Геделя она имеет счетную модель. Теорема эквивалентности . Если формула В есть подформула формулы А, и формула А' получена из формулы А заменой каких-нибудь (возможно и ни одного) вхождений В формулой С, и если всякая переменная формулы В или формулы С, являющаяся одновременно связанной переменной формулы А, встречается в списке у у, у2, ..., уь то h V?! \/у2 ... \/yk (Я «=* О -> (А « Д')- Доказательство проводится индукцией по числу связок и кванторов в А. Прежде всего заметим, что если ни одно вхождение В в действительности не заменяется, то А совпападает с А\ и формула, которую необходимо вывести, есть отдельный случай тавтологии В —> (А <=> А). Если В совпадает с А, и это
208 Часть I. Математические основы единственное вхождение заменяется на С, то формула, которую необходимо вывести, выводится из аксиомы П4 (см. теорему 3 примеров использования теоремы дедукции). Следовательно, в дальнейшем можно считать, что В является собственной подформулой формулы А и, что хотя бы одно вхождение В заменяется. Предположим, что теорема справедлива для всякой формулы с меньшим числом кванторов и логических связок, чем у А. Случай 1. А — элементарная формула. Тогда В не может быть собственной подформулой формулы А. Случай 2. А имеет вид -iD, Тогда пусть А' представляет собой —iD'. По предположению индукции \\/у\ \/у2 ... \/ук (В <=> О —> (D <=> D'). Отсюда с помощью тавтологии А <=> В —> (—Л —> -пВ) получаем I- Vy, Уу2... Vyk (В ^ С) -> (А ^ А'). Случай 3. А имеет вид D —> Е. Пусть А'= D' —» £". По предположению индукции \Мух Муг ... Vyk (В <=> С) -> (D <=> D') и f- Vyi Vy2 ... Vyk (В <=> Q —> (Е <=> £"). Применяя тавтологию ((Л <=> В) & (C^D)) -> ((Л -> О <=> (В-> D)), получаем [■ Vyi Vy2 ... VyA (В <=> С) —> (Л <=» А'). Случай 4. Л( имеет вид Vjc D. Тогда Л' представляет собой Vx D'. По предположению индукции [■ Vyi Vy2 .. Vyk (В <=> С) —> (D <=> D'). Переменная дс не является свободной переменной формулы Vyi Vy2 ... Vyk (S<=>C), если же допустить, что это так, то х входила бы свободно в В или С, и поскольку jc связана вА,тох входила бы в список уи уг* •••> Ук, и была бы связанной переменной в \/у\ \/у2 ... Vyjt (В <=> С), а это противоречит условию. Применяя теперь аксиому П5, получаем Vy\ Vy2 ... Vy* (В <=> С) —> (D «=> D'). По теореме 3.4.6 (5), имеем Уд: (D <=> D') —> (Vjc D <=> Vx D'). Пользуясь теперь транзитивностью импликации, окончательно получаем Vyi Vy2... Vy* (В <=> О-> (V* D <=> VjcD') или Vyi Vy2... Vy* (5 « C) -^ (A <=> A'). Теорема доказана. Теорема о замене. Пусть формулы А, А', В и С удовлетворяют условиям теоремы эквивалентности. Если \- В <=> С, то \- А <=> А', а если \ В <^> С и [А, то [А'. Теорема является простым следствием теоремы эквивалентности.
Глава 3. Элементы теории алгоритмов и математической логики 209 Теорема о переименовании связанных переменных. Если Vjc B(x) есть подформула формулы А, формула В (у) подобна формуле В(х) и А 'получена из А заменой хотя бы одного вхождения Vjc В(х) в А на У у В(у), то \- А <^> А'. Доказательство следует из леммы 3.4.1 и теоремы о замене. 3.4.5. Нормальные формы формул логики предикатов первого порядка Процедуры поиска доказательств теорем в логике предикатов первого порядка, которые будем рассматривать несколько позже, применяются к некоторой "стандартной" форме формул. Рассмотрим одну из них, поскольку в дальнейшем она будет часто встречаться. Определение 3.4.4. Говорят, что формула Ф логики предикатов первого порядка находится в предваренной нормальной форме (ПНФ) тогда и только тогда, когда она имеет вид (Q\X\) (Q2X2) ... (QnXn) А, где (2л) есть либо (Ек,), либо (Vjc/) и все jc,- разные для разных /, а А — формула, не имеющая кванторов. Приставка {Q\X\) ... (QnXn) называется префиксом, а формула А — матрицей. Условимся, что если формула А зависит от свободной переменной дс, то это будет записываться как А(х\ в противном случае — просто А. Теорема 3.4.8. Для любых формул Ft G, Н теории первого порядка справедливы такие эквивалентности □ а) -п Vjc F(jc) <=> Зх (-iF(jc)); □ б) -п Зх F(x) <=> Vjc (-iF(jc)); □ в) Vjc F(jc) v G <=> Vjc (F(jc) v G); Vjc F(x) & G <=> Vjc (F(jc) & G); □ r) 3jc F(jc) v G » 3jc (F(jc) v G); 3jc F(jc) &G<^3x (F(jc) & G); □ д) Vjc F(jc) & Vjc //(jc) <=> Vjc (F(jc) & //(jc)); □ e) 3jc F(jc) v 3jc //(jc) » 3jc (F(jc) v //(jc)); □ ж) Qxx Fix) & Q* H(x) <=> QxxQ2y (FQc) & H(y))\ □ 3) Que F(jc) v Qtf H(x) «=> Q,xQ2y (F(x) v H(y)). Доказательство. Докажем а) -1 Vjc F(jc) <=> 3x (-iF(*)). Пусть h— произвольная интерпретация на некоторой области D. Если -i(V* F(x)) истинна в интерпретации Л, то Vjc F(jc) ложна в h. Это означает, что существует такой элемент /(jc) e D, для которого F(/(jc)) ложна, или, тоже самое, что -iF(s (x)) истинна в Л. Следовательно, 3jc (-iF(jc)) истинна в h.
210 Часть I. Математические основы Далее, если -i(Vjc F(jc)) ложна в А, то Vjc F(jc) истинна в А. Это значит, что F(jc) выполняется на всех последовательностях из Д или что —\F(x) не выполняется ни на одной такой последовательности из D. Следовательно, 3x(-iF(x)) ложна в h. Таким образом , —i(Vjc F(x)) <=> 3x(—\F(x)). Доказательство б) аналогично доказательству а). Теперь докажем в) Vjc F(x) v G <=> Vjc (F(jc) v G). Пусть имеем вследствие а) Vjc F(jc) vG« -i(Vjc F(x)) -» G » 3jc (-.F(jc)) -> G. Следовательно, 1. 3jc (-iF(x)) -> G) — гипотеза. 2. -iF(*) —> 3x (-iF(jc)) — правило RE. 3. -iF(x) -» G — транзитивность —> из 1 и 2. 4. Vjc (-.F(jc) -> G) <=> Vjc(F(jc) v G) — Gen из 3. Наоборот: 1. Vjc (F(jc) v G) <=> Vjc(-.F(jc) -> G) — гипотеза. 2. -iF(jc) -» G — правило RI. 3. (-iF(jc) —> G) —> (-iG -» F(jc)) — тавтология. 4. -nG->F(jc) — МРиз2иЗ. 5. Vjc(-.G-> F(jc)) — Gen из 4. 6. Vjc(-iG —> F(jc)) -» (-iG —> Vjc F(jc)) — схема аксиом П5. 7. -iG -> Vjc F(jc) — MP из 5 и 6. 8. (-iG -> Vjc F(jc)) -> (-.Vjc F(jc) -» G) — тавтология. 9. -hVjc F(jc)-> G « VjcF(jc)vG — MP из 7 и 8. Докажем сначала первый из законов г). 1. 3jc F(jc) v G » Vjc (-.F(jc)) -» G — гипотеза. 2. -iF(x)) —> G — правило RI. 3. (-iF(jc)) -> G) -> 3jc (-iF(jc) -> G) — правило RE. 4. 3jc (-iF(jc) v G) » 3jc (F(jc) v G) — MP из 2 и 3. Наоборот: 1. 3jc (-iF(jc) —> G) — гипотеза. 2. 3jc (-.F(jc) -> G) -> (-.F(jc) -> G) — теорема 3.4.6, (2). 3. ^F(jc)->G — МРиз1 и 2. 4. Vjc (-iF(jc)) -» -iF(jc) — схема аксиом П4.
Глава 3. Элементы теории алгоритмов и математической логики 211 5. Vjc (-iF(jc)) -» G <=> —iVjc (iF(jc)) V G <=> 3x (F(x)) V G — транзитивность -» из З и 4. Доказательства других законов из в) и г) теперь легко следуют из законов де Моргана. Действительно, Ух F(x) & G « -.(-.V* F(x) v ^G) <=> ^(Зх (-iF(jc)) v -.G) <=> " <=> -i(3x (iFU) v -iG)) <=> ^(3jc п(ОД & G) <=> Vjc (F(jc) & G). Аналогично доказывается и второй закон из г). Доказательство остальных эквивалентностей предлагается в качестве упражнений. Теорема доказана. Из теоремы 3.4.8 следует такой метод построения ПНФ. Для того чтобы привести формулу Ф к ПНФ, используют такие законы. 1. Для исключения логических связок <=>, —>: А о В = (А -» В) & (В -» Л); Для исключения и внесения —i внутрь формул: -.((V*) F(x)) = (3x)(^F(x))' -.((Эх) F(jc)) = (Vx)(-.fX*)); -.-.F=F. Для переноса кванторов: 2* F(jc) v G = 2* (F(jc) v G); £jc F(x) &G = Qx (F(x) & G); (Vjc) F(x) & (Ух) H(x) = Vjc (F(jc) & H(x))\ (3x) F(x) v (3jc) //(jc) = 3jc (F(jc) v //(*)); (Qxx) F(x) & (Qix) H(x) = (Qix)(Q2z) (F(x) & H(z))\ (Qxx) F(x) v (Q*) //W = (Qix)(Q2z) (Fix) v //(z)). Пример 3.4.8 Рассмотрим построение ПНФ. □ F = (Vjc)P(jc) -» (3jc)/?(jc). (Vjc) P(jc) -» (3jc)/?(*) = ^((Vjc)P(jc)) v ((3x)R(x)) = = (3jc) ^P(jc) v (3x)R(x) = (3x)(^P(x) v R(x)).
212 Часть I. Математические основы □ F = (V*)(V>0(((3z)/>(jc, z) & Р(у, z)) -> (Эм)Л(х, у, и)). (Vx)(V;y)((Oz) Р(х, z) & Р(у, z)) -> (ЗиЩх, у, и)) = = (Vx)(Vy)(+((3z) P(x, z) & PCV, г)) v (ВиЩх, у, и)) = = (V*)(V>0((Vz)(-,/>(*, г) v -^Р(у, г)) v (3u)R(x, у, и)) = = Wx)(Vy)(Vz)(3u)(-^P(x, г) v ^P(y, z)) v Я(*, у, и)). < Исходя из приведенных соображений и законов преобразования формул логики предикатов 1-3, теперь можно предложить такой алгоритм построения ПНФ. j Алгоритм построения предваренной нормальной формы (А) , ' ^ , ,; J Начало. Шаг 1. Исключаем связки <=>, —> с помощью законов преобразования формул логики предикатов 1). Шаг 2. Переносим знак —i внутрь формул, пользуясь правилами -i(-.F) = F, -i(F4V G) = -iF & -iG, -i(F & G) = -iF v -.G и законами преобразования формул логики предикатов 2. Шаг 3. Переименовываем связанные переменные, если существует такая необходимость. Шаг 4. Используем законы преобразования формул логики предикатов 2 для получения ПНФ. Конец. Обоснованием данного алгоритма является утверждением, непосредственно следующим из теоремы 3.4.8. Теорема 3.4.9. Алгоритм ПНФ преобразует всякую формулу А теории К к такой формуле Д которая находится в предваренной нормальной форме, что [А <=>ВвК. 3.4.6. Скулемовские стандартные формы Выше был рассмотрен вопрос о приведении произвольной формулы исчисления предикатов первого порядка к предваренной нормальной форме. Поскольку матрица формулы не содержит кванторов, то ее можно подать в конъюнктивной нормальной форме (КНФ).
Глава 3. Элементы теории алгоритмов и математической логики 213 Говорят, что формула Р находится в КНФ, если она имеет вид P = PxvP2v ...vPh где Pi = An &Ai2& ... & Ац и каждое Ац— это атомарная формула или ее отрицание. Напомним процедуру построения КНФ (а по закону двойственности и процедуру построения ДНФ). ^Алгоритмда , ,, .ь. v. ' ^Л> Начало. Шаг 1. Исключаем связки <=>, —» из формулы А с помощью законов преобразования формул логики предикатов 1 (как в алгоритме ПНФ). Шаг 2. Исключаем двойное отрицание с помощью правила —i(—iF) = F, и переносим знак —i к атомам, пользуясь законами де Моргана (как в алгоритме построения ПНФ). Шаг 3. Для получения нормальной формы формулы А используем дистрибутивные законы: F v {G Sc Н) = (F v G) & (F v H) ; F & {G v Н) = (F & G) v (F & Я) . Конец. Пример 3.4.9 Рассмотрим: а) (Pv^2)->7?; б) (P&(Q-*R))-*S. Решение: а) (Р v -н0 -> R = -.(Р v -iQ) v Л = (-.Р & -пЬе» v /? = (-iP & Q) v /?; б) (P&(G^P))->S = (P&(-.Gv/?))->S = = ^(Р & Ы2 v /?)) v 5 = (-.Р v -ib£? v /?)) v 5 = = (-iP v 0 & ЬР v -л/?)) v 5 = (-нР v С v S) & (-iP v -,/? v 5). < Пусть Ф находится в ПНФ (Q\X\) (Q2X2) ... (QnXn) А, где Л имеет КНФ. Пусть (QrXr)— квантор существования в префиксе (Q\X\) (62*2) •■• (QnXn), r= 1, 2, ..., п. Если никакой квантор общности не стоит в префиксе левее (Qjcr), то выбираем константу с, отличную от других констант, входящих в состав формулы А, заменяем все хг на с в А и вычеркиваем (QrXr) из префикса.
214 Часть I. Математические основы Если (Qr]xr^),...,(QrkхГк) —список всех кванторов общности, встречающихся левее (Qrk хГк) в префиксе, то выбираем новый /с-местный функциональный символ /, отличный от других функциональных символов, входящих в состав А, заменяем все вхождения хг в А на f(xr ,...,хГк) и вычеркиваем (Qr xr) из префикса. Затем применяем этот же процесс ко всем кванторам существования в новом префиксе: последняя из полученных формул есть скулемовская стандартная форма. Константы и функции, которые при этом используются для замены переменных кванторов существования, называются скулемовскими функциями. Напомним некоторые определения, приведенные в предыдущем разделе. Дизъюнкт, состоящий из к литер, называется к-литерным дизъюнктом. Од- нолитерный дизъюнкт называется единичным дизъюнктом. Если дизъюнкт не имеет никаких литер, то его называют пустым дизъюнктом. Поскольку пустой дизъюнкт не имеет никаких литер, которые могли бы выполняться для любой интерпретации, то пустой дизъюнкт всегда ложный. Пустой дизъюнкт будем обозначать 0. Считается, что множество дизъюнктов S представляет собой конъюнкцию всех дизъюнктов из S, где каждая переменная в S управляется квантором общности. Благодаря этой договоренности, скулемовская стандартная форма может быть просто представлена множеством дизъюнктов. Теорема 3.4.10 (основное свойство скулемовских стандартных форм). Пусть S—множество дизъюнктов, представляющих стандартную скуле- мовскую форму формулы Ф. Тогда Ф ложна в том и только в том случае, когда ложна S. Доказательство. Не ограничивая общности, будем считать, что формула Ф находится в предваренной нормальной форме, т. е. Ф = <2i*i<22*2 • • • ОлЬМОси х2, • • •> хп). Пусть Q—первый квантор существования и Ф\ = \/х\ ... Vxr-\Qr+\xr+] ... QnXn M(xu х2, ..., xr-uf{xu x2, ..., *r-i), xr+\, ..., хп), где/— скулемовская функция, которая соответствует^, г- 1, 2, ..., п. Покажем, что Ф\ противоречива тогда и только тогда, когда Ф противоречива. Предположим, что Ф — противоречие. Если Ф\ непротиворечива, то существует такая интерпретация /г, что Ф\ истинна в h, т. е. для всех *i, ..., хг-\ существует хотя бы один элемент вида/(*ь ..., хг~\), для которого Qr+\xr+[ ... QnXnM(x\, ...,xr-uf(x\, ...,.*r_i),*r + i, --->xn) истинна в h. Таким образом, формула Ф истинна в /г, а это противоречит предположению. Следовательно, Ф\ должна быть противоречием. Допустим теперь, что Ф\ противоречива. Если Ф непротиворечива, то существует такая интерпретация h на области D, что Ф истинна в й, т. е. для всех
Глава 3. Элементы теории алгоритмов и математической логики 215 х\, ••-, хг-\ существует такой элемент хг, что формула Qr+\xr+\ ••• QnXn M(xu ..., xr-\, xry xr+\, ..., xn) истинна в h. Расширим интерпретацию h путем ввода функции Д*1, ..., хг.\)9 которая отображает (х\, ..., -*r-i) на хг для всех хи ..., jtr_i в D, т. е. /(jtb ..., д:г_0 = л:г. Обозначим новую интерпретацию через h\ Ясно, что для всех хи ..., *r-i Qr+\Xr+\ ... QnXn M(xu ...,xr-uflxi, ..., лг.,), jcr+i, ..., xn) истинна в h', то Ф\ истинна в h\ что противоречит предположению о противоречивости Ф\. Следовательно, Ф должна быть противоречием. Пусть Ф имеет m кванторов существования, Ф0 = Ф, и формула Ф* получена из формулы Фк-\ заменой первого квантора существования в Фк-\ скулемов- ской функцией, к= 1, 2, ..., т. Очевидно, что 5= Фт. Из доказанного выше следует, что Фк противоречива тогда и только тогда, когда противоречива Ф. Теорема доказана. Следует подчеркнуть тот факт, что одна и та же формула может иметь более чем одну стандартную форму. При преобразовании формулы Ф к скулемов- ской стандартной форме (ССФ) S, при выполнении замен кванторов существования скулемовскими функциями, последние будут выбираться настолько простыми, насколько это возможно. 3.4.7. Классификация логик Познакомившись с исчислением предикатов первого порядка, или логикой первого порядка, сделаем некоторые замечания относительно выразительности этой логики. Слово "первого" в фразе логика первого порядка служит, для того чтобы отличать логику этого вида от более сильных логик: логик второго, третьего и т. д. порядков, в которых используются некоторые внелогические понятия, такие как натуральное число или множество. Логика первого порядка—это исчисление, в котором кванторы V, 3 всегда действуют лишь на множестве предметных переменных. Логика второго порядка позволяет действовать одному из кванторов на подмножествах (не обязательно конечных) множества предметных переменных и на функциональных символах из F. Слабая логика второго порядка позволяет действие кванторов на конечных подмножествах множества предметных переменных и на множестве натуральных чисел N. Логика третьего порядка позволяет действовать кванторам на множествах функциональных символов из F и т. д. В этом ряду логика первого порядка играет особенную роль, поскольку в ней выражается вся аксиоматика теории множеств. Значит, это исчисление 8 Зак. 3427
216 Часть I. Математические основы занимает важное место в математике, для которой теория множеств представляет собой фундамент. Пример 3.4.10 Рассмотрим на конкретных примерах известных нам алгебр выразительные возможности логики первого порядка. а) Если алгебра G— группа, то она служит моделью для такой системы аксиом: 1. Уд: \/у Mz (С* • у) • z = х • (у • z)). 2. \/х(х • е = х). 3. Vjc Зу (х • у = е). А также аксиом б-д (см. пример 3.4.5 теории полугрупп). б) Если G— абелева группа, то она дополнительно еще удовлетворяет аксиоме Vjc Vy (x + у = у + х), то есть является моделью для системы аксиом 1-4. в) абелева группа, все элементы которой имеют порядки, не превышающие некоторого натурального числа п, служит моделью для аксиом абелевой группы и аксиомы Ух (х = 0 v 2х = 0 v ... v пх = 0). г) абелева группа без кручений — это модель для аксиомы Vn > 1 Va: (x = 0 => пх = 0). д) абелева периодическая группа — модель для аксиомы V* Зп > 1 (пх = 0). Анализируя приведенные примеры, видим, что группы а)-в) являются моделями логики первого порядка, поскольку их аксиомы выражаются в этой логике. В случае абелевых групп без кручений видим, что эта группа является моделью слабой логики второго порядка, поскольку первый квантор действует на множестве N4", а не на множестве элементов группы G, как в предыдущих случаях. Правда, аксиому 6 можно заменить бесконечным списком аксиом: Vjc (л: —■ = 0 => х -i = 0), Vjc (jc -л = 0 => 2jc -. = 0), Vjc (jc -i = 0 => njc -. = 0),
Глава 3. Элементы теории алгоритмов и математической логики 217 В большинстве случаев бесконечный список аксиом удобен так же, как и конечный, но в данном случае невозможно обойтись конечным списком аксиом. Это следует из следующего утверждения. Утверждение 3.4.1. Понятие абелевой группы без кручений не является конечно аксиоматизированным в логике первого порядка [40]. Если G — абелева периодическая группа, то это понятие выражается в слабой логике второго порядка, но можно показать, что оно не выражается ни конечным, ни бесконечным числом аксиом в логике первого порядка. * 3.4.8. Понятие о неклассических логиках Исчисление высказываний и исчисление предикатов первого порядка называют аристотелевской или классической логикой. В отличие от классической логики существует целый ряд других логик, которые называют неклассическими. Причиной появления неклассических логик является существование большого количества проблем, для моделирования и решения которых недостаточно формализма классической логики. Несмотря на большое количество неклассических логик, их делят на два класса: первый класс включает логики, которые рассматриваются как расширения классической логики, а другой класс — как альтернативы классической логике. К первому классу относят модальную логику и ее разновидности: темпоральную, динамическую и другие логики, а ко второму — многозначную, частичную, нечеткую и интуиционистскую логики. Рассмотрим коротко некоторые из неклассических логик. Пропозициональная модальная логика Синтаксис Формулы пропозициональной модальной логики (ПМЛ) строятся по тем же правилам, что и формулы классической пропозициональной логики высказываний. Но в отличие от классической логики высказываний в ПМЛ используются два дополнительных символа: и 0. Эти символы называются соответственно модальными операторами общности и существования. Оба оператора унарные и действуют на множестве формул логики высказываний. Таким образом, формулы ПМЛ определяются индуктивно. Определение 3.4.5 (синтаксис формул ПМЛ) Всякая атомарная формула есть формула ПМЛ. Если А и В формулы ПМЛ, то -v4, А & В, А -» В, А <=> В, A v В, А, 0А тоже формулы ПМЛ.
218 Часть I. Математические основы На операторы и 0 налагается отношение двойственности: 0A=—i —\А, которое часто рассматривается как определение оператора 0 через оператор . Таким образом, формулы ПМЛ всегда можно записывать, используя лишь оператор . Читаются операторы и 0 по-разному, и существует несколько вариантов их прочтения [43]. Оператор А Оператор ОА Необходимо, чтобы А Возможно, что А Всегда будет иметь место А Иногда будет иметь место А Требуется, чтобы А Разрешается, чтобы А Допускается, что А Противоположное к А не допускается Известно, что А Противоположное к А неизвестно Всякое выполнение программы дает Существует такое выполнение про- результат А граммы, которое дает результат А Семантика Для определения семантики формул ПМЛ необходимо рассмотреть понятие структуры. Определение 3.4.6. Структурой называется пара (W, /?), где W— некоторое непустое множество, a R с IV х W—бинарное отношение на W. Элементы из W называются точками. Определение 3.4.7. Пусть Р— множество атомарных формул ПМЛ. Р- моделью на структуре F=(W,R) называется тройка M=(W9R,f), где/: P-»B(W)— отображение из множества формул Р в булеан множества W. Для р е Р множество Лр) неформально интерпретируется как множество точек из W, в которых формула р истинна. Если Р— фиксированное множество, то префикс Р в определении модели опускается, и говорят просто о модели. Пусть со е W и А — формула ПМЛ. Запись М |=о, А означает, что формула А истинна в точке со модели М = (W, R,f). Определение 3.4.8. (семантика формул ПМЛ) □ М КО; □ М |=ш А, если со Е ДА); П А/ К, Л -» В, если из М |=ш А следует М |=ш В\ О М |=а, А, если из ш/?г следует М \=ш А для всех таких г.
Глава 3. Элементы теории алгоритмов и математической логики 219 Из последнего правила следует, что формула А истинна во всех точках t модели М, которые находятся в отношении R с точкой О). Приведенные выше правила называются базовыми правилами, с помощью которых можно вычислять значения формул 1, -и4, Av В, А & В, А <=> В и ОА с использованием эквивалентных преобразований. Например, константу 1 можно записать как О —> А, а формулу —А = А —> 0 и т. д. Из правила —\А = А —> 0 следуют такие семантические правила: □ Af К,-!Л, если 1=0,-4; □ М|=о, ОЛ, если М\=ША хотя бы для одного t e IVтакого, что со/?/; □ М |=ш Л v В, если А/ |=о, Л или М |=ш 5; □ М\=ША & В, если М\=ША и М\=шВ. Определение 3.4.9. Формула А называется истинной в модели М, если она истинна в любой точке этой модели, т.е. (Vwe M) М\=ША (обозначение М\=А). Формула А называется истинной в структуре F = (W, /?), если она истинна в любой модели М= (W9 /?,/), т. е. (VM= (W, R,f))Af\=A. Формула называется модальной тавтологией или общезначимой, если она истинна во всех структурах (W, R) (обозначение \=А). Пример 3.4.11 □ Показать, что формула (А —> В) —> ( А —> В) модальная тавтология. Решение. Допустим, что данная формула ложна. Это возможно лишь в том случае, когда (А —> В) истинна, а ( А —> А) ложна, или, что тоже самое, (А —> В) истинна, А истинна и В ложна. Истинность формулы А означает, что формула А истинна во всех точках. Истинность формулы (А —> В) означает истинность формулы А —> В во всех точках. Но из истинности предыдущей и полученной формул следует истинность формулы В во всех точках, что противоречит тому, что В ложна. □ Показать, что формула 0(А —> 5) —>(ОА —> ОВ) модальная тавтология. Решение. Допустим, что данная формула ложна. Это возможно лишь в том случае, когда 0(А —> В) истинна, а фА —» ОВ) ложна, или что тоже самое, что 0(А —> 5) истинна, ОА истинна и 05 ложна. Истинность формул 0(А ->В)иОА означает, что (VAf = (W, Л,/)) 3r e Wтакое, что МИЛ -» 5 и M\=tA. Но отсюда следует, что формула 5 тоже истинна в точке г модели М Полученное противоречие доказывает, что формула 0(А —» 5) —> (ОЛ —> 05) — модальная тавтология. *
220 Часть I. Математические основы Рассмотренную семантику (формул ПМЛ) называют реляционной семантикой, или семантикой Крипке, по имени автора, который впервые ее предложил [67, 77-79]. Аксиоматика ПМЛ Как отмечалось выше, ПМЛ является расширением классической пропозициональной логики высказываний. Поэтому формальная аксиоматическая система для этой логики строится по тем же правилам, что и для классической логики высказываний. Формальная, аксиоматическая теория Th для ПМЛ задается таким способом. 1. Символы Th — это -и,—», , (,) и буквы At из алфавита AL Символы -i, —>, называются примитивными связками, a A — пропозициональными переменными или пропозициональными буквами. 2. Все буквы алфавита А1 — это формулы Th. Если А и В — формулы Th, то (—А), {А —> В), А — формулы 77г. 3. Для любых формул А, В, С теории Th формулы • МА1А->(В-*А), • МА2((А-*(В-*С))->((А->В)-*(А-*С)), • MA3((-tf->^4)-»((-ifi->i4)-»5), • К (А -> В) -> ( А -> В) являются аксиомами (точнее схемами аксиом). 4. Правилами вывода служат: • правило modus ponens (MP): A, А —> В + |- В. • модальное правило необходимости (RN); из +\-А следует + \- А. Другие логические связки можно ввести с помощью уже известных формул: А & В <=> -п(А -» -.5), A v В <=> -пА -> В, АаВа(А->В)&(В-+А). Аксиоматика ПМЛ, включающая аксиому К, называется нормальной модальной логикой. Если формула Л — теорема некоторой модальной логики Л, то это записывается так:
Глава 3. Элементы теории алгоритмов и математической логики 221 Если {Л, | i е /} — некоторое множество нормальных логик, то их пересечение п{Л, | i е /} тоже является нормальной логикой. В частности, логика К, определенная пересечением всех нормальных логик К = п{Л/1 Л, — нормальная логика} является минимальной логикой, основное свойство которой дает такая теорема. Теорема 3.4.11. Формула А является теоремой логики К тогда и только тогда, когда А — модальная тавтология, т. е. истинна во всех структурах. Следующие формулы \-АА-*В=> \-А А-> Ви |-Л0Л->0Я, \-АА*=>В=* f-д Л<=> Ви |-лОЛоОЯ, [Л А& Я)о (А&В), \-А 0(4 v В) о фА v ОЯ), \-А( Av B)-> (AwB\ [А 0(А & В) -> (0А & 0В). выполняются в любой нормальной логике. Вышеуказанные возможные прочтения модальных формул А и 0А и свойства отношения R составляют основу различных применений модальной логики. Некоторые из таких применений основываются на семантике возможных миров. Суть этой семантики сводится к следующему. Непустое множество W, входящее в определение модели, называется универсумом. Элементы cog W, которые назывались точками, называются в этой модели возможными мирами универсума. Бинарное отношение R называется отношением досягаемости. Таким образом, структура (W, R) состоит из возможных миров, связанных между собой отношением досягаемости. Если два мира со, со' е W, то досягаемость мира со' из мира со обозначается соЛсо'. Рассмотрим примеры. Логика возможного и необходимого Эта логика возникает при конкретизации чтения модальных формул А и 0А и свойства отношения R: О формула А читается так: "А необходимо истинна"; □ формула (>А читается так: "возможно, что А истинна"; □ отношение R рефлексивно, т. е. (Vco e W) coflco, где необходимой истиной в мире со называется формула, которая подтверждается во всех мирах достижимых из со, а возможной истиной в мире со
222 Часть I. Математические основы называется формула, которая подтверждается хотя бы в одном из миров, достижимых из со. Иногда фиксируют некоторый мир и называют его "реальным миром". Формула Л, которая необходимо истинна в реальном мире, будет истинна во всех мирах, достижимых из реального мира, а в силу рефлексивности отношения Л, и в самом реальном мире. Следовательно, формула А-> А истинна в данной структуре. Если формула А возможно истинна в реальном мире, то она истинна хотя бы в одном из миров, достижимых из реального мира. И, в частности, будет истинна в самом реальном мире, т. е. формула А->0А истинна в данной структуре. Динамическая логика Динамическая логика базируется на соответствии модальных операторов командам некоторого языка программирования. При такой интерпретации множество W рассматривается как множество возможных состояний вычислений, а отношение 0)/?0)' говорит о том, что вычисления начинаются в состоянии со и заканчиваются в состоянии О)'. Если программа недетерминирована (например, включает операторы распараллеливания), то она может давать разные результаты. Формула А означает в этом случае, что все выполнения программы оканчиваются тем, что формула А истинна. Формула ОЛ означает, что хотя бы одно выполнение программы оканчивается тем, что формула Л истинна. Существуют и другие модальные логики, такие как логика веры и знания [66], темпоральная логика и др. Темпоральная логика будет рассмотрена ниже, поскольку она имеет широкое применение. А сейчас рассмотрим свойства отношения R и связь этих свойств с разновидностями модальных логик. Свойства бинарных отношений и разновидности ПМЛ Фиксация определенных свойств отношения R дает возможность получать другие разновидности ПМЛ. Приведенный ниже список свойств отношения R включает как известные, так и новые свойства: 1. Vs e W(sRs) — рефлексивность. 2. Vs, t G W (sRt —> tRs) — симметричность.
Глава 3. Элементы теории алгоритмов и математической логики 223 3. MsG W3te W(sRt) — репродуктивность. 4. Ms, t, u G W (sRt & tRu —> sRu) — транзитивность. 5. Ms, t, u G W (sRt & sRu —> tRu) — эвклидовость. 6. Ms, t,ueW (sRt & sRu —> t = u) — частичная функциональность. 7. Ms G W3\te W(sRt) — функциональность. 8. Ms,te W (sRt —> 3u(sRu & uRt)) — слабая плотность. 9. Ms, t,ueW (sRt & sRu —> tRu v t = uv uRt) — слабая связность. 10. Ms, t,ue W(sRt & sRu —> 3v(tRv & uRv)) — слабая направленность. Запись 3\t означает: существует один и только один элемент t. Приведенному списку свойств соответствует список схем формул: 1. А-±А{Т). 2. А -> ОА (В). 3. А -> ОА (D). 4. А -> Л (4). 5. 0Л-> 0Л(5). 6. 0А-* А. 7. ОЛ» А. 8. Л-> Л. 9. ((Л & A)->B)v ((B& B)->A)(L). 10. О А -> ОА Справа, возле некоторых схем формул 1-5, указаны исторические названия соответствующих формул. Некоторые из приведенных схем формул принимаются как схемы аксиом в соответствующих аксиоматических системах. Связь между свойствами 1-10 отношения/? и схемами формул 1-10 дает Теорема 3.4.12. Если задана структура F = (W, R), то отношение R тогда и только тогда имеет конкретное свойство 1-10, когда соответствующая схема формул истинна, в структуре F [52]. Эта теорема объясняет тот успех, который имеет реляционная семантика Крипке. Действительно, с одной стороны эта семантика хорошо приспособлена для разнообразных применений. С другой стороны, важные свойства отношения /?, входящего в определение модели, поддерживаются многими модальными схемами. Правда, существуют такие свойства отношения /?, которые не отвечают общезначимости никакой модальной схемы, например: □ Ms G W-i(sRs) — иррефлексивность;
224 Часть I. Математические основы П \/s,te W(sRt &tRs-^s = t) — антисимметричность; О \/s,te W (sRt —> -i(tRs) — асимметричность. Принято обозначать наименьшую модальную логику, включающую схемы аксиом Еь..., Е„ в виде Л = КХь. .£„. Эта логика определяется так: Л = п{Л, нормальная и Si n ... п £„ с Л}. Учитывая эти обозначения, для некоторых известных модальных логик будем применять такие обозначения: 54: КТ4,55: КТ45, где К — наименьшая нормальная модальная логика, а Т, 4 и 5 обозначают соответственно схему формул Т, 4 и 5, приведенных выше. Характеристику некоторым таким логикам дают приведенные ниже утверждения [52]. Теорема 3.4.13. Формула А является теоремой логики КТ тогда и только тогда, когда А истинна во всех структурах, в которых отношение R рефлексивно. Теорема 3.4.14. Формула А является теоремой логики S4 тогда и только тогда, когда А истинна во всех структурах, в которых отношение R рефлексивно и транзитивно. Теорема 3.4.15. Формула А есть теорема логики S5 тогда и только тогда, когда А истинна во всех структурах, в которых отношение R рефлексивно, транзитивно и эвклидово (т. е. R — отношение эквивалентности). Мультимодальные логики Мультимодальные логики возникают в результате рассмотрения на множестве W не одного отношения /?, а семейства отношений /?,, где / Е /, а / — некоторое множество индексов. Каждому отношению /?, ставится в соответствие модальный оператор общности [i]A. Двойственный ему модальный оператор существования </>Л определяется, как и раньше, <i>A = —i[i]—u4. Определение 3.4.10. ПМЛ называется пропозициональной мулътимодальнои логикой (ПММЛ), если в ней больше одного модального оператора общности. Синтаксис Синтаксис ПММЛ определяется индуктивно аналогично синтаксису формул ПМЛ. Определение 3.4.11. (синтаксис формул ПММЛ) □ Всякая атомарная формула является формулой ПММЛ.
Глава 3. Элементы теории алгоритмов и математической логики 225 □ Если А и В — формулы ПММЛ, то -А, А & Я, A v Я, А -> Я, А » В, [i]A, <i>A — тоже формулы ПММЛ. Семантика Структура F для мультимодальной логики определяется так: F = (WARt I i €=/}), где W— некоторое непустое множество, /?, с Wx W— бинарное отношение на W Модель М= (F,f) на структуре F = (W, {/?,}), как и раньше для ПМЛ, определяется с помощью отображения/: Р —> B(W), где Р — множество атомарных формул ПММЛ, B(W) — булеан множества W. Определение 3.4.12. (семантика формул ПММЛ) О А/КО; □ А/К,Л, если сое ДЛ); □ Л/1=0, ^ —> 5, если из М |=ю Л следует М |=ш 5; О Л/1=0, [/]Л, если из со/?,/ следует М|=, Л для всех таких teW. Определения формулы, истинной в модели Л/, истинной в структуре F и общезначимой, остаются такими же, как и для формул ПМЛ. Аксиоматика ПММЛ Аксиомы и правила вывода для ПММЛ такие же, как и для ПМЛ, с той лишь разницей, что схема аксиом К и правило модальной необходимости не одни и те же, а для каждого i e / свои: К, М(А -> В) -> ([/]Л -> ИВ) RMN/ИЗ |-А следует |- [i]A, для всех i G /. Мультимодульная логика называется нормальной пропозициональной мультимодальной логикой, если она включает схемы аксиом К, и правила RMN,-, is I. Наименьшая нормальная логика обозначается К,. Контрольные вопросы □ Какая разница между модальной и мультимодальной логиками? □ Чем отличается аксиоматика мультимодульнои логики от аксиоматики модальной логики?
226 Часть I. Математические основы Задачи и упражнения 1. Доказать, что формулы (А & В) <=> ( А & В ) 0(Л v В) » (ОЛ v ОВ) (А -> 0(В -> N) -> 0(В -> (Л->0В) модальные тавтологии. 2. Показать, что формулы А —>Л, Л —> Л, 04 v В) -> ( Л v В) истинны не для всех структур. Пропозициональная темпоральная логика Синтаксис Синтаксис пропозициональной темпоральной логики (ПТЛ) такой же, как и синтаксис классической пропозициональной логики с той лишь разницей, что в нем появляются три новых оператора: О, и 0. Эти операторы называются модальными временными операторами. Синтаксис ПТЛ определяется как и для ПМЛ, индуктивно. Определение 3.4.13. (синтаксис формул ПТЛ) □ Всякая атомарная формула есть формула ПТЛ. □ Если А и В — формулы ПТЛ, то -ъ4, А & Я, A v В, А -> 5, А <=> 5, 04, А, 0А — тоже формулы ПТЛ. Оператор ОА читается в "следующий моменте", оператор А читается "всегда А" и оператор ОА читается "обязательно А" или "хотя бы раз А". Ранги у этих операторов такие, как и у отрицания. Семантика Пару (Г, <) будем называть потоком моментов времени или временной структурой, где Т— множество моментов времени, <сГхГ— отношение частичного порядка на Г, которое часто называют отношением "раньше-позже". Заметим, что (Г, <) — не обязательно линейно упорядоченное множество, т. е. допускаются ветвления в будущем для потока моментов времени. Если отношение < функциональное, то ПТЛ называется линейной ПТЛ (ЛПТЛ). Пусть ht — некоторая интерпретация атомарных формул, т. е. ht — отображение, которое придает значение истинности атомарным формулам в момент времени t(ht: Al —> {0, 1}). По таблицам истинности можно вычислять значения ht(A) формулы А в момент времени t. Как же вычисляется значение ht(A) при заданных значениях атомарных формул? Допустим, что
Глава 3. Элементы теории алгоритмов и математической логики 227 в момент времени t можно сказать, что всегда в будущем формула А истинна. Для этого и служит оператор , который в формуле А означает, что А имеет место в любой момент времени s, больший или равный t в будущем. Следовательно, ht{ А) = 1 тогда и только тогда, когда для всех s > t имеем hs(A) = 1. Расширим определение функции ht с атомарных на произвольные формулы с помощью индукции: □ ht(-A)=l-ht(A); □ ht(A & В) = ht(A) & ht(B)\ □ ht(A v В) = ht(A) v ht{B)\ □ h(A -> B) = 1 <=> из ht{A) = 1 следует /г,(В) = 1; □ ht{ A) = i »(V* > o(A/(A) = i); □ /ir(OA) = A, + 1(A). Исходя из этих определений, найдем условия, при которых значение формулы (А —> В) будет истинным. Таким образом, ht( (A-*B))=l& (Vs > t)(ht(A -^ В) = 1) <=> (V5 > 0 из Av(yl) = 1 следует hs(B)=L Определение 3.4.14. Пусть (Г, <)— временная структура и L={0,1} — множество значений истинности. Моделью формул ПТЛ называется тройка (Г, <, Я), где Н— некоторое семейство функций Н = {ht \ te 7}, которые задают значения атомарных формул для каждого момента времени t. Определение 3.4.15. Формула А называется ПТЛ-тавтологией (обозначается это У А) тогда и только тогда, когда ht(A) = 1 для всех возможных интерпретаций ht над произвольными возможными моделями времени. Определение 3.4.16. Формула А называется следствием формул Аи Л2,..., Ak в ПТЛ (обозначение А\, Л2,.-., Лк \-А) тогда и только тогда, когда для всех (Г, <, Н) и всех t G Г имеет место равенство h(A) + h(A) + ... + h(A) - h(A) = к - 1. Например, формула (А —> А) является как классической тавтологией (в случае классической логики связка А -) А совпадает с А —>Л), так и темпоральной тавтологией. Но формула A v {А —> Л) не является темпоральной тавтологией, хотя она является классической тавтологией. Высказывание, "формула А всегда будет истинна", записывают коротко в виде формулы А. А высказывание, "формула А будет истинной в некоторый (неизвестный) момент времени в будущем" означает то же самое, что ее отрицание не всегда будет истинной формулой, т. е., что формула —i —А будет истинна в некоторый момент времени.
228 Часть I. Математические основы Аксиоматика ЛПТЛ Для любых формул А, В, С ЛПТЛ формулы □ А1Л->(В->Л); □ А2 ((А -» (В -> С)) -> ((А -* В)(А -* О); □ A3 (-^ -> -Л) -> ((-iB -*A) -> 5); □ К (Л -» 5) -» ( Л -> 5); □ Tl0i4 «=» -I -Л; □ Т2 0(Л -> 5) -> (ОА -* ОВ); □ ТЗ А^>(АлОАлО А); О Т4 (Л-> ОЛ)-> (Л-> Л); a TS0A& -о-уА являются аксиомами (точнее, схемами аксиом). Правилами вывода служат: □ правило modus ponens О модальное правило необходимости (RN): из |-Л следует [- А. Приведенная аксиоматика — полна и непротиворечива. Связь между синтаксисом и семантикой формул ЛПТЛ дает такое утверждение [52]. Теорема 3.4.16. Формула А есть теорема ЛПТЛ тогда и только тогда, когда А — тавтология ЛПТЛ. Рассмотрим некоторые свойства ЛПТЛ. Теорема 3.4.17. Для любой формулы А справедливы такие утверждения: а) А->А\ б) А->ОА\ в) A-+QA; г) ОА-+0А; Д) А-*ЪА\ е) -iO4«*0-v4. Доказательство. Покажем сначала справедливость такой почти очевидной теоремы: АлВ->А. 1. -Л —>(В —>А) — аксиома А1.
Глава 3. Элементы теории алгоритмов и математической логики 229 2. -)(В —> —\А) —»А — тавтология. 3. -л(В —> -\А) —>А=АлВ->А — эквивалентные преобразования. Теперь докажем теорему: а) из аксиомы ТЗ, транзитивности импликации и доказанной выше теоремы, имеем: из А —> (А л ОА л О А) и (А л ОА л О А) —> А следует А —> А\ б) доказывается аналогично пункту а); в) 1. -лА —> -лА — теорема пункта а). 2. —1(—и4) —> -i -лА—тавтология. 3. А —> §А — аксиома Т1. г) 1. —Л —> 0—l4 — теорема пункта б). 2. —\0-лА —» -1 —Л — тавтология. 3. 04-><>Л. Д) 1. А—>А — теорема пункта а). 2. А —> ОА — теорема пункта в). 3. А —> (>А — транзитивность импликации, е) 1. О-лА <=> -iO-i-v4 — аксиома Т5. 2. О—А <=> -\ОА — закон двойного отрицания. Теорема доказана. Аксиома Т4 в приведенной системе аксиом является не чем иным как аксиомой индукции. Действительно, индуктивным шагом доказательства по индукции является А —> ОА, т. е., допуская, что А верно "сегодня", доказываем, что А верно "завтра". Если индуктивный шаг всегда имеет место (А —> CL4), то отсюда следует, что А —> А. Докажем это и еще некоторые другие правила строго. Теорема 3.4.18. Для любых формул AuB справедливы такие утверждения. О ь)(А-+ ОА) -> (А -> А)\ П б)(А->В)->( А->В)\ а в) (А -> В) -> (ОА -» 05).
230 Часть I. Математические основы Доказательство. а) 1. А —> ОА — гипотеза. 2. А —> ОЛ) — правило RN. 3. (А->ОА)->(А-> А) — аксиома Т4. 4. Л —» Л — правило MP из 2 и 3. б) 1. Л—>5— гипотеза. 2. (Л -> В) — правило RN. 3. {А -> 5) -ч> ( А -> 5) — аксиома К. 4. А —> В — правило MP из 2 и 3. с) 1. А-ъВ — гипотеза. 2. (А -> 5) — правило RN. 3. (Л —> В) —> 0(А —> В) — пункт б) предыдущей теоремы. 4. 0(А -> В) — правило MP из 2 и 3. 5. 0(Л ->£)-> (04 -ч> 05) — аксиома Т2. 6. СЬ4 -ч> 05 — правило MP из 4 и 5. Теорема доказана. Контрольные вопросы □ Дайте определение синтаксиса и семантики ПТЛ. □ Когда ПТЛ называется линейной? □ Дайте словесную интерпретацию аксиом Т1-Т5. Задачи и упражнения 1. Доказать теоремы в ЛПТЛ: • А <=> (А л О А)\ • ОД <=> (A v О А). Пропозициональная л-знаЧная логика Алфавит, правила построения формул, как и аксиоматика для этой логики, такие же, как и для классической пропозициональной логики высказываний.
Глава 3. Элементы теории алгоритмов и математической логики 231 Разница заключается в том, что множество значений Ln состоит не из двух значений: 0 и 1, как в исчислении высказываний, а из п значений: О, 1 / (я - 1), 2 / (л - 1), ..., (п - 2) / (п - 1), 1, то есть Ln = {О, 1 / (п - 1), ..., (п - 2) / (п - 1), 1}, где 0 и 1, как и в исчислении высказываний, представляют соответственно ложь и истину, а остальные значения — степень истинности между 0 и 1. В частности, при п = 2 имеем 2-значную логику (Li = {0,1}), при /1 = 3 имеем 3-значную логику (L3 = {0,1 / 2,1}) и т. д. Рассмотрим модельные (семантические) аспекты и-значной логики на примере 3-значной логики, поскольку эти аспекты характерны для логик и при п>3. Определение 3.4.17. Отображение h: Al —> Ln называется интерпретацией, где А1 — алфавит атомарных формул пропозициональной n-значной логики, а L„={0,l/(n-l),...,(n-2)/(n-l),l}. При заданной интерпретации можно вычислять значения формул. Вычисление значений формул n-значной логики, как и формул 2-значной логики, выполняется с помощью таблиц истинности. Эти таблицы задают общий способ вычисления формул для любого п. А X 1 1 1 1/2 1/2 1/2 0 0 0 в Y 1 1/2 0 1 1/2 0 1 1/2 0 А&В min(x, у) 1 1/2 0 1/2 1/2 0 0 0 0 AvB max(x, у) 1 1 1 1 1/2 1/2 1 1/2 0 А->В min(1,1 1 1/2 0 1 1 1/2 1 1 1 -х + у) ^А 1-х 0 0 0 1/2 1/2 1/2 1 1 1 В данной таблице пояснения требует лишь вычисление значения формулы А —> 5, поскольку остальные формулы вычисляются традиционно. Формула А —> В, как и в исчислении высказываний, считается истинной, если формула В не менее истинна, чем формула Л, т. е. значение формулы В не меньше значения формулы А. Это согласуется с тем, что формулы 0 —» 0, 0 —> 1, 1 —> 1
232 Часть I. Математические основы истинны, как и в случае 2-значной логики. Если jc— значение формулы А, а у — значение формулы 5, то разница х - у показывает, насколько значение формулы А —> В отклоняется от истины. Следовательно, формуле А —> В можно сопоставить значение 1 - (jc - у) = 1 - х + у. Комбинируя оба возможных случая х < у и х > у, формуле А —> В ставится в соответствие значение min(l, 1 -* + )>). Из данной таблицы очевидным образом следует справедливость таких законов: 1. A&B = D&A,A vB = BvA\ 2. А & (В & О = (А & В) & С, A v (В v Q = (A v В) v С; 3. —i—iA = Д; 4. Д &0 = 0,Д & 1=Д; 5. A vO = A,A v 1 = 1; 6. -п(Д & В) = (-А v -пВ). Определение 3.4.18. Формула Л пропозициональной n-значной логики называется /.„-тавтологией (/.„-противоречием), если она принимает значение 1 (0) при любой интерпретации А. Пример 3.4.12 □ Показать, что формула Л —>А является /^-тавтологией. Решение. Для формулы А —> Л • al) при h{A)-0 имеем min(l, 1-0 + 0) = min(l, l)= 1; • а2)прий(Л)= 1/2 имеем min(l, 1-1/2+ l/2) = min(l, 1)= 1; • аЗ) при h(A) = 1 имеем min(l, 1 - 1 + 1) = min(l, 1) = 1. Следовательно, при любой интерпретации формула А —> Л принимает значение истина, а это значит, что она есть La-тавтология. □ Показать, что формула -v4 v А не является /^-тавтологией. Решение. Для формулы -v4v A • 61) при h(A) = 0 имеем тах(1, 0) = 1; • 62) при h(A) -111 имеем тах(1 / 2, 1 / 2) = 1 / 2; • 63) при h(A) = 1 имеем тах(0, 1) = 1. Следовательно, поскольку при интерпретации 62) формула не является истиной, то она не является и /^-тавтологией. * Последний пример показывает, что закон "исключения третьего" не имеет места в л-значной логике (п > 3). А это означает, что такая логика существен-
Глава 3. Элементы теории алгоритмов и математической логики 233 но отличается от 2-значной. Кроме того, этот факт свидетельствует, что формулы А—> В и -т/1 v В неэквивалентны между собой в этой логике. Пусть А(Аи Аг, ..., Ak) означает, что формула А зависит от атомов А\, А2, ..., Ак или что формула А построена из этих атомов с помощью логических связок. Поскольку всякая формула л-значной логики А, зависящая от атомарных формул А\ь Аг, ..., Ak может иметь п интерпретаций, то имеет место такое утверждение. Утверждение 3.4.2. Число всех формул п-значнои логики, зависящих от ато- k марных формул А и А2> ..., Ak равняется п . Часто вместе с л-значной логикой для конечного п рассматривают и позначную логику, где Loo— множество рациональных чисел х, таких, что 0<jc< 1. Вычисление значений формул °°-значной логики ведется по правилам, аналогичным тем, что описаны в приведенной выше таблице истинности. Например, пользуясь этими таблицами, легко убедиться, что следующие формулы являются ^-тавтологиями: □ Л->Л; □ А -> (В -> Л); □ (Д->В)->((Я->С)->(Л->0); □ (А -> (В -> О) -> (В -> (А -> О); □ ((А -> В) -> В) -> ((В -> А) -> Л); □ (Д->Я)->((В->Д)->(В->Л)). Определение 3.4.19. Формула В называется следствием формул АиА2, ..., Л* в /i-значной логике или в ©о-значной логике (обозначение Аи А2, ..., Ak \-nB) тогда и только тогда, когда для произвольной интерпретации h справедливо неравенство h(Ax) + h(A2) + ... + h(Ak) - h(B) <k-l. В частности, \-п В тогда и только тогда, когда h(B) = 1. Теорема 3.4.19 (теорема дедукции). Аи Аг* ---Аь В \- С тогда и только тогда, когдаА\, А2, ...,Ак |"п 5 —> С. Существуют и другие определения того, что формула В является логическим следствием формул А\,А2, • • -Ак в л-значной логике. Например, АиАъ ...,Ак \-nB<=*\/hmin{h(Ai)}<h(B).
234 Часть I. Математические основы Контрольные вопросы □ Чем отличается 3-значная логика от 2-значной? □ Все ли законы 2-значной логики имеют место в n-значной логике? □ Сколько существует формул 4-значной логики, зависящих от атомарных формуле,В, С? Задачи и упражнения 1. Доказать законы 1-6 для n-значной логики. 2. Доказать, что формулы 1-6 являются Loo-тавтологиями. 3. Вычислить значения 3-значной логики: • -Л vfi, • Л&-ь4, • ((Л&Я)->С)->(Л->(Я->С)), • (л->я)&св&л), • (А -> (В & С)) -> ((А -> Я) & (Л -> С)). 4. Построить формулы 3-значной логики В(А), С(А), D(A)9 зависящие от атомарной формулы А9 такие, что В(А) является Ьз-тавтологией, С(А) принимает значение 1 / 2 и D(A) является Ьз-противоречием. 5. Показать, что ((Ап —> В) —> А) —> А является ^-тавтологией, но не является Ln+ i-тавтологией, где Ап —> В определяется рекурсивно: А0 -> В — это Я, Ап -> В — это А -> (Ап -> В). 6. Доказать теорему дедукции для л-значной пропозициональной логики. 3.4.9. Понятие алгебраической системы Понятие алгебраической системы объединяет в себе понятия универсальной алгебры и логического исчисления. Формальным аппаратом теории алгебраических систем есть исчисление предикатов первого порядка, а сама теория может рассматриваться как теория, находящаяся между математической логикой и алгеброй. Рассмотрим коротко понятие алгебраической системы и самые простые особенности этого понятия. Алгебраической системой (АС) называется объект а = 04, Q, П), состоящий из трех множеств: непустого множества А, множества операций Q = { О)"', (О^2, ...}
Глава 3. Элементы теории алгоритмов и математической логики 235 (сигнатура операций), определенных на множестве А, и множества предика- k к тов П = { ^j1 , А22 , ...} (сигнатура предикатов), которые заданы на множестве А. Типом АС называется пара множеств т = ({/гь и2, ...}, {к\, к2, ...}), элементами которых служат соответственно арности операций и предикатных символов. Тип АС т конечный, если конечны оба его множества. Множество А, как и в случае универсальных алгебр, называется носителем или основным мноэюеством системы а = (Л, Q, П), а ее элементы — элементами системы А. Мощность \А\ множества А называется мощностью, или порядком АС а = (A, Q, П) и обозначается |Л|. В отличие от других операций и предикатов, которые могут быть определены на множестве А, операции из Q и предикаты из П называются основными. Значения основных нуль- арных операций АС называются главными, или выделенными элементами этой системы. Алгебраические системы а = (A, Q, П) и в = (В, Q', П') называются алгебраическими системами одного и того лее типа, если между множествами их операций и предикатов существует такая взаимно однозначное соответствие, при котором соответствующие операции и предикаты имеют одинаковые арности. Соответствующие операции называют операциями одного и того же типа или однотипными. Часто, как и в случае универсальных алгебр, одноименные операции и предикаты не различают между собой и считают, что системы а = {A, Q, П) и в = (В, Q\ IT) имеют одни и те же сигнатуры операций и предикатов. АС конечного типа а = (A, Q, П) называется конечной, если множество А конечно. В этом случае АС а = (A, Q, П) записывается а = (А; ©Л ..., соЛ, А^1 , .... а)г ). АС а = (А, £1, П) называется алгеброй, если П = 0, и моделью, если О. = 0. Примеры 3.4.13 a = (Z;{+}), a = (RC; {+,-}), a = (Z; { + };{<}), a = (Z;{<}), a = (N;{*,+,0,1}), где Z, RC, N— множества всех целых, рациональных и натуральных чисел соответственно, а "+" и "-" — обыкновенные операции сложения и вычитания чисел. Предикат < — это отношение линейного порядка. Первая и вторая
236 Часть I. Математические основы АС — алгебры типа (2) и (2, 2), третья АС — типа ((2); (2)), четвертая — модель типа (2), а пятая — алгебра типа (1, 2, 0, 0), где s(x) = х + 1, а 0 и 1 — главные элементы этой АС. * Если в определении АС заменить слово операций словами частичных операции, то получим определение частичной АС. Как нам известно {см. "Отображения и операции" разд. 1.1.1) всякую и- арную операцию можно рассматривать как (п + 1)-арное отношение. Пусть Aw означает предикат, который соответствует отношению, что задается п- арной операцией О), т. е. Aw(aua2, ...,an,b)= 1 <=>0)(яья2, ...,an) = by гдеяья2, ...,an,be A. Если таким образом заменить в АС все операции предикатами, то получим модель а* = (А, П*), которую называют моделью, представляющей АС а = (Л,0,П). Пример 3.4.14 Если а = (Z; {+, - 0}; {<}), то а* = (Z; {Л+2, А.\ А0\ <}), где А+(х9 у, z) = 1 <=» х + у = z, Д_0, у, г) = 1 <=> х -у = z, Л0 (jc) = 1 <=> jc = 0. < Отображением АС а = {A, Q, П) в АС в = (5, Q\ IT) называется отображение А: А -> В. Изоморфизмом АС а = (Л, Q, П) типа т в АС в = (В, Q\ TV) того же типа т называется взаимно однозначное отображение Л, которое удовлетворяет таким условиям: А(0)(аь Я2, ..., ап)) = 0)'(A(fli), /г(я2), ..., h(an)\ (8i) A*(ai,fl2, ...,a„) = A/(A(fli), А(яг), ..JW), (8il) для любых а\,а2, ...,апу\зАи для соответствующих О) из Q и а/ из £У,Л* из П и Л/ из ГГ. Изоморфизм АС а = (A, Q, П) на себя называется автоморфизмом. Гомоморфизмом а = (A, Q, П) в АС в = (В, Q\ П') того же типа, что и а, называется отображение АС А в АС в, которое удовлетворяет условию (8i) и условию Ак(аи а2, ..., ап) ->Ak'(h(ax), h{a2), ..., h(an)) (8i2) для всех Ль сг2, ..., a„ e A,Ak из П и Ак изП'.
Глава 3. Элементы теории алгоритмов и математической логики 237 Из этих определений следует, что всякий изоморфизм АС является гомоморфизмом. Взаимно однозначный гомоморфизм для АС не всегда будет изоморфизмом. Действительно, пусть а = (N, А) и в = (N, <), где А — бинарное тождественно ложное отношение на N. Модели айв одного типа, а произвольное отображение abb будет гомоморфизмом. Действительно, условие (8i2) здесь всегда выполняется, а условие (8i) и проверять нет необходимости, поскольку нет операций. Но между айв нет никакого изоморфизма. Если бы это было не так, т.е., если h— изоморфизм, то й(0) и /г(1) разные и, значит, либо А(0)<й(1), либо А(1)</г(0). Из условия (8il) следует, что ДО, 1) или А(1, 0) будет истинным, что противоречит тому, что А тождественно ложно на N. Гомоморфизм h a = (A, Q, П) в АС в = (В, Q\ IT) называется гомоморфизмом "на", если h — отображение А на В. Непосредственно из определений гомоморфизма и изоморфизма следует Теорема 3.4.20. 1. Всякий гомоморфизм h конечной АС а = (А, Д П) на себя является изоморфизмом. 2. Произведение гомоморфизмов (изоморфизмов) АС является гомоморфизмом (изоморфизмом) АС; 3. Отношение изоморфизма АС является отношением эквивалентности. Доказательства предлагаются как простые упражнения. Теорема 3.4.21. Отображение h a = (A, Q, П) в АС в = (В, Q', IT) является гомоморфизмом тогда и только тогда, когда h — гомоморфизм модели а* в модель в , где а ив — модели, которые представляют соответствующие АС а и в. Доказательство. Пусть h — гомоморфизм а в в , а со и со7 — одноименные основные операции АС а и в, a Aw и Лw' — соответствующие предикаты моделей а в . Пусть яь ..., апе А, тогда положим со(яь ..., ап) = а. Получаем А„(аи ..., ап, а)=1. Значит, A*>(h(a\), ..., й(яя), й(д))=1, т.е. (fl'(A(fli), ..., h(an)) = h(a). Доказательство в обратную сторону проводится аналогично. Теорема доказана. AC Ai = (Аи й, П) называется подсистемой AC a = (A, Q, П), если А\ с Л и множество А\ замкнуто относительно любой основной операции из Q, а значения основных предикатов из П на множестве А\ совпадают со значениями тех же предикатов на А для соответствующих элементов. Если а— алгебра или модель, то Ai называется подалгеброй или подмоделью а. В частности, если а представляет собой модель, то произвольное непустое подмножество
238 Часть I. Математические основы носителя будет замкнутым и, значит, будет подмоделью модели а. Как и для универсальных алгебр, для АС, имеет место следующая теорема. Теорема 3.4.22. Пересечение произвольной совокупности подсистем АС а = 04, Q, П), если оно непустое, будет подсистемой АС а. 3.4.10. Контрольные вопросы □ Дайте определение логически общезначимой формулы. □ Чем отличаются формулы исчисления высказываний от формул исчисления предикатов? □ Сколько аксиом и правил вывода имеет теория первого порядка? □ Сколько аксиом и правил вввода имеет исчисление предикатов первого порядка? □ Назовите свойства теорий первого порядка. □ Сформулируйте теорему дедукции для исчисления высказываний. □ Что такое логики высших порядков? На чем основывается классификация логик? □ Какие есть стандартные формы формул логики предикатов первого порядка? 3.4.11. Задачи и упражнения 1. Постройте доказательство формулы (А —> В) = (—\В —> —>A), не пользуясь теоремой дедукции. 2. Найдите для формулы -|(Д —> (С <=> В)) —> D эквивалентную ей формулу, которая включает лишь логические связи: v и -и, & и -i. 3. Убедитесь в том, что аксиомы логики высказываний и аксиомы логики предикатов — тождественно истинные формулы. 4. Найдите формулу логики высказываний, которая эквивалентна функции X 1 1 0 0 У 1 0 1 0 f(x,y) 0 1 1 0 5. Покажите, что отношение R на множестве всех формул логики высказываний, которое определяется как A R В <=> h(A) = h(B) для интерпретации А, есть отношение эквивалентности.
Глава 3. Элементы теории алгоритмов и математической логики 239 6. Постройте интерпретацию логики высказываний в алгебре множеств. 7. Будет ли логическим следствием формула —\С v —\D множества формул (С -> G) & (D -> S), S & G -> £, -п£? 8. Запишите в виде формул исчисления высказываний, приведенные ниже высказывания, и найдите интерпретации, при которых они истинны: • Я пойду домой (//) или останусь тут и послушаю музыку (S). Я не пойду домой. Значит, я останусь тут и послушаю музыку. • Если Джон ляжет спать сегодня поздно (5), он будет утром не в форме (D). Если он ляжет спать не поздно, то ему будет казаться, что не стоит жить (L). Значит, или Джон будет завтра не в форме, или ему будет казаться, что не стоит жить. • Заработная плата вырастет (W), если будет инфляция (У). Если будет инфляция, то увеличится стоимость жизни (С). Заработная плата вырастет. Значит, увеличится стоимость жизни. • Если 2 — простое число (Р), то это наименьшее простое число (L). Если 2 — наименьшее простое число, то 1 не есть простое число (N). Число 1 не является простым числом. Значит, 2 — простое число. • Джон или переутомился (£), или болен (S). Если он переутомился, то он раздражается (С). Он не раздражается. Значит, он болен. • Если я поеду автобусом (5), а автобус опоздает (L), то я пропущу важное свидание (М). Если я пропущу важное свидание и начну печалиться (D), то мне не следует ехать домой (//). Если я не получу эту работу (/), то я начну печалиться и мне нужно поехать домой. Значит, если я поеду автобусом и автобус опоздает, то я получу эту работу. • Если 6 — составное число (5), то 12 — составное число (W). Если 12 — составное число, то существует простое число, больше, чем 12 (Р). Если существует простое число, больше, чем 12, то существует составное число больше 12 (С). Если 6 делится на 2 (D), то 6 — составное число. Число 12 составное. Следовательно, 6 — составное число. • Если завтра будет холодно (С), я надену теплое пальто (//), если рукав будет починен (5). Завтра будет холодно, а рукав не будет починен, значит, я не надену теплое пальто. 9. Пусть Р(х) означает "дс — простое число", Е(х) — "х — четное число", 0(х)— "jc— нечетное число", D(x, у)— "у делится на х". Переведите на русский язык такие формулы логики предикатов первого порядка: • Р(7); • £(2)&Р(2); • Vjc (E(x) & D(x, 6));
240 Часть I. Математические основы • Ух Ь£(х) -> -.D(2, х)); • Vx(E(x)&\/y(D(x,y)^E(ym . \/x(P(x)^(3y)(E(y)&D(x,yM • Vx(0(x)^(\/y)(P(y)->-^D(x,ym • (Эх) (£(x) & />(*)) & -.(Эх) ((£(x) & P(x)) & &((3y) (x-, = y & E(x) & P(y)))). 10. Ниже приведены пять предложений на русском языке, за которыми идет столько же предложений символического языка предикатов первого порядка. Найдите соответствующие пары предложений, так чтобы каждый член пары был переводом соответствующего ему члена. Все судьи (J(x)) — юристы (Цх)). Некоторые юристы — мошенники (S(x)). Не все юристы — судьи. Ни один судья не является мошенником. Некоторые юристы — политики (Р(х)). Зх (L(x) & S(jc)). Зх (Цх) & Р(х)). -i(Vx)(L(x) -> У(х)). Vx (У(х) -> L(x)). Vx (Цх) -> -i5(jc)). 11. Укажите свободные и связанные вхождения переменных в таких формулах: Vz(\fxA(x9y)->B(z9x))9 V>M(z,y)-> VzA(z,y)), (Vy Эу (Л(х, у, fa у))) v -Мх В(у,Ах)). 12. Переведите на язык формул такие предложения: Не все птицы могут летать. Либо каждый любит кого-нибудь, и ни один не любит всех, либо кто-то любит всех, и кто-то не любит никого. Если кто-то может это сделать, то и я тоже могу это сделать. Не все люди искренны и не все искренние люди богаты. 13. Свободен ли терм У(х, у) для х в формулах А(х, у) -> VxZ?(x), (\/у А(у; a)) v By A(x, у)?
Глава 4 Элементы теории графов Возникновение теории графов связывают с именем Эйлера, который в 1736 году не только решил популярную в то время головоломку о кенигсберских мостах, но и нашел критерий существования в графе специального маршрута (эйлерового цикла). Долгое время этот результат оставался единственным результатом теории графов, и лишь в средине XIX в., в основном усилиями Кирхгофа и Кэли, были получены новые результаты в теории графов. Приблизительно в это же время возникла знаменитая проблема четырех красок. Хотя теория графов возникла более двух столетий тому назад но ее интенсивное развитие приходится лишь на последние 50-60 лет. Это развитие вызвано широким применением графов в теории автоматов, теории проектирования, экономике, химии, биологии и т. д. Поскольку 50-60 лет для глубокой теории — это сравнительно молодой возраст, то терминология в теории графов все еще изменяется. Возникают новые понятия и методы. В связи с этим понятийный материал главы может иметь некоторые расхождения с другими литературными источниками по теории графов, хотя в нем собраны более-менее устоявшиеся понятия, определения и методы теории графов. 4.1. Определение графов, разновидности графов 4.1.1. Определение неориентированного графа Пусть V— некоторое непустое множество. Обозначим Vi2)— множество всех неупорядоченных различных двухэлементных подмножеств множества V, a MV{2)— мультимножество множества V(2\ то есть MVi2) может содержать одинаковые пары элементов из V, причем этих пар может быть сколько угодно. Как и раньше, декартовый квадрат множества Убудем обозначать V".
242 Часть I. Математические основы Неориентированным мультиграфом G называется пара (V, Е), где Е с MV . Элементы множества V называются вершинами, а элементы множества Е — ребрами. Ребра обозначаются парами (и, v), где и, v — вершины из V. Мультиграф G = (V, Е) называется неориентированным графом, если Е с V(2). Подчеркнем, что всякий граф является мультиграфом, но не всякий мультиграф будет графом. Если G = (V, £) — мультиграф, то Е может иметь несколько ребер вида (и, v). Такие ребра называются кратными ребрами. Следовательно, граф — это мультиграф, у которого кратность каждого ребра равна единице. Мультиграф называется конечным, если множества V и Е конечные. Для конечности графа, очевидно, достаточно лишь конечности множества его вершин V, поскольку конечность Удает конечность V(2\ то есть граф называется конечным, если множество его вершин конечно. Конечный граф с п вершинами называется графом п-го порядка. Иногда рассматривают графы, имеющие ребра вида (и, и). Ребро такого вида называется петлей, а мультиграф, имеющий петли, — псевдографом. В дальнейшем, если не оговорено противное, будем рассматривать только конечные графы. Говорят, что две вершины и и v графа G = (V, Е) смежные, если (и, v) e E, и несмежные — в противном случае. Если (и, v) e E, то вершины и и v называются концами ребра (и, v). В этом случае еще говорят, что ребро (и, v) соединяет вершины и и vy Множество вершин графа, смежных с некоторой вершиной и, будем обозначать См(и). Из этих определений следует также, что разница между графом и мультиграфом состоит в том, что две вершины в графе могут быть соединены не более чем одним ребром, а в мультиграфе две вершины могут соединяться более чем одним ребром. Два ребра называются смежными, если они имеют общий конец. Отметим, что отношение смежности как для вершин, так и для ребер является симметричным отношением. Вершина и и ребро е называются инцидентными, если и является концом ребра е, и неинцидентными — в противном случае. Степенью п{и) вершины и графа G называется число инцидентных ей ребер. Вершина степени 0 называется изолированной, а вершина степени 1 — висящей или концевой. Ребро, инцидентное концевой вершине, также называется концевым. Следующее простое, почти очевидное, утверждение дает удобную характеристику графов.
Глава 4. Элементы теории графов 243 Лемма о рукопожатии. Сумма степеней всех вершин графа есть четное число. Действительно, каждое ребро вносит в сумму всех вершин графа число 2. Значит, 5>(v) = 2|E|. veV Если интерпретировать каждое ребро как рукопожатие двух людей, то получаем, что при любом числе рукопожатий общее количество пожатых рук будет четным. Следствие 4.1.1. В любом графе число вершин нечетной степени четно. Действительно, если бы это было не так, то сумма степеней всех вершин графа не могла бы быть четным числом, что противоречит лемме о рукопожатии. Графы удобно изображать на плоскости или в пространстве в виде диаграмм, состоящих из точек и отрезков, соединяющих некоторые из этих точек. При этом точки отождествляются с вершинами графа, а отрезки — с его ребрами (см. рис. 4.1.1, а, б, в). о ъ ч / а б в Рис. 4.1.1. Изображение графов: а — псевдограф; б — мультиграф; в — граф 4.1.2. Разновидности графов Рассмотрим некоторые часто встречающиеся разновидности графов. Полные графы Граф, у которого любые две вершины смежные, называется полным графом. Следовательно, если G = (V, E)— полный граф, то E=V{2). Полный граф с п вершинами будем обозначать Кп. Графы К4 и К5 изображены ниже на рис. 4.1.2 и 4.1.3 соответственно.
244 Часть I. Математические основы А # 2 3 45 Рис. 4.1.2. Граф К4 Рис. 4.1.3. Граф К5 Регулярные графы Более общими, чем полные, являются регулярные графы. Граф называется регулярным или однородным, если все его вершины имеют одну и ту же степень. Если степень каждой вершины равна к, то граф называется регулярным графом степени к. Следовательно, полный граф n-го порядка есть регулярный граф степени п - 1. Регулярные графы степени 3 называют также кубическими, или трехвалентными графами (эти графы вызывают особый интерес в связи с задачей раскраски графов, которая будет рассмотрена позже). Известным примером кубического графа есть граф Петерсена, показанный на рис. 4.1.4. # Рис. 4.1.4. Граф Петерсена Полностью несвязные графы Граф, у которого множество ребер пусто, называется полностью несвязным или пустым. Будем обозначать полностью несвязные графы с п вершинами через Nn. На рис. 4.1.5 показан пустой граф УУ4. о о 1 2 Рис. 4.1.5. Пустой граф Отметим, что каждый пустой граф является регулярным графом степени 0.
Глава 4. Элементы теории графов 245 Платоновы графы Платоновыми графами называются графы, образованные вершинами и ребрами пяти правильных многогранников— Платоновых тел: тетраэдра, куба, октаэдра, додекаэдра и икосаэдра. Граф К*, изображенный на рис. 4.1.2, соответствует тетраэдру, а графы, соответствующие кубу и октаэдру, показаны на рис. 4.1.6 и 4.1.7 соответственно. Рис. 4.1.6. Граф, соответствующий кубу Рис. 4.1.7. Граф, соответствующий октаэдру Остальные графы, соответствующие додекаэдру и икосаэдру, предлагается нарисовать читателю (см. упр. I в конце раздела). Двудольные графы Граф называется двудольным, если существует такое разбиение множества его вершин на два класса, при котором концы каждого ребра лежат в разных классах. Двудольный граф можно определить и другим способом — в терминах раскраски его вершин двумя цветами, например, красным и синим. При этом граф называется двудольным, если каждую его вершину можно покрасить синим или красным цветом так, чтобы каждое его ребро имело один конец красный, а другой — синий. Если в двудольном графе всякие две вершины из разных классов смежные, то такой граф называется полным двудольным графом. Полный двудольный граф, у которого одному классу принадлежат т вершин, а другому — п вершин, обозначают Кт,п. Полный двудольный граф вида К\,п называется звездным графом. На рис. 4.1.8 изображен граф K{t5. Рис. 4.1.8. Граф /C1i5
246 Часть I. Математические основы Аналогично можно ввести fc-дольные графы. Граф называется к-дольным графом, если существует такое разбиение множества его вершин на к классов, при котором всякое ребро графа соединяет две вершины из разных классов. Ориентированные графы (орграфы) Граф G = (V, Е) называется ориентированным графом {орграфом), если Е с V2, то есть вершины всех его ребер упорядочены. Если (и, v) Е Е, то вершину и называют начальной вершиной, a v— конечной вершиной ребра. Орграфы изображаются так же как и графы, с той лишь разницей, что их ребра обозначаются стрелками, ведущими из начальной вершины ребра в конечную. Другими словами, если (w, v) — ребро орграфа, то из вершины и в вершину v ведет стрелка. Примеры орграфов показаны на рис. 4.1.9. Рис. 4.1.9. Орграфы Можно определить и ориентированный мультиграф. Граф G = (V, Е) называется ориентированным мультиграфом, если Е с MV и каждое его ребро упорядочено, т. е. указано, какая вершина первая, а какая вторая. Следовательно, в орграфах ребра (и, v) и (v, и) разные. 4.1.3. Изоморфизм графов. Подграфы Пусть G = (V, Е)и H=(V\, Е\) — графы и /г: V—>V\ — взаимно однозначное соответствие (то есть |V| = |Vi|). Отображение h называется изоморфизмом графов G и Н, если для любых вершин и и v графа G их образы h(u) и h(v) смежные в графе Н тогда и только тогда, когда и и v смежные в G. Если такое отображение h существует, то графы G и Я называются изоморфными. Очевидно, что отношение изоморфизма графов есть отношение эквивалентности. Изоморфные графы, как правило, не различаются. Граф #=(V, £") называется подграфом графа G = (V, £), если V (ZV и Е! с Е. Если Н— подграф графа G, то говорят, что Н находится в графе G. Подграф Н графа G называется остовным подграфом, когда V = V.
Глава 4. Элементы теории графов 247 Пример 4.1.1 2 3 2 3 1 4 5 1 4 5 Рис. 4.1.10. Граф и его остовной подграф ft ft ч Рис. 4.1.11. Граф и его подграфы < 4.1.4. Контрольные вопросы □ Что называется графом, мультиграфом, псевдографом? □ Какая разница между графом и псевдографом? □ Какой граф называется регулярным, регулярным степени к, полным? □ Является ли • полный граф регулярным графом? • регулярный граф полным? □ Будет ли конечным граф, у которого конечное число вершин, ребер? □ Какие бывают разновидности графов? 4.1.5. Задачи и упражнения 1. Постройте Платоновы графы для икосаэдра и додекаэдра. 2. Будут ли Платоновы графы регулярными? 9 Зак 3427
248 Часть I. Математические основы 4.2. Операции над графами На практике часто встречаются графы, которые строятся из некоторого исходного графа с помощью удаления одной из его вершин или одного из его ребер. Существуют и другие возможные преобразования графов, которые определяются как операции над графами. Рассмотрим основные операции над графами и некоторые их свойства. 4.2.1. Операция удаления ребра Пусть G = (V, Е) — граф и е Е Е— некоторое его ребро. Говорят, что граф G\ = G-e получен из графа G в результате операции удаления ребра е, если G\ = (У, £\ {e}). Следовательно, концы ребра е не удаляются из множества V. Нетрудно показать, что для произвольных ребер е и е\ графа G имеет место такое тождество: (G-e)-e{ = (G-e{)-e. Действительно, поскольку имеет место тождество (А \ В) \ С = А \ (В u Q (см. упр. 10 из разд. 1.1), то имеем Gi = G-e = (V,E\{e})9 (G-e)-el = G]-el = (V,(E\{e))\{el)) = (ViE\({e}v{e[})) = = (V9E\({el)v{e})) = (V,(E\{ei})\{e}) = (G-el)-e. Следовательно, если выполняется подряд несколько операций удаления ребра, то результат не зависит от порядка, в котором эти ребра удаляются из графа. Пример 4.2.1 1 2 1 2 1 2 4 5 За 4 5364 53а Рис. 4.2.1. Удаление ребра: а — граф G; б— граф G \ {(2,3)}; е-графах {(2,3)}) \ {(1,4)}.« 4.2.2. Операция удаления вершины Пусть G = (V, Е) и ve V. Говорят, что граф G\ = G-v получен из графа G в результате операции удаления вершины v, если вершина v удалена из V, а из Е удалены все ребра, инцидентные с вершиной v.
Глава 4. Элементы теории графов 249 Нетрудно убедиться, что операция удаления вершины не зависит от порядка, в котором удаляются вершины из графа (см. упр. 7 в конце разд.). Пример 4.2.2 о 1 4 5 а 1 561 4 5 в Рис. 4.2.2. Удаление вершины: а — граф G; б— граф G - {4}; в — граф G - {3}. < Операции удаления ребра, вершины и перехода к подграфу — это операции, с помощью которых можно из исходного графа получать графы с меньшим числом вершин и ребер. Есть и другие операции, дающие возможность строить из исходных графов другие графы с большим числом вершин и ребер. 4.2.3. Операция введения ребра Если w, vg V и (w, v) £ Е в графе G = (V, £), то определяется граф G + e = (V,Ev {е}\ где е = (w, v). В силу коммутативности операции объединения множеств, можно утверждать, что последовательность операций добавления ребер в граф G не зависит от порядка, в котором эти ребра добавляются в граф G. Другими словами, имеет место тождество W, е\ е Е, ((G + е) + ех = (G + ех) + е\ 4.2.4. Операция введения вершины в ребро Пусть (м, v)— некоторое ребро графа G. Добавлением вершины w в ребро (и, v) называется операция, в результате которой получаем два ребра (м, w) и (w, v), а ребро (м, v) удаляется из графа G. 4.2.5. Операция объединения графов Граф F называется объединением графов G = (V, E) и H-{VU E\), если F=(VuVi, EuE\). Граф F обозначается GuH. Объединение графов F=Gu H называется дизъюнктивным, если Vn V\ = 0. Непосредственно из обозначения операции объединения графов выплывает, что (VG, H) (G u H = Я u G).
250 Часть I. Математические основы Операция дизъюнктивного объединения графов дает возможность ввести в рассмотрение еще один важный тип графов. Граф называется связным, если его нельзя представить в виде дизъюнктивного объединения двух подграфов, и несвязным — в противоположном случае. Следовательно, всякий несвязный граф можно представить в виде дизъюнктивного объединения конечного числа связных подграфов. Каждый из связных подграфов называется компонентом связности. Связный регулярный граф степени 2 называется циклическим графом. Циклический граф с п вершинами обозначается Сп. Циклический граф Св приведен на рис. 4.2.3. Рис. 4.2.3. Циклический граф 4.2.6. Произведение графов Произведением графов G = (V, Е) и #= (V\9 E\) называется граф F= G х Я, у которого V= Vx Vu а Е определяется таким образом: вершины (м, щ) и (v, vi) смежные в F тогда и только тогда, когда и = v, а щ и vi смежные в Н или u\ = vi, а и и v смежные в G. Пример 4.2.3 X о- -о = (2, 3) (2, 4) Рис. 4.2.4. Произведение графов < (2,5) 4.2.7. Отождествление (слияние) вершин Если G = (V, Е)— граф, м, v— две его вершины и См(и)={и\, ..., м*Ь Cm(v) = {vi, ..., v/}, то граф Н = G-u- v, полученный присоединением новой вершины и к множеству вершин Н и множества ребер вида (и', и,), (и', у,)
Глава 4. Элементы теории графов 251 (/=1,2, ..., к, j = 1, 2, ..., /) к множеству ребер Я, называется графом, полученным из G путем отождествления вершин и и v. 4.2.8. Операция стягивания ребра Операция стягивания ребра (w, v) в графе G = (V, Е) означает отождествление вершин и и v в графе G. Операция стягивания ребра позволяет ввести такое понятие. Граф Н называется графом, который стягивается к графу G, «ели Н можно получить из G с помощью некоторой последовательности операций стягивания ребра. Легко заметить, например, что граф Петерсена стягивается к графу К5 и, значит, ко всякому графу Кп, где п<5. Очевидно также, что всякий непустой связный граф, отличный от Ки стягивается к графу К2. Но уже не всякий связный граф стягивается к К3. Например, простая цепь Рп не стягивается к Къ. Логично ввести параметр %(G)— максимум порядков полных графов, к которым стягивается граф G. Параметр %{G) называется числом Хадвигера графа G. Пример 4.2.4 Рис. 4.2.5. Стягивание ребра: а — граф G; б — отождествление вершин 2 и 3 в G; в — стягивание ребра (2, 3) в G. < 4.2.9. Операция раздвоения ^расщепления) вершины Пусть v — некоторая из вершин графа G. Разобьем множество смежных с ней вершин произвольным образом на две части М и Р, а потом выполним такое преобразование графа G: удалим вершину v вместе с инцидентными ей ребрами и добавим две новые вершины и и w вместе с ребром, объединяющим эти вершины. Вершину и соединим ребром с каждой вершиной множества М9 а вершину w— с каждой вершиной из множества Р. Полученный граф обозначим символом G" и будем считать, что он получен из графа G в результате раздвоения (расщепления) вершины v (рис. 4.2.6).
252 Часть I. Математические основы 14 u w Рис. 4.2.6. Раздвоение вершины v 4.2.10. Операция соединения графов Пусть G = (V, Е) и G\ = (V\, E\) — два графа, у которых множества вершин V и V\ не пересекаются, т. е. Vn V\ = 0. Операция соединения графов Си d состоит в том, что множества V и V\ объединяются, а потом каждая вершина графа G соединяется ребрами с каждой вершиной графа G\. Другими словами, если Е14 означает множество ребер, полученное объединением множеств Е и Е\ вместе с образованными новыми ребрами, то G = G + G\ = (Vu V\,EU). Ясно, что операция соединения графов может быть выражена в виде произведения (суперпозиции) операции объединения графов G и G\ и последовательности операций добавления ребра. Соединение графов Ni и Сп-\ (п>3) называется колесом с п вершинами и обозначается Wn. На рис. 4.2.7 изображены графы Се и W-j. 4 6 а 6 6 Рис. 4.2.7. Соединение графов: а — граф Се\ б — граф W-? 4.2.11. Операция дополнения графа Пусть G = (V, Е) — граф. Дополнением G* графа G называется граф с множеством вершин V, в котором две вершины смежные тогда и только тогда, когда они несмежные в графе G. Откуда выплывает, что когда граф G имеет п вершин, то граф G можно построить, удалив из графа Кп все ребра, принад-
Глава 4. Элементы теории графов 253 лежащие G (граф G считается подграфом графа Кп). Очевидно также, что дополнением полного графа является пустой граф и, наоборот, дополнением пустого графа является полный граф. Нетрудно доказать, что дополнением регулярного графа является регулярный граф. Пример 4.2.5 К &Г Рис. 4.2.8. Дополнение графа: а — граф G; б —дополнение графа G< 4.3. Свойства графов Рассмотрим более детально некоторые свойства графов и связанных с ними понятий. 4.3.1. Маршруты, циклы, связность Маршрутом в заданном графе G = (V, Е) называется конечная последовательность его ребер вида (vo, vi), (vi, v2), ...,(v*_i, vk). Число к ребер маршрута называется длиной этого маршрута. Часто можно встретить и такое определение маршрута в графе: последовательность вершин v0, vi, ..., vk графа G = (V, E) называется маршрутом, соединяющим вершины v0 и v*, если (v„ v, + 0 е Е, i = 0, 1, ..., к - 1. В обоих случаях вершины vo, vi, ..., у к называются вершинами маршрута. Очевидно, что отношение маршрут, объединяющий вершины..., является симметричным и транзитивным. Маршрут называется цепью, если все его ребра разные, и простой цепью, если все его вершины, кроме, возможно, первой и последней, разные. Маршрут называется циклическим, если первая и последняя его вершины совпадают. Циклом называется циклическая цепь, а простым циклом — простая циклическая цепь. Граф называется ациклическим графом или лесом, если в нем отсутствуют циклы. Непосредственно из определения маршрута и цикла выплывают такие утверждения.
254 Часть I. Математические основы Утверждение 4.3.1. Всякий маршрут, объединяющий любые две вершины графа, имеет простую цепь, соединяющую эти вершины. Утверждение 4.3.2. Всякий цикл в графе имеет простой цикл. Теперь можно дать более удобное определение связного графа. Граф называется связным, если произвольные две его вершины связаны маршрутом (а в силу утверждения 4.3.1 можно сказать— и простой цепью). Связный подграф Н графа G называется максимальным, если Н не находится ни в каком связном подграфе графа G. Максимальный связный подграф графа называется компонентом связности. Эквивалентность двух определений связного графа устанавливает такая теорема. Теорема 4.3.1. Граф связный тогда и только тогда, когда его нельзя представить в виде дизъюнктивного объединения двух графов. Доказательство. Пусть граф связный, т. е. всякие две его вершины и и v связаны маршрутом. Предположим, что граф G представляет собой дизъюнктивное объединение двух подграфов и вершины и и v принадлежат разным подграфам. Тогда всякая простая цепь, соединяющая вершины и и v, должна иметь ребро, инцидентное некоторым двум вершинам из разных подграфов. Но такого ребра не существует в силу нашего предположения. Предположим теперь, что граф G нельзя представить в виде объединения двух подграфов и не существует никакой простой цепи, соединяющей заданную пару вершин и и v. Тогда вершины и и v принадлежат разным компонентам связности. А это означает, что граф G можно представить в виде объединения двух подграфов,— компонента связности, которому принадлежит вершина и, и объединения остальных компонентов. Полученные противоречия окончательно доказывают теорему. 4.3.2. Свойства регулярных графов Пусть G — регулярный граф степени к. Степень регулярного графа обозначают deg(G). Очевидным следствием определения регулярного графа является такое утверждение. Утверждение 4.3.3. Полный граф является регулярным графом. Пользуясь леммой о рукопожатии, нетрудно установить справедливость такого простого утверждения для регулярных графов. Утверждение 4.3.4. Не существует регулярного графа G = (V, Е) с п вершинами степени к, у которого кип нечетные. Доказательство. Действительно, если пик — нечетные числа, то их произведение п • к тоже нечетное число, но п • к = 2 • |£| в силу леммы о рукопожатии. Полученное противоречие доказывает наше утверждение.
Глава 4. Элементы теории графов 255 Теорема 4.3.2. Пусть п, dG N — натуральные числа, одно из которых четное, и для которых выполняется неравенство 0<d<n- 1. Тогда существует регулярный граф порядка п и степени d. Доказательство. Для d - О утверждение теоремы очевидно. Кроме того, если G— регулярный граф порядка п и степени d, то его дополнение— граф G — тоже регулярный граф и deg(G ) -п- 1 -d. В связи с этим достаточно рассмотреть случай, когда 0 <d<(n- l)/2. Пусть Zn — аддитивная группа остатков целых чисел по модулю и, 0 g А и для хе А jc-класс также принадлежит множеству А. Определим граф G порядка п с множеством вершин Z„ таким условием: вершины х и у смежные, если х-уе А. Очевидно, что граф G регулярный и степень его равна \А\. Остается лишь доказать, что для всякого числа d, которое удовлетворяет условиям теоремы, существует соответствующее d-элементное множество А. При d = 2k можно взять Л = {±1, ±2, ..., ±к}, а при d = 2k+ 1 число п четное и можно взять А = {±1, ±2, ..., ±к, и/2} (см. рис. 4.3.1, где п = 8, d= 3). Теорема доказана. Рис. 4.3.1. Регулярный граф Теорема 43.3. Пусть G = (VuVi,£) — непустой регулярный двудольный граф. Тогда \ V\ = | V\\, где V, V\ — классы разбиения множества вершин графа G. Доказательство. Поскольку множеству V принадлежит лишь один конец каждого из ребер графа G, то число т его ребер равно |V| • deg(G). Аналогично т = |Vi| • deg(G). Следовательно, |V| • deg(G) = |Vi| • deg(G). В силу того, что G непустой, то deg(G) Ф 0 и, значит, |V| = |Vi|. 4.3.3. Свойства двудольных графов Существует простой критерий двудольности графа, который выражается в терминах длины циклов. Теорема 4.3.4. (Кениг.) Граф G = (V, Е) является двудольным тогда и только тогда, когда он не имеет циклов нечетной длины.
256 Часть I. Математические основы Доказательство. Пусть G— двудольный граф и С— один из его циклов длины к. Пройдем все ребра этого цикла в той последовательности, в которой они встречаются в нем, начиная с некоторой вершины v. Пройдя к ребер, возвращаемся опять в вершину v. Поскольку концы каждого ребра лежат в разных частях, то к— четное число. Пусть теперь G— связный граф и-го порядка (и > 1) не имеет циклов нечетной длины и v e V. Построим разбиение V-Vx\jV2 таким образом: произвольную вершину v графа G включим в класс V\, если расстояние rf(v, u)— четное число, и включим ее в класс Уг, если это расстояние является нечетным числом. Покажем теперь, что подграфы G\ = (Vu E\) и Gi = (V2, £2), порождаемые множествами вершин V\ и Уг соответственно, являются пустыми (вершины из V\ и из Wi не соединены между собой ни одним ребром). Предположим, что это не так, т. е. существуют смежные вершины и и w, принадлежащие одному и тому же классу. Тогда ни одна из них не совпадает с вершиной v. Пусть Р — самая короткая цепь, объединяющая вершины и и v, a Q — самая короткая цепь, соединяющая вершины и и w, w— кратчайший (w, v) путь и пусть vi— последняя вершина, если вести отсчет от вершины v. Она общая для цепей Р и Q, и принадлежит цепи Р (рис. 4.3.2). Обозначим Хи и Yu соответственно подцепи, которые соединяют вершины v и vb и v, и и цепи Р, а через Xw и Yw— соответственно подцепи цепи Q, которые соединяют вершины v и vi и vi и w . К*) у Ч_> z _\ и w Рис. 4.3.2. Цепь Р Очевидно, что длины цепей Xv и Xw равны и, значит, длины цепей Yv и Yw либо четные, либо нечетные. Но тогда объединение цепей Yu и Yw и ребра (v, w) является циклом нечетной длины. Полученное противоречие доказывает теорему. Следствие 4.3.1. Граф двудольный тогда и только тогда, когда он не имеет простых циклов нечетной длины.
Глава 4. Элементы теории графов 257 Из доказательства теоремы 4.3.4 выплывает простой способ распознавания двудольности графа. Будем приписывать номера 0 и 1 вершинам графа G: О начиная с произвольной вершины и графа G, приписываем ей номер 0; □ каждой вершине из множества См{и) приписываем номер 1; □ для всех вершин, смежных с вершинами множества См(и), приписываем номер 0; □ для всех вершин, получивших номер 0, находим все смежные с ними вершины и приписываем им номер 1 и т. д. После того как все вершины будут таким образом перенумерованы, строим два множества: Vo и Vu которые включают все вершины с номерами соответственно 0 и 1. Если графы G\ = (Vb, Е0) и Gi = (Vu Е\) пустые, то граф G двудольный, а если нет (то есть либо £Ь, либо Е\ непусто), то G не является двудольным. 4.3.4. Свойства связных графов Выясним теперь некоторые свойства связных графов. Прежде всего, установим такой факт. Теорема 4.3.5. Произвольный граф G = (Vt E) единым способом представляется в виде дизъюнктивного объединения своих компонентов связности. Доказательство. Определим на множестве вершин графа G отношение /?: uRv <=> (и = v), т. е. существует маршрут в G, который объединяет вершины и и v. Нетрудно проверить, что отношение R представляет собой отношение эквивалентности. Следовательно, множество вершин графа разбивается на непе- k ресекающиеся классы. Пусть V = |JV; — разбиение. Тогда подграфы /=1 G, = (Vh Et)9 где Et— множество ребер в графе G, соединяющих вершины из V,- к в графе G, являются компонентами связности графа G, и G = |jG/ — дизъ- /=1 юнктивное объединение. Теорема доказана. Часто возникает вопрос о числе ребер связного графа. Пусть G = (V, E)— граф с п вершинами и к компонентами связности. Если такой граф связный, то естественно ожидать, что число ребер в нем минимально, когда он ациклический, и максимально, когда он полный. Отсюда выплывает такая оценка для числа ребер связного графа: л-1<|Я|<л-(л-1)/2. На самом деле существует более сильный результат.
258 Часть I. Математические основы Теорема 4.3.6. Пусть G — граф с п вершинами и к компонентами связности. Тогда число т его ребер удовлетворяет неравенству n-k<m<(n-k)-(n-k+l)/2. Доказательство. Неравенство т>п-к легко доказать методом математической индукции. Действительно, если G полностью несвязный граф, то неравенство справедливо: в этом случае к = п, т = 0и0>п-к = 0. Пусть G имеет минимальное число ребер, например т', тогда удаление одного ребра приводит к увеличению числа компонентов связности на единицу. То есть, полученный граф будет иметь п вершин, к + 1 компоненту связности и т - 1 ребро. В силу индуктивного предположения имеем т - 1 > п - (к + 1), или т >п-к, что и следовало доказать. При доказательстве справедливости верхней оценки можно считать, что каждый компонент связности графа G является полным графом. Предположим, что С/ и Cj— компоненты связности соответственно с и, и и,- вершинами, где и, > rij > 1. Если заменить С, и Q на полные графы с щ + 1 и^-1 вершинами, то общее количество вершин не изменится, а число ребер увеличится на некоторую положительную величину: 1 / 2{(п( + 1) • щ - щ • (и, - 1) - (rij - 1) • rij + (rij - 1) • (rij - 2)} = 1 / 2{щ + Hi - щ + и,- - rij + rij + rij - 3rij + 2} = 1 / 2(2и, - 2rij + 2) = tti - rij + 1. Следовательно, для того чтобы число ребер в графе G было максимальным при данных пик, граф G должен состоять из к - 1 изолированной вершины и полного графа с п - к + 1 вершиной. А отсюда сразу выплывает требуемое неравенство. Теорема доказана. Следствие 4.3.2. Всякий граф порядка и, имеющий больше (п - 1) • (п - 2) I 2 ребер, связный. Действительно, в этом случае число компонентов связности такого графа должно быть строго меньше двух. Следовательно, к = 1, т. е. граф связный. Второй вопрос, который тоже часто возникает, — насколько сильно связным является связный граф. По-другому этот вопрос можно сформулировать так: сколько нужно удалить ребер из графа, чтобы он перестал быть связным? Для ответа на данный вопрос введем некоторые определения общего характера. Множество ребер произвольного графа G, которое называется множеством, разделяющим граф G, — это такое множество его ребер, удаление которого из графа G влечет увеличение числа его компонентов связности. Если граф G
Глава 4. Элементы теории графов 259 связный, то множеством ребер G, разделяющим граф G, называется такое множество его ребер, удаление которого из графа G ведет к несвязному графу. Пример 4.3.1 В приведенном на рис. 4.3.3 графе G множество ребер {е4, es, ei) представляет собой множество, разделяющее граф G. Рис. 4.3.3. Граф: a — G\ б — полученный в результате удаления множества ребер {е4, е$, ei) Очевидно, что {е6, е7], {е5, е6, е7Ь {^ь ^2, е3}, {^ь ^з, е4} — это множество ребер, разделяющее граф G. ^ Следовательно, множество ребер, разделяющее граф, может иметь собственное подмножество, также разделяющее граф. Сечением графа G называется такое множество ребер, разделяющее граф G, никакое собственное подмножество которого не является множеством, разделяющим этот граф. В рассмотренном примере сечениями будут множества {е4, е5у е7Ь {^6, е-]}, {е\, еъ, е^\. Сечение графа G, состоящее лишь из одного ребра, называется мостом. Например, если граф G есть колесо, то в нем всякое его сечение будет мостом. Отметим, что в результате удаления ребер, входящих в состав сечения графа G, число компонентов связности графа G увеличивается ровно на единицу. Граф, изоморфный своему дополнению, называется графом, дополняющим сам себя. Примерами графов, которые дополняют сами себя, могут служить графы: Кх — полный граф порядка 1, С5 — простой цикл длины 5 и т. д. Очевидно taioKe, что когда G изоморфный //, то G изоморфный Н и G = G. Теорема 4.3.7. Для любого графа G либо он сам, либо его дополнение G является связным. Доказательство. Пусть G = (V, Е) — несвязный граф, А — одна из его компонентов связности и В= V\A. Тогда для любых вершин и из А и v из В в графе G* есть маршрут длины 1, поскольку эти вершины связаны ребром (w, v). Следовательно, всякая вершина из В связана с вершиной и маршрутом длины 1, а всякая вершина из А — си маршрутом длины, не больше 2, т. е. всякая
260 Часть I. Математические основы вершина и связана с любой вершиной v маршрутом. Значит, G*— связный граф. Теорема доказана. Теорема 4.3.8. Пусть G = (V, Е) — связный граф и е е Е— некоторое его ребро. Тогда если е принадлеэюит некоторому циклу, то G-е связный. Если лее е не принадлеэюит ни одному циклу, то граф G-e имеет ровно два компонента связности. Доказательство. Пусть е = (w, v) принадлежит некоторому циклу С графа G. Выполним замену в каждой цепи, которая соединяет вершины х и у и включает ребро е, подцепь (и, е9 v) (и, у)-цепью С - е. Получим маршрут из вершины х в вершину у, не имеющий ребра е. То есть в графе G всякие две вершины, не совпадающие между собой, соединены маршрутом. А это означает, что граф G-e — связный. Пусть теперь е = (и, v) не входит ни в какой цикл графа G. Тогда очевидно, что вершины и и v принадлежат разным компонентам связности, например: Gu и соответственно Gv графа G - е. Для произвольной вершины х*и в G существует маршрут из х в и в силу связности G. Если е в этот маршрут не входит, то х е Gv, т. е. GuwGv — компоненты связности. Теорема доказана. Эти теоремы дают некоторую характеристику операций удаления ребра по отношению к свойству связности. Ясно, что обратная операция — операция добавления ребра — не нарушает этого свойства. 4.3.5. Метрические характеристики связных графов Пусть G = (V, Е) — связный граф, а и и v — две разные его вершины. Расстоянием между вершинами и и v называется длина кратчайшего маршрута, соединяющего вершины и и v, и обозначается d(u, v). Положим также, что d(u, и) = 0. Очевидно, что для введенного таким образом расстояния имеют место такие аксиомы: □ d(u, v) > 0; □ d(u, v) = 0 тогда и только тогда, когда и = v; □ d(u, v) = d(v, u)\ О d(u, v) + d(v, w) > d(u, w) (неравенство треугольника). Понятие расстояния между вершинами дает возможность определить понятие степени графа. Пусть G— связный граф, к— натуральное число.
Глава 4. Элементы теории графов 261 Граф Gk — &-тая степень графа G, имеет то же множество вершин, что и G, а разные его вершины и и v смежные в графе Gk тогда и только тогда, когда d(u, v) < к. Непосредственно из определения выплывает такое свойство графа G*. Утверждение 4.3.5. Если к> \V\-1, где V— множество вершин графа G, то G — полный граф. Пусть и— некоторая фиксированная вершина графа G = (V, £). Величина е(и) = max d(u, v), v e V называется эксцентриситетом вершины и. Максимальный среди всех эксцентриситетов вершин графа G называется диаметром графа G и обозначается d(G). Следовательно, d(G) = max e(u), и е V. Вершина v графа G называется периферийной, если e{v) = d(G). Простая цепь длины d(G), расстояние между начальной и конечной вершинами которой равно d(G), называется диаметральной цепью. Пример 4.3.2 В графе G, представленном на рис. 4.3.4, имеем (1, 2) = 1, d(U 3) = 2 = d(U 5), е(\) = 2, е(2) = 1, d(G) = 2. Все вершины, кроме вершины 2, периферийные, а (1, 2, 3) — диаметральная цепь. Г "3 Рис. 4.3.4. Граф G< 4.3.6. Свойства эйлеровых графов Одной из важных разновидностей связных графов являются так называемые эйлеровы и гамильтоновы графы. Связный граф G называется эйлеровым, если существует замкнутая цепь, включающая каждое его ребро. Такая цепь называется эйлеровой цепью. Связный граф G называется полуэйлеровым, если в нем существует цепь, которая включает каждое его ребро. Таким образом, всякий эйлеров граф будет полуэйлеровым. Пример 4.3.3 На рис. 4.3.5 приведены графы: неэйлеров (а\ эйлеров (б) и полуэйлеров (в).
262 Часть I. Математические основы Понятие эйлерового графа возникло в связи с известной головоломкой о ке- нигсбергских мостах, в которой необходимо было определить, имеет ли граф, изображенный на рис. 4.3.6, эйлерову цепь или нет. в в Рис. 4.3.6. Кенигсберские мосты Возникает естественный вопрос: как установить, что заданный граф является эйлеровым? Ответ на этот вопрос дают такие утверждения. Теорема 4.3.9. Если степень каэюдой вершины конечного графа не меньше двух, то граф имеет цикл. Доказательство. Пусть v— произвольная вершина графа G. Пользуясь методом построения по индукции, построим маршрут v, vb ..., vb ... так, что v,+1 смежная с v, и отличная от v,_ \. Существование такой вершины вытекает из условий теоремы. Поскольку граф G конечный, то на некотором шаге построения нашего маршрута придем к вершине, выбранной раньше. Пусть vk — первая из таких вершин. Тогда часть маршрута, лежащая между первым и вторым появлением v* в этом маршруте, и есть искомый цикл. Теорема доказана. Отметим, что данная теорема справедлива для псевдографа (имеющего петли) и для мультиграфа (имеющего кратные ребра). Теорема 4.3.10. Связный граф G есть эйлеров тогда и только тогда, когда каждая вершина G имеет четную степень.
Глава 4. Элементы теории графов 263 Доказательство. Пусть G имеет эйлерову цепь Р, тогда при всяком прохождении цепи Р через любую из вершин графа G степень этой вершины увеличивается на 2. А поскольку каждое ребро встречается в Р только один раз, то каждая вершина должна иметь четную степень. Доказательство в противоположном направлении проводится индукцией по числу ребер в графе G. Следствие 4.3.3. Связный граф эйлеров тогда и только тогда, когда множество его ребер можно разбить на непересекающиеся циклы. Следствие 4.3.4. Связный граф полуэйлеров тогда и только тогда, когда он имеет не больше двух вершин нечетной степени. Отметим, что теорема справедлива для псевдографов (которые имеют 4 петли) и для мультиграфов (которые имеют кратные ребра). Следует также заметить, что когда полуэйлеров граф имеет ровно две вершины нечетной степени, то у всякой полуэйлеровой цепи обязательно одна из этих вершин начальная, а вторая концевая. Из леммы о рукопожатии выплывает, что граф не может иметь только одну вершину нечетной степени. Теорема Флери. Пусть G = (V, Е) — эйлеров граф. Тогда следующая процедура всегда возможна и ведет к эйлеровой цепи в графе G: выходя из произвольной вершины и Е V, идем по ребрам графа G произвольным образом согласно таким правилам: О стираем пройденные ребра и стираем изолированные вершины, которые при этом возникают; О на каждом этапе идем по мосту лишь тогда, когда нет других возможностей. Доказательство. Прежде всего, покажем, что указанная процедура может быть выполнена на каждом этапе. Пусть в процессе работы процедуры достигнута вершина v. Тогда если и Ф v, то оставшийся подграф Н— связный и имеет ровно две вершины нечетной степени, — это вершины и и v. По следствию 4.3.4 граф Н имеет полуэйлерову цепь Р из v в и. Поскольку удаление нечетного ребра цепи Р не нарушает связности графа Н, то отсюда вытекает, что предлагаемое в теореме построение, всегда возможно на каждом этапе. Если же и = v, то доказательство остается таким же до тех пор, пока еще есть ребра, инцидентные вершине и. Остается лишь показать, что данная процедура всегда приводит к определенной эйлеровой цепи. Но это очевидно, поскольку в G не может быть ребер, которые не были пройдены после использования последнего ребра, инцидентного вершине и (иначе удаление некоторого ребра, смежного с одним из оставшихся, ведет к несвязному графу, а это противоречит второму правилу теоремы).
264 Часть I. Математические основы 4.3.7. Свойства гамильтоновых графов Рассмотренная выше проблема существования замкнутой цепи, проходящей через каждое ребро заданного связного графа G, может быть аналогичным образом сформулирована и для вершин. То есть, существует ли замкнутая цепь в заданном связном графе G, которая проходит ровно один раз через каждую вершину графа G. Очевидно, что такая цепь должна быть циклом. Если такой цикл в графе G существует, то он называется гамильтоновым циклом, а граф G — гамильтоновым графом. Поиск критерия гамильтоновости графа— одна из основных нерешенных проблем теории графов. О гамильтоновых графах известно еще совсем мало. Один из наиболее известных результатов общего характера предлагается в такой теореме. Теорема Дирака. Если в графе G = (V, Е) с п>3 вершинами (ve*V) n(v) >nl 2, то граф G является гамильтоновым. Доказательство. Введем в граф G к новых вершин и соединим каждую из этих вершин с каждой вершиной графа G. Будем считать, что к— наименьшее число вершин, которые необходимо ввести в граф G, для тогочтобы полученный граф G' стал гамильтоновым. Предположим, что к>0 и v, p, w, ..., v— гамильтонов цикл, где v и w — вершины из G, а р— одна из новых вершин. Тогда v и w несмежные, поскольку в противоположном случае вершина р лишняя, а это противоречит минимальности к. Более того, вершина (например, и>'), смежная с вершиной w, не может следовать непосредственно за вершиной v', смежной с v, поскольку тогда мы могли бы заменить v, р, w, ..., v', w', ..., v на v, v', ..., w, w', ..., v, перевернув часть цикла, находящуюся между вершинами w и V. Отсюда вытекает, что число вершин графа G', не смежных с w, не меньше числа вершин, смежных с v, то есть, в крайнем случае, оно равно п 12 + к. С другой стороны, очевидно, что число вершин графа G', смежных с w, тоже не меньше п12 + к. Поскольку всякая вершина графа G' не может быть одновременно смежной и несмежной с w, то общее количество вершин графа G', равное п + к, не меньше п + 2к. Это может быть лишь тогда, когда к = 0. Полученное противоречие доказывает теорему. Если в графе G = (V, E) порядка п зафиксировать одну из вершин и обход графа всегда начинать с нее, то всякому гамильтоновому циклу будет соответствовать перестановка элементов множества V. Следовательно, найти гамильтонов цикл или убедиться в его отсутствии можно путем перебора (п- 1)! перестановок. Если граф G гамильтонов, то этот перебор в полном объеме необходимо будет выполнить лишь в случае большого невезения.
Глава 4. Элементы теории графов 265 то есть когда перестановка, соответствующая гамильтоновому циклу, встречается в этом процессе последней. Если же граф G— негамильтонов, то, действуя таким образом, необходимо перебрать все (я-1)! перестановок. Хотя на практике пользуются разными алгоритмами частичного перебора, но сложность этих алгоритмов остается высокой (пропорциональной (п - 1)!). 4.4. Матрицы и графы 4.4.1. Матрицы смежностей и достижимости Из главы 1 (см. разд. 1.1) мы знаем, что всякое бинарное отношение можно задать в виде матрицы, которая состоит из нулей и единиц и называется матрицей смеэюностей. Взаимно однозначное соответствие между бинарными отношениями и графами на некотором конечном множестве дает возможность утверждать, что всякий граф можно представить в виде матрицы смежностей. Действительно, если G = (V, Е)— конечный граф порядка я, то ему соответствует квадратная матрица A(G) размерности пхп, имеющая вид 1, если вершины v и и — смежные, — ''■ J О — в противном случае. В силу симметричности отношения смежности матрица смежностей графа должна быть симметричной, а число единиц в i-ой строке — равняться степени вершины и,. Задание графов с помощью матриц смежностей позволяет сформулировать простой критерий изоморфности графов. Теорема 4.4.1. Графы изоморфны тогда и только тогда, когда их матрицы смеэюностей можно получить одну из другой одинаковыми перестановками строк и столбцов. Доказательство. Перенумеруем вершины графов G = (V, E) и # = (Vi, E\) (|V| = |Vi| = п) целыми числами от 1 до п. Если A(G) = В(Н), то все доказано. В противном случае графы G и Н отличаются лишь нумерацией вершин. Значит, существует такая подстановка s на множестве вершин V, которая сохраняет смежность, то есть если (и, v) e E, то (s(u), s(v)) е Е\. Тогда имеем Ь,(/)л(/) = щ, ij = 1, 2, ..., п. Теорема доказана.
266 Часть I. Математические основы Теорема показывает, что представление графа матрицей смежностей выявляет важную информацию о природе графа. Помня о том, что когда A(R) — матрица смежностей отношения /?, то A(R)2 — матрица смежностей отноше- 2 1 1 ния R , A(R) — матрица смежностей отношения Лит. д., мы приходим к такому утверждению. Теорема 4.4.2. Если А — матрица смежностей графа G, имеющего порядок п, то элемент Ьц матрицы Ак является числом маршрутов длины к, соединяющих вершины ut и Uj в графе G. Доказательство выполняется индукцией по числу к. Для к = 1 утверждение очевидно, поскольку маршрут длины 1 есть ребро графа G. Пусть теорема справедлива для всех к < т. Покажем, что она справедлива и для к-т. Пусть biq— элемент матрицы Ат~\ а^— элемент матрицы А. Тогда в силу предположения индукции Ь^а^— это число маршрутов длины т, которые соединяют вершины щ и Uj и проходят через вершину uq. Значит, сумма SV*/ <4лл> q=\ является числом маршрутов длины т, соединяющих вершины щ и щ в графе. Теорема доказана. Следствие 4АЛ. В графе порядка п маршрут, соединяющий вершины и и v, существует тогда и только тогда, когда соответствующий этим вершинам элемент матрицы С = ]Г А не равен нулю. к=\ Доказательство. Если соответствующий элемент с = 0, то в силу теоремы 4.4.2 и утверждений 4.3.1 и 4.3.2 существует цепь, которая соединяет вершины и, Mi, ..., v, длины не больше, чем п. Если маршрут, соединяющий м и v, существует, то в силу утверждений 4.3.1 и 4.3.2, существует маршрут длины к < и, который объединяет эти вершины. По теореме 4.4.2 в матрице С соответствующий элемент с не равен нулю, что и требовалось доказать. Отметим, что в некоторых случаях при решении задач на графах нахождение матрицы С и степеней матрицы А можно значительно упростить, если при вычислении суммы (4.1) использовать булевы связки v, &, то есть вычислять п V)aiqaqj • ^ результате элементы матриц упрощаются и вычисления выпол- 4=1
Глава 4. Элементы теории графов 267 няются более эффективно. Полученную таким образом матрицу С будем называть матрицей достижимости графа. Следствие 4.4.2. Граф связный тогда и только тогда, когда каждый элемент матрицы достижимости графа равняется единице. Аналогично определяется матрица смежностей орграфа G = (V, £): 1, если (и., и.) е Е, О — в противном случае. Матрицы смежностей неориентированного графа и орграфа отличаются друг от друга тем, что первая всегда симметрична, а вторая не обязательно симметрична. Очевидно, что всякая квадратная матрица, элементы которой 0 и 1, будет матрицей смежности некоторого ориентированного графа. Пример 4.4.1 Пусть имеем матрицу 10 1 1 1 I 10 11 0 0 10 I о о о о I Рис. 4.4.1. Орграф Этой матрице соответствует орграф на рис. 4.4.1. * Из теоремы 4.4.1 об изоморфизме графов выплывает, что ранги матриц смежностей изоморфных графов равны между собой. Это дает возможность ввести такое определение. Рангом графа G называется ранг его матрицы смежностей, который будем обозначать rank(G).
268 Часть I. Математические основы 4.4.2. Матрица Кирхгофа Пусть G = (V, Е) порядка п и V= {1, 2, ..., п). Определим матрицу B(G) для графа G таким образом: Ъ; = -1,есди(|,у) е £; О, если \Ф ] v\(ij) £ £; n(i), если / = у. Матрица B(G) называется матрицей Кирхгофа графа G. Сумма элементов каждой строки и каждого столбца этой матрицы равна нулю. Отметим, что теорема об изоморфизме графов остается справедливой, если рассматривать не матрицы смежностей, а матрицы Кирхгофа. Доказательство тоже полностью сохраняется. Теорема 4.4.3. Пусть В — произвольная числовая квадратная матрица размерности п, в каждой строке и каждом столбце которой сумма элементов равняется нулю, то есть £*(,-= 0 (/ = l,2,...,n)£fy=0 (; = l,2,...,n ). Тогда алгебраические дополнения всех элементов матрицы В равны между собой. В частности, этим свойством обладает матрица Кирхгофа произвольного графа. Доказательство. Очевидно, что гапк(В)<и. Если rank(fi) < я - 1, то алгебраические дополнения всех элементов этой матрицы равны нулю. Пусть rank(B) = n-l и С— матрица, элементами которой являются ciJ9 представляющие собой алгебраические дополнения элемента by в матрице В, i = 1, 2, ..., я, j = 1, ..., п. Известно, что ВС = \В\Е, где \В\ — определитель матрицы В, а Е— единичная матрица. Значит, ВС = 0, поскольку \В\ = 0 (rank(B) = п - 1). Следовательно, для столбца матрицы С с номером; (/ = 1, 2, ..., п) справедливы равенства Ьцс^ + ЬаСу + ... + bincnj = 0, i = 1, 2, ..., п. Их можно рассматривать как систему линейных однородных уравнений с матрицей В относительно неизвестных by, b2p ..., bnj. Поскольку rank(B) = п- 1, то все решения этой системы пропорциональны. Кроме того, вектор (1, 1, ..., 1) отвечает данной системе и потому b\j = b2j = ... = bnj, j = 1, 2, ..., п. Учитывая то, что и С • В = 0, аналогично получаем b\j = b2j■= ... = bnj, 7=1,2, .., п. Значит, Ьц = &*/, ij,kj = 1,2, ..., л. Теорема доказана.
Глава 4. Элементы теории графов 269 4.4.3. Матрица инцидентности графа Пусть G = (V, Е)— граф, где V={1, 2, ..., /г}, £={еь ..., ет}. Определим матрицу /(G) такими условиями: [l, если вершина к и ребро ev инцидентны; iu= \ [О — в противном случае. Матрица /(G) называется матрицей инцидентности графа G. Для ориентированных графов определение матрицы инцидентности /(G) немного изменяется: [1, если вершина к — начало дуги е{\ ikl = -1-1, если вершина/: — конец дуги е{\ I О, если вершина к и дуга е{ не инцидентны. Для матриц инцидентности справедливо утверждение, аналогичное теореме 4.4.1. Теорема 4.4.4. Графы (орграфы) изоморфны тогда и только тогда, когда их матрицы инцидентности молено получить одну из другой произвольными перестановками строк и столбцов. Пусть G — граф. Граф G можно преобразовать в орграф, если каждому ребру придать одну из двух возможных ориентации. Полученный орграф называется ориентацией графа G. Непосредственной проверкой устанавливается справедливость такого утверждения. Теорема 4.4.5. Если В — матрица Кирхгофа графа G, а I— матрица инцидентности некоторой его ориентации Н (вершины в Н перенумерованы так же, как ив G), то В = / • /', где I' — матрица, полученная транспонированием матрицы I. 4.5. Планарность и укладка графов Рассмотрим вопрос о том, всякий ли граф можно изобразить на плоскости. 4.5.1. Плоские и пленарные графы Плоским графом называется граф, вершины которого являются точками плоскости, а ребра— непрерывными плоскими линиями без самопересечений, которые соединяют соответствующие вершины так, что никакие два ребра не имеют общих точек, кроме инцидентной им обоим вершины.
270 Часть I. Математические основы Примерами плоских графов могут служить графы, изображенные на рис. 4.5.1. ДЕЛ а б в г Рис. 4.5.1. Плоские графы Граф называется планарным, если он изоморфен некоторому плоскому графу. Граф Кп, изображенный на рис. 4.5.2, планарный, поскольку он изоморфен графам а и б, изображенным на рис. 4.5.1. и Рис. 4.5.2. Планарный граф О планарных графах говорят, что они имеют плоскую укладку, или что они укладываются на плоскости. Можно определить укладку графов не только на плоскости, но и на других поверхностях и в пространстве. Для этого необходимо ввести понятие жордановой кривой. Жордановой кривой на плоскости называется непрерывная кривая линия без самопересечений. Замкнутой жордановой кривой называется жорданова кривая, начало и конец которой совпадают. Аналогично можно определить жорданову кривую в трехмерном пространстве или на таких поверхностях, как сфера, тор и пр. Знаменитая теорема Жордана формулируется так. Теорема Жордана. Если S — замкнутая жорданова кривая на плоскости, а х и у — две разные точки этой кривой, то всякая жорданова кривая, соединяющая точки х и у, либо полностью лелсит внутри S, кроме точек х и у, либо вне кривой S, кроме точек х и у, либо пересекает кривую S в некоторой точке, отличной от точек х и у (рис. 4.5.3).
Глава 4. Элементы теории графов 271 Рис. 4.5.3. Жорданова кривая Будем говорить, что граф G укладывается в пространстве L, если существует взаимно однозначное отображение вершин и ребер графа G соответственно в точки и жордановые кривые этого пространства такое, что кривые, соответствующие разным ребрам, пересекаются в инцидентных этим ребрам вершинах. Изображенный таким образом граф G в пространстве L называется укладкой графа G. Теорема 4.5.1. Всякий граф укладывается в трехмерном пространстве. Доказательство. Разместим все вершины графа G = (V, Е) на оси ОХ. Из пучка плоскостей, проходящих через эту ось, выберем |£] разных плоскостей. Далее каждое ребро (w, v) e E изобразим в соответствующей плоскости полуокружностью, проходящей через вершины и и v. Ясно, что в результате получим укладывание графа G в трехмерное пространство, поскольку все ребра лежат в разных плоскостях и потому не пересекаются ни в каких точках, кроме вершин. Теорема доказана. Теорема 4.5.2. Граф укладывается на сфере тогда и только тогда, когда он планарный. Доказательство. Рассмотрим стереографическую проекцию. Для этого проведем плоскость (2, касающуюся сферы так, чтобы точка /V, диаметрально противоположная точке касания (северный полюс N), не совпадала с вершиной графа и не лежала на его ребре. Пусть граф G уложен на сфере. Рассмотрим граф G', полученный в результате стереографической проекции графа G с точки N на плоскость Q. Поскольку соответствие между точками сферы, отличными от /V, и их стереографическими проекциями взаимно однозначное, то граф G плоский и изоморфный графу G'. Следовательно, граф G планарный. Обратное утверждение доказывается аналогично с учетом взаимно однозначного соответствия, которое было установлено. Теорема доказана.
272 Часть I. Математические основы Следует отметить, что определение плоского и планарного графов, так же как и теорем 4.5.1 и 4.5.2 и многие другие утверждения сохраняются для мультиграфов и псевдографов. Прежде чем перейти к поиску критерия планарности графа, рассмотрим хорошо известную задачу-головоломку о трех домах и трех колодцах. Есть три дома: 1, 2, 3 и три колодца: 4, 5, 6 (рис. 4.5.4). Каждый житель может пользоваться любым из трех колодцев. Однажды жители домов решили проложить дорожки к колодцам так, чтобы исключить возможность встреч, то есть чтобы дорожки не пересекались. Возникает вопрос: можно ли проложить дорожки так, как этого требует задача? Все попытки проложить девять дорожек так, чтобы они не пересекались и соединяли дома с колодцами, заканчиваются неудачно. Оказывается, это совсем не случайно. Приведенная задача дает повод думать, что существуют не только планарные графы. И это утверждается в такой теореме. 4 5 Рис. 4.5.4. Задача о трех домах и трех колодцах Теорема 4.5.3. Графы Ks и А*з,з не являются планарными. Доказательство. Предположим противное, что граф К$ планарный. Поскольку он имеет цикл длины 5, например v, w, x, у, z, то без ограничения общности можно считать, что при всякой укладке этого графа на плоскости этот цикл изображается правильным пятиугольником (рис. 4.5.5). х У Рис. 4.5.5. Граф /С5
Глава 4. Элементы теории графов 273 По теореме Жордана ребро (z, w) должно лежать либо целиком внутри этого пятиугольника, либо целиком вне него. Третью возможность (когда ребро имеет общую точку с пятиугольником) мы не рассматриваем, поскольку имеем дело с укладкой на плоскости. Рассмотрим сначала случай, когда (z, w) лежит внутри пятиугольника. Поскольку ребра (v, x) и (v, у) не должны пересекать ребро (z, w), то оба эти ребра лежат вне пятиугольника: эта ситуация изображена на рис. 4.5.6. о У * Рис. 4.5.6. Изображение укладки графа пятиугольником Ребро (х, z) не может пересекать ребро (v, у), и потому оно должно лежать внутри пятиугольника. Аналогично и ребро (w, у) тоже должно лежать внутри пятиугольника. Но в этом случае ребра (w, у) и (х, z) обязательно пересекутся, и мы получаем противоречие с нашим предположением. Другой случай доказывается вполне аналогично рассмотренному и предлагается как упражнение. Рассмотрим теперь граф /Сз.з- Предположим, что он планарный. Тогда существует цикл длины 6, например w, v, w, x, у, z, который можно изобразить в виде шестиугольника (рис. 4.5.7). Выполняя доказательство так, как это делалось выше для К5, приходим к ситуации, когда два ребра из ребер (м, х), (v, у), (w, z) должны лежать либо внутри шестиугольника, либо вне него, а потому они не могут не пересекаться. Полученное противоречие полностью доказывает теорему. U V АА г(- ■¥■ Aw W У ^ Рис. 4.5.7. Граф К33 Непосредственно из определения планарности графа выплывают такие очевидные утверждения.
274 Часть I. Математические основы Утверждение 4.5.1. Всякий подграф планарного графа тоже планарный. Утверждение 4.5.2. Если граф включает непланарный подграф, то и сам граф непланарный. Из последнего утверждения вытекает, что всякий граф, содержащий К5 и А*3,з как подграфы, не будет планарным. Оказывается, что графы К5 или #3,з — единственные непланарные графы в том смысле, что всякий непланарный граф включает один из них как подграф. Для формулировки этого результата необходимо ввести понятие гомеоморфности графов. Два графа называются гомеоморфными или тождественными с точностью до вершин степени 2, если они могут быть получены с одного и того же графа с помощью операции введения вершины в ребро степени 2. Например, графы, изображенные на рис. 4.5.8, гомеоморфны. Рис. 4.5.8. Гомеоморфные графы Нетрудно убедиться, что гомеоморфизм графов является отношением эквивалентности. Теорема Понтрягина-Куратовского. Граф планарный тогда и только тогда, когда он не имеет подграфов, гомеоморфных К$ или K$j. Доказательство этой теоремы не приводится, поскольку является достаточно сложным и требует рассмотрения некоторых понятий, которые выходят за рамки данного учебника. Для компенсации этого, исходя из теоремы Понтрягина- Куратовского, рассмотрим другой критерий планарности графов. Теорема 4.5.4. Граф планарный тогда и только тогда, когда он не имеет подграфов, которые стягиваются к графам К5 и Кзз- Доказательство. Предположим, что граф G не планарный. Тогда по теореме Понтрягина-Куратовского он имеет подграф //, гомеоморфный К5 или А"3,з- Стягивая те ребра из Н, которые инцидентны вершинам степени 2, мы видим, что Я стягивается до К5 либо до Аз.з-
Глава 4. Элементы теории графов 275 Пусть теперь граф G содержит подграф Н, который стягивается до А*3,з и вершина v графа А*3,з получена с помощью операции стягивания подграфа Hv графа Я (рис. 4.5.9). Рис. 4.5.9. Стягивание подграфа Hv до графа Н В графе /Сз,з вершина v инцидентна трем ребрам: еи е2 и е3; как ребра из Н они инцидентны трем (не обязательно разным) вершинам: vb v2, v3 подграфа Hv. Если vi, v2, v3 разные, то можно найти вершину w в Hv и три простые цепи, ведущие из w в эти вершины и пересекающиеся только в вершине w. Можно выполнить аналогичные построения и в том случае, когда не все вершины разные; при этом простые цепи преобразуются в отдельные вершины. Следовательно, подграф Hv можно заменить вершиной w с тремя простыми цепями, выходящими из этой вершины. Если такие построения выполнить для каждой вершины графа Кз,з> а полученные простые цепи дополнить соответствующими ребрами из К^з, то ясно, что полученный подграф будет гомео- морфным графу /Гз,з. В силу теоремы Понтрягина-Куратовского граф G непланарный (рис. 4.5.10). Аналогично доказывается и тот случай, когда G содержит подграф, который стягивается до графа К5. Теорема доказана.
276 Часть I. Математические основы 4.5.2. Грани плоского графа. Формула Эйлера В этом пункте установим формулу Эйлера, которая связывает число вершин, ребер и граней связного плоского графа. Определим сначала понятие грани плоского графа G. Точка х плоскости 5, на которой размещен граф G, называется дизъюнктной с G, если точка х не соответствует никакой вершине графа G и не лежит ни на одном ребре этого графа. Две точки х и у плоскости 5 называются эквивалентными, если они дизъюнктны с G и их можно соединить такой жордано- вой кривой, все точки которой дизъюнктны с G (рис. 4.5.11). Введенное отношение эквивалентности точек плоскости разбивает множество всех точек плоскости 5 на классы эквивалентности, которые и называются гранями графа G. Например, граф G, изображенный на рис. 4.5.12, имеет четыре грани: /ь А /з, /д, причем грань/4 — бесконечная. ш Рис. 4.5.11. Дизъюнктные с G точки Рис. 4.5.12. Граф с бесконечной гранью Теорема Эйлера. Пусть G — связный плоский граф, в котором w, m и /— число вершин, ребер и граней соответственно. Тогда справедливо равенство n+f=m + 2. Доказательство выполняется индукцией по числу ребер в графе G. Если т = 0, то и = 1 (поскольку G связный) и /= 1 (бесконечная грань), то есть в этом случае теорема справедлива. Пусть теорема верна для произвольного графа G, имеющего т - 1 ребро. Добавим к G — новое ребро е (отметим, что это не есть операция введения ребра в граф). Тогда возможны такие случаи: □ ребро е является петлей, и в этом случае число граней увеличивается на одну, а число вершин остается неизменным; □ ребро е соединяет две разные вершины в G, и в этом случае одна из граней графа G распадается на две, число граней увеличивается на единицу, а число вершин остается неизменным; □ ребро е инцидентно лишь одной из вершин графа G, и в этом случае число его вершин увеличивается на единицу, а число граней остается неизменным.
Глава 4. Элементы теории графов 277 В каждом из этих случаев теорема остается справедливой, а поскольку приведенными случаями исчерпываются все возможности, то этим теорема доказана полностью. Теорему Эйлера легко перенести и на несвязные графы. Следствие 4.5.1. Пусть G— плоский граф с п вершинами, т ребрами, / гранями и к компонентами связности; тогда п +/= т + к + 1. Доказательство. Результат получается применением теоремы Эйлера отдельно к каждому из компонентов. При этом бесконечная грань учитывается лишь один раз. Следствие 4.5.2. Если G— связный планарный граф с т ребрами и п>Ъ вершинами, то т < Ъп - 6. Доказательство. Поскольку каждая грань графа ограничена не меньше чем тремя ребрами, то при подсчете числа ребер вокруг каждой из граней, получим 3/< 2т. Сомножитель 2 появляется потому, что каждое ребро ограничивает не более двух граней. Следовательно, имеем Ъ(т + 2) = Ът + 6 = = Ъ(п +j) < Ъп + 2т, т. е. т < Ъп - 6. Следствие 4.5.3. Графы А*3,з и К5 не являются планарными. Доказательство. Если бы К5 был планарным, то по следствию 4.5.2 имели бы 10 < 9, а это очевидное противоречие. Для непланарности графа К^з достаточно заметить, что каждая его грань ограничена как минимум четырьмя ребрами и, значит, 4/<2т, или 2/<9. Но этого не может быть, поскольку из теоремы Эйлера вытекает, что/= 5. Следствие 4.5.4. В любом планарном графе существует вершина, степень которой не больше пяти. Доказательство. Без ограничения общности можно считать, что граф плоский, связный и имеет хотя бы три вершины. Если степень каждой из его вершин не меньше шести, то имеем 6п < 2ш, или Ъп < т. В силу следствия 4.5.2 3/1 < 3/1 - 6 — очевидное противоречие. 4.6. Раскраска графов. Хроматическое число Задачи раскраски вершин или ребер графа занимают важное место в теории графов. К задаче построения раскраски графа сводится целый ряд практических задач.
278 Часть I. Математические основы 4.6.1. Правильная раскраска Пусть G = (V, Е)— конечный граф, а к— некоторое натуральное число. Произвольная функция вида/: V—> Nk, где Nk = {1, 2, ..., к}, называется вершинной к-раскраской, или просто к-раскраской графа G. Раскраска называется правильной, если (V (и, v) E Е) (flu) Ф fly)). Граф, для которого существует правильная fc-раскраска, называется раскрашенным графом. При определении раскраски графа множество Nk можно заменить произвольным fc-элементным множеством. Правильную раскраску графа можно трактовать как раскраску каждой его вершины в один из к цветов таким образом, чтобы смежные вершины были раскрашены в разные цвета. Поскольку функция/не обязательно взаимно однозначна, то при fc-раскраске фактически может быть использовано меньше чем к цветов. Следовательно, правильную ^-раскраску можно рассматривать как разбиение множества вершин V графа G на классы V\ u V2 и ... и Vi = V, где 1<к, V,-*0, i = 1, 2, ..., /. Каждый класс К— независимое множество, а сами классы называются цветными классами. Минимальное число к, при котором существует правильная /:-раскраска графа G, называется хроматическим числом этого графа и обозначается XP(G). Если XP(G) = к, то граф G называется к-хроматическим. Правильная ^-раскраска графа G при к = Xp(G) называется минимальной. Пример 4.6.1 Рассмотрим граф G, изображенный на рис. 4.6.1, где показана одна из правильных ^-раскрасок. Натуральными числами 1, 2, 3, 4 обозначены краски соответствующих вершин. ^ Рис. 4.6.1 «
Глава 4. Элементы теории графов 279 4.6.2. Практические задачи, сводящиеся к задаче раскраски Задача составления расписания занятий. Пусть необходимо прочитать несколько лекций за наименьший промежуток времени. Чтение лекций занимает один час, но некоторые лекции не могут читаться одновременно (например, когда их читает один и тот же лектор). Построим граф G = (V, £), где V— множество, соответствующее множеству лекций, причем две вершины смежные тогда и только тогда, когда соответствующие лекции не могут читаться одновременно. Очевидно, всякая правильная раскраска этого графа определяет допустимое расписание: лекции, соответствующие вершинам графа, которые составляют один цветной класс, читаются одновременно. Наоборот, всякое допустимое расписание определяет правильную раскраску графа G. Оптимальное расписание соответствует минимальным раскраскам, а число часов, необходимое, для того чтобы прочитать все лекции, равно XP(G). Задача распределения оборудования. Дано множества V={vi, ..., v,,} и S= {s\, ^2, ..., sm] — виды работ и механизмов соответственно. Для выполнения каждой из работ необходимо определенное время, одинаковое для всех работ, и некоторые механизмы. При этом ни один механизм не может использоваться одновременно в нескольких работах. Необходимо распределить механизмы так, чтобы общее время выполнения всех работ было минимальным. Построим граф G = (V, £), где V= {vb ..., vm}, a (v„ vj) E Eтогда и только тогда, когда для выполнения работ v, и у,- нужен хотя бы один общий механизм. При правильной раскраске графа G работы, соответствующие вершинам одного цвета, можно выполнять одновременно, а наименьшее время выполнения всех работ достигается при минимальной раскраске. Задача проектирования коробки скоростей [29]. Коробка скоростей — это механизм для изменения частоты оборотов вала, который регулирует скорость движения автомобиля. Это изменение выполняется за счет того, что шестерни, находящиеся внутри коробки, сцепляются специальным образом. Одна из задач, стоящих перед конструктором коробки, состоит в минимизации ее размеров, а это часто сводится к минимизации числа валов, на которых размещены шестерни. Построим граф G = (V, £), где V— множество шестерен и (w, v) e E, если шестерни и и v не могут быть размещены на одном валу (например, они должны сцепляться, или они слишком тяжелы для одного вала). Вершины, входящие в один цветной класс, при правильной раскраске этого графа соответствуют шестерням, которые могут размещаться на одном валу, а хроматическое число ХР(С) равно минимальному количеству валов, необходимых для проектируемой коробки. ЮЗак. 3427
280 Часть I. Математические основы 4.6.3. Хроматические числа некоторых графов Для некоторых простых графов нетрудно найти хроматические числа. Например, Хр(Кп) = и, Хр(Кп - е) = п - 1, Хр(Кт,п) = 2, Хр{Съд = 2, Хр(Сгп +1) = 3. Очевидно, что граф является 1-хроматическим тогда и только тогда, когда он пустой, а 2-хроматическим — когда он двудольный и непустой граф. 2-Хроматические графы, как правило, называют дихроматическими. Поэтому теорему Кенига о двудольных графах можно сформулировать так. Теорема 4.6.1. Непустой граф является дихроматическим тогда и только тогда, когда он не имеет циклов нечетной длины. При каких условиях граф является 3-хроматическим, неизвестно, хотя легко найти примеры таких графов. К ним относится граф Петерсена, циклические графы с нечетным числом вершин, а также колеса с нечетным числом вершин. Вообще о хроматическом числе графа мало что можно сказать. Очевидно, что когда граф имеет п вершин, то его хроматическое число не превышает и, а когда граф имеет подграф Кт, то его хроматическое число не меньше т. Значительно больше информации о хроматическом числе графа можно получить, если известны степени каждой его вершины. Пусть г означает максимальную степень вершины графа G = (V, Е). Теорема 4.6.2. Для всякого графа G имеет место неравенство XP(G) < г + 7. Доказательство выполняется индукцией по числу п вершин графа G. Если п < г + 1, то теорема справедлива. Пусть теорема справедлива для всех п < к. Покажем ее справедливость при п = к. Если из графа G извлечь произвольную вершину v, то в новом графе, как и раньше, будет п - 1 вершин и степень любой вершины этого графа не больше г. По предположению индукции этот граф раскрашивается г + 1 цветами. Но отсюда легко найти раскраску для графа G, если покрасить вершину v цветом, отличным от цветов вершин, смежных с вершиной v. Поскольку этих вершин не больше г, то G раскрашивается г + 1 краской. Теорема доказана. Следствие 4.6.1. Всякий кубический граф раскрашивается с помощью четырех красок. Более общий результат, чем теорема 4.6.2, дает такая теорема. Теорема Брукса. Если G — связный неполный граф и г>3, то XP{G) < г. Доказательство этой теоремы опускается (его можно найти, например, в [16,48]).
Глава 4. Элементы теории графов 281 Хотя обе теоремы и дают определенную информацию о хроматическом числе графа, но их оценки довольно неточны. Действительно, звездный граф К\,п, который согласно теореме Брукса раскрашивается п красками, на самом деле является бихроматичным. Эта ситуация сильно упрощается, если ограничиться планарными графами. В этом случае легко доказать такой достаточно общий и сильный факт. Теорема 4.6.3. Для всякого планарного графа G имеет место неравенство XP(G)<6. Доказательство выполняется индукцией по числу вершин графа G и почти дословно повторяет доказательство теоремы 4.6.2. Более детальный анализ путей снижения верхней границы хроматического числа приводит к так называемой теореме о пяти красках. Теорема 4.6.4. Для всякого планарного графа G имеет место неравенство XP(G)<5. Доказательство ведется индукцией по числу п вершин графа G. Для планар- ных графов порядка меньше шести результат очевидный. Пусть G— планарный граф с п вершинами и для всех планарных графов сп-\ вершинами теорема справедлива. Можно считать, что G— плоский граф, и что он имеет в силу следствия 4.5.4 вершину v, степень которой не больше 5. Как и раньше, извлечение вершины v из графа G приводит к графу с п - 1 вершинами, который в силу индуктивного предположения можно раскрасить пятью красками. Следовательно, наша задача свелась к тому, чтобы раскрасить v одной из пяти красок и на этом закончить доказательство. Если n(v) < 5, то v можно покрасить любой краской, которая не принимает участия в покраске смежных вершин. Рассмотрим случай n(v) = 5. Пусть смежные вершины vi, v2, ..., v5 размещены вокруг v по часовой стрелке, как это показано на рис. 4.6.2. Рис. 4.6.2
282 Часть I. Математические основы Если произвольным двум вершинам v, и v, приписан один и тот же цвет, то этим все доказано, поскольку v можно покрасить в цвет, не использованный ни для какой из вершин v,-. В результате мы приходим к последнему случаю, когда всем вершинам v, предписаны разные цвета. Пусть v, покрашена в цвет с,- (1 < i < 5). Пусть граф Щ является подграфом графа G, вершинами которого являются все вершины цвета с,, а ребрами — все ребра, соединяющие вершину цвета с, с вершиной цвета с,-. Теперь возможны лишь два случая. □ Вершины vi и v3 не принадлежат одному и тому же компоненту #i3 (см. рис. 4.6.3). В этом случае можно менять цвет всех вершин компонента 7/i3, который не содержит вершину vi (цвет с\ меняется на с3 и наоборот). В результате вершина vx получает цвет с3, а это позволяет вершину v покрасить цветом С\ и закончить доказательство теоремы для данного случая. vj и v3 принадлежат одному компоненту графа #i3. В этом случае существует цикл С вида v, vb v2, ..., v3, v. Часть его, ограниченная вершинами vx и v3, целиком лежит внутри #i3(cm. рис. 4.6.4). Поскольку v2 лежит внутри, a v4 вне цикла С, то не существует простой цепи из v2 в v4, целиком принадлежащей Нм- Следовательно, можно поменять цвета
Глава 4. Элементы теории графов 283 всех вершин компонента подграфа #24, которому принадлежит вершина v2. При этом вершина v2 принимает цвет v4, что дает возможность покрасить вершину v цветом с2. Теорема доказана. Логично поставить вопрос: можно ли получить более сильный результат, чем результат, приведенный в теореме 4.6.4? Этот вопрос приводит нас к одной из наиболее известных нерешенных проблем теории графов— гипотезе четырех красок. 4.6.4. Гипотеза четырех красок Гипотеза четырех красок формулируется так: всякий планарный граф раскрашивается с помощью четырех красок. Уже больше столетия математики пытаются решить данную проблему (доказать справедливость или ложность гипотезы), но до сих пор окончательное решение так и не найдено. Известно, например, что всякий планарный граф порядка < 52 раскрашивается с помощью четырех красок. Исторически гипотеза четырех красок связана с раскраской географических карт. Если у нас есть географическая карта нескольких стран мира, то интересно знать, сколько красок необходимо иметь для такой раскраски территории этих стран, чтобы никакие две соседние страны не были покрашены одним и тем же цветом. Возможно, наиболее привычная форма гипотезы четырех красок такова: всякую карту можно раскрасить четырьмя красками. Чтобы сделать это утверждение точным, необходимо дать точную формулировку понятия карта, поскольку в рассмотренной нами задаче о раскраске географических карт необходимо, чтобы страны, размещенные по обе стороны ребра, были раскрашены разными цветами и не имели мостов. Таким образом, карта — связный плоский граф, не имеющий мостов. Будем говорить, что карта раскрашивается к красками, если ее грани, имеющие общее ребро, можно раскрасить к красками так, чтобы никакие две смежные грани не были одного цвета. 4.6.5. Гипотеза четырех красок для карт Гипотеза четырех красок для карт формулируется так: всякая карта раскрашивается четырьмя красками. Справедливо такое утверждение, которое приводится без доказательства. Теорема 4.6.5. Гипотеза четырех красок для карт эквивалентна гипотезе четырех красок для планарных графов.
284 Часть I. Математические основы Как видно из описанных выше результатов, задачи определения хроматического числа графа и построения минимальной раскраски произвольного графа достаточно сложны, а эффективные алгоритмы их решения неизвестны. Рассмотрим простой алгоритм построения правильной раскраски, который в некоторых случаях дает раскраски, близкие к минимальным. | Раскраска {V, £) 1 Начало. 1. Произвольной вершине vi из V приписать цвет 1. 2. Если вершины vi, V2, ..., Vi раскрашены г цветами 1, 2, ..., г, где г < i, то новой произвольно выбранной вершине Vi + i приписать минимальный цвет, который не используется при раскраске вершин из множества Cm(vi + i) . Конец. В заключение этого параграфа заметим, что раскраска, которую строит данный алгоритм, называется последовательной. Очевидно, что эта раскраска правильная. Для полных ^-дольных графов последовательная раскраска является минимальной. В общем случае это не так. 4.7. Бесконечные графы Для полноты картины рассмотрим некоторые понятия теории бесконечных графов. Эти понятия, в основном, являются обобщениями понятий, рассмотренных выше для конечных графов. Бесконечным (неориентированным) графом называется пара G = (V, £), где V— бесконечное множество вершин и Е— бесконечное множество ребер. Если оба множества V и Е— счетные, то граф называется счетным. Следует указать, что эти определения исключают тот случай, когда V— конечное множество, а Е— бесконечное множество, и когда £— конечное множество, а V— бесконечное множество. В этих случаях граф G можно считать конечным графом, если он имеет, в первом случае конечное число вершин и бесконечное число кратных ребер (или петель), а в другом случае — конечное число ребер и бесконечное число изолированных вершин. Определения таких понятий, как смежные вершины, инцидентные ребра, изоморфные графы, подграф графа, связный граф, компонент связности полностью переносятся на бесконечные графы.
Глава 4. Элементы теории графов 285 Степенью вершины v бесконечного графа называется мощность множества ребер, инцидентных вершине v. Следовательно, степень вершины в бесконечном графе может быть как конечной, так и бесконечной. Бесконечный граф называется локально конечным, если степень каждой его вершины конечна. Примером локально конечного графа может быть квадратная решетка, составленная из целых чисел (см. рис. 4.7.1). Рис. 4.7.1. Локально конечный граф Аналогично можно определить локально счетный бесконечный граф: бесконечный граф называется локально счетным, если каждая вершина этого графа имеет счетную степень. Теорема 4.7.1. Всякий связный локально счетный бесконечный граф является счетным. Доказательство. Пусть v— произвольная вершина такого бесконечного графа, и пусть А — множество всех вершин, смежных с вершиной v (А = Ои(м)), В — множество всех вершин, смежных с вершинами из множества А и т. д. По условию теоремы множество А счетно, множество В счетно и т. д. В силу теоремы 1.1.10 объединение этих множеств является счетным множеством. Поскольку последовательность {v}, Л, В, ... в силу связности графа содержит каждую вершину бесконечного графа, то этим теорема доказана полностью. Следствие 4.7Л. Всякий связный локально конечный бесконечный граф является счетным. Доказательство следует из того, что объединение счетного множества конечных множеств есть счетное множество. На бесконечные графы также переносится и понятие маршрута, причем это понятие может иметь такие разновидности: □ конечный маршрут в бесконечном графе G определяется так, как и в случае конечных графов;
286 Часть I. Математические основы D бесконечным в одну сторону маршрутом в графе G, который начинается в вершине vo, называется бесконечная последовательность ребер вида (v0, vj), (vi, v2), (v2, v3), ...; □ бесконечным в обе стороны маршрутом в графе G называется бесконечная последовательность ребер вида ..., (v_2, v_ 0, (v_ь vo), (vo, vO, (vb v2), .... Бесконечные в одну и в обе стороны цепи, а также простые цепи определяются так, как и понятия длины цепи и расстояния между вершинами. Условия существования бесконечных цепей у графов дает теорема, известная в теории графов под названием леммы Кенига. Лемма Кенига. Пусть G — связный локально конечный бесконечный граф. Тогда для всякой его вершины v существует бесконечная в одну сторону простая цепь, начинающаяся в вершине v. Доказательство. Если и— произвольная вершина графа G, отличная от вершины v, то существует некоторая простая цепь, которая соединяет вершины v и и. Отсюда вытекает, что в G должно быть бесконечно много простых цепей с началом в вершине v. Поскольку степень вершины v конечна, то бесконечное множество таких простых путей должно начинаться с одного и того же ребра. Если таким ребром является ребро (и, vi), то, повторив эту процедуру для вершины vb получим новую вершину v2 и соответствующее ей ребро (vi, v2). Продолжая этот процесс дальше, получим бесконечную в одну сторону простую цепь v, vi, v2, ... . Лемма доказана. Важное значение леммы Кенига состоит в том, что она дает возможность получать результаты о бесконечных графах из соответствующих результатов о конечных графах. Рассмотрим в заключение данного раздела бесконечные эйлеровы и гамиль- тоновы графы. Связный счетный граф G называется эйлеровым, если в нем существует бесконечная в обе стороны цепь, содержащая каждое ребро графа G. Такая цепь называется (двусторонней) эйлеровой цепью. Счетный граф G называется полу эйлеровым, если в нем существует бесконечная в одну или в обе стороны цепь, содержащая каждое ребро графа G. Теорема 4.7.2. Пусть G — связный счетный эйлеров граф, тогда: П а) в G каждая вершина имеет бесконечную или четную степень; □ б) для всякого конечного подграфа Н графа G дополнение Н подграфа Н в графе G имеет не больше двух компонентов связности;
Глава 4. Элементы теории графов 287 П в) если Н— конечный подграф графа G и каждая вершина Н имеет четную степень, то дополнение Н подграфа Н имеет ровно один бесконечный компонент связности. Доказательство. Докажем а). Пусть Р — эйлерова цепь графа G. Тогда при любом прохождении по цепи Р через произвольную вершину графа G степень этой вершины увеличивается на два. Поскольку каждое ребро встречается в Р только один раз, то всякая вершина графа G имеет либо бесконечную (счетную) степень, либо эта степень четная. Докажем б). Пусть Р — эйлерова цепь графа G. Разобьем Р на три подцепи: Р., Л) и Р+ так, чтобы Ро являла собой конечную цепь, содержащую все ребра графа Н (и, возможно, еще некоторые ребра графа G, не принадлежащие графу //), а Р- и Р+ — две бесконечных в одну сторону цепи. Тогда бесконечный граф К, вершинами которого являются вершины Р+ и Р_, а ребрами — ребра этих цепей, имеет не больше двух компонентов связности. Поскольку Н можно получить из графа К добавлением лишь конечного числа ребер, то отсюда выплывает, что и Н тоже может иметь не больше двух компонентов связности. При доказательстве в) разобьем, как и в предыдущем случае, эйлерову цепь Р на три подцепи: Р_, Р0 и Р+. Пусть и— начальная, v— концевая вершина цепи Р0. Покажем, что и и v соединены маршрутом в Н. Если и = v, то все ясно, а если и Ф v, то, удалив ребро графа Я, получим, что вершины и и v имеют нечетные степени в Я. А отсюда по следствию 4.3.2 вытекает, что и и v связаны полуэйлеровой цепью. Следовательно, Н имеет ровно один компонент связности. Теорема доказана. 4.7.1. Контрольные вопросы □ Дайте определения: • эйлерового графа, эйлерового цикла; • гамильтонового графа, гамильтонового цикла; • хроматического числа; • сечения в графе, мосту. □ Какой граф называется: • бихроматическим; • ^-хроматическим?
288 Часть I. Математические основы □ Какие свойства имеют связные, эйлеровы и гамильтоновы графы? □ Какой граф называется планарным? □ Сформулируйте критерий планарности графа. □ Любой ли граф можно раскрасить 4, 5, 6 красками? 4.7.2. Задачи и упражнения 1. Пусть V— множество положительных целых чисел от 1 до 20 и a \ Ъ — отношение делимости, то есть а \ Ъ означает, что число а является делителем числа Ь. Нарисуйте граф отношения a \ Ъ для множества V. 2. Постройте матрицы смежности и инцидентности для Платоновых графов. 3. Какие из Платоновых графов имеют эйлеровы циклы; гамильтоновы циклы? 4. Найдите эйлерову цепь для графа, изображенного на рис. 4.3.1. 5. Найдите хроматические числа: • Платоновых графов; • объединения двух графов с хроматическими числами к и к' соответственно; • соединение двух графов с хроматическими числами к и к' соответственно. 6. Пусть G— регулярный граф порядка п и степени d. Покажите, что Xp(G)>n/(n-d). 7. Граф называется критическим, если удаление любой его вершины приводит к графу с меньшим хроматическим числом. Докажите, что • Кп является критическим для всех п > 1; • Сп критический тогда и только тогда, когда п нечетное; • если п нечетное, то соединение Сп и С„ есть критический граф, хроматическое число которого равно 6. 8. Покажите, что всякий ^-хроматический критический граф G = (V, Е) имеет такие свойства: • G — связный; • (Vvg V)n(v)>k-U • не существует вершины v из V, удаление которой ведет к несвязному графу.
Глава 4. Элементы теории графов 289 9. Проверьте теорему Эйлера для • Платоновых графов; • Wn\ • К2,п; • графа, представляющего собой шахматную доску. 4.8. Деревья Перейдем к рассмотрению одной из самых распространенных разновидностей графов — деревьев. 4.8.1. Определение дерева. Свойства деревьев Связный ациклический граф называется (неориентированным) деревом. Дерево называется корневым, если в нем выделена вершина, которая называется корнем. Остовным деревом графа G называется остовный подграф графа G, являющийся деревом. Непосредственно из определения дерева выплывает такая теорема. Теорема 4.8.1. Граф есть дерево тогда и только тогда, когда любые две его вершины связаны единственной цепью. Доказательство. Пусть граф является деревом. Если допустить существование более одной цепи, связывающей любые две его вершины, то в таком графе существует цикл, то есть граф не может быть деревом. Наоборот, поскольку любые две вершины графа соединены цепью, то граф связный, а в силу того, что эта цепь единственная, он не имеет циклов. Значит, граф является деревом. Теорема доказана. Следствие 4.8.1. Если Т— дерево и и — его концевая вершина, то граф Г- и — дерево. Действительно, граф Т-и— подграф дерева Г, для которого выполняются все условия теоремы 4.8.1. Следствие 4.8.2. Всякое непустое дерево имеет по крайней мере две концевые вершины и одно концевое ребро. Доказательство выполняется индукцией по числу вершин дерева с последующим применением леммы о рукопожатии. Ребро связного графа называется существенным, если его удаление ведет к нарушению связности этого графа.
290 Часть I. Математические основы Следствие 4.8.3. В дереве каждое ребро существенное. Доказательство вытекает из того, что удаление ребра (w, v) в дереве Т в силу единственности цепи, соединяющей вершины и и v, ведет к появлению двух компонентов связности: один содержит вершину и, другой — вершину v. Следовательно, граф Г не является связным. Теорема 4.8.2. Если T=(V, Е)— дерево и вершина v g V, mo граф Т' = (Vu fv}} Eu {(и, v)}), где и— произвольная вершина из V, тоже является деревом. Доказательство. Поскольку Т— дерево, то существует единственная цепь, соединяющая любую вершину и с вершиной и. Поскольку вершина v £ V, то добавление одного концевого ребра (w, v) приводит к тому, что из каждой вершины и имеем лишь единственную цепь, которая соединяет вершины и и v. В силу теоремы 4.8.1 граф Т является деревом. Вышеперечисленным свойствам деревьев подводит итог такая теорема. Теорема 4.8.3. Пусть граф Т имеет п вершин. Тогда эквивалентными являются такие утверждения: 1. Т является деревом. 2. Тне имеет циклов и имеет п- 1 ребро. 3. Т— связный граф и имеет п- 1 ребро. 4. Т— связный граф и каждое его ребро является мостом. 5. Любые две вершины графа Т соединены ровно одной простой цепью. 6. Т не имеет циклов, но добавление любого нового ребра в Т способствует возникновению ровно одного цикла. Доказательство. Случай, когда п = 1, очевидный. Пусть п > 2. 1 —» 2. Индукция по числу п. Для п = 2 утверждение очевидно. Поскольку Т не имеет циклов, то удаление любого ребра из Т (в силу следствия 4.8.3) ведет к разбиению Т на два подграфа, каждый из которых— дерево. В силу индуктивного предположения в каждом из этих подграфов ребер на единицу меньше, чем вершин. Следовательно, число всех ребер в Т равно ni-l+/t2-l + l=n-l. 2 —> 3. Если Т несвязный, то каждый его компонент связности Т, представляет собой связный граф без циклов. Из 2 выплывает, что каждый компонент связности Т, имеет и, - 1 ребро. Но тогда граф Т имеет не больше п - 2 ребра, что противоречит условию. Следовательно, граф Г связный и имеет п - 1 ребро. 3 —> 4. Удаление любого ребра из Т ведет к графу, имеющему п вершин ип-2 ребра. Но такой граф по следствию 4.8.3 не может быть связным.
Глава 4. Элементы теории графов 291 4 —» 5. Поскольку Т связный, то всякая пара его вершин соединена хотя бы одной простой цепью. Если же некоторая пара вершин соединяется двумя простыми цепями, то они составляют цикл, а это противоречит тому, что каждое ребро в Г является мостом. 5 —» 6. Если Т имеет цикл, то любые две вершины этого цикла соединены не менее чем двумя простыми цепями. Добавляя к графу Т некоторое ребро е, мы получаем цикл, поскольку вершины, инцидентные ребру е, уже соединены в Т простой цепью. Покажем, что этот цикл единственный. Действительно, пусть вершины и и v несмежные. По условию и и v соединены единственной простой цепью. Если добавить ребро (w, v) в Г, то простая цепь переходит в простой цикл. Если бы существовал при этом еще некоторый цикл, содержащий ребро (и, v), то это противоречило бы тому, что и и v соединены единственной простой цепью. Если и и v смежные, то теорема, очевидно, справедлива (появляются кратные ребра, а это цикл). 6—» 1. Пусть Т— несвязный граф, тогда добавление любого ребра, соединяющего вершины с разных компонентов связности, не приводит к появлению цикла. А это противоречит условию 6. Следовательно, граф Т не имеет циклов и связный, т. е. Т—дерево. Теорема доказана. Следствие 4.8.4. Пусть G— лес с п вершинами и к компонентами, тогда G имеет п - к ребер. Доказательство. Из условия 2 теоремы 4.8.3 вытекает, что каждый компонент G, имеет п, - 1 ребро. Но тогда число ребер в G равно (щ - 1) + (п2 - 1) + ... + (щ - 1) = п\ + п2 + ... + щ - к = п - к, что и следовало доказать. Часто возникает вопрос, сколько можно построить разных деревьев порядка п. Ответ на этот вопрос дает теорема Кэли. Теорема Кэли. Число разных деревьев, которые можно построить на п вершинах, равно пп~2. Доказательство. Пусть V= {vb v2, ..., vn} и Г= (V, Е)— дерево. По следствию 4.8.2 в Г должны быть концевые вершины. Пусть vi — первая из них и Оь vi) — соответствующее ей концевое ребро. Удалим из Г это ребро и вершину vi, пометим в множестве V вершину щ и занесем ее в список вершин L, который изначально пуст. В силу следствия 4.8.1 полученный граф снова является деревом. Применив к нему эту же самую процедуру, получим новое дерево и список L - [щ9 и2] и т. д. Эту процедуру применяем до тех пор, пока после удаления ребра (w„-2, v„_2) не останется единственное ребро (м„_ь v„_i).
292 Часть I. Математические основы Тогда список L = [щ, иг, ..., un-j\ однозначно определяется деревом Г, и двум разным деревьям Г и Т с п вершинами соответствуют разные списки. Каждая вершина и появляется в списке L п(и) - 1 раз. Наоборот, каждый список L определяет дерево Т с помощью обратного построения. Если задан список L, то находим первую помеченную вершину vi в множестве V, такую что vi G L. Эта вершина определяет ребро (wi, vi). Далее стираем пометку вершины щ в множестве V, удаляем щ из L и продолжаем построение для нового списка L, состоящего из п - 3 элементов. Полученный в результате такого построения граф является деревом в силу теоремы 4.8.2. Поскольку разных элементов в списке L может быть не больше п"~2, то этим и доказывается справедливость теоремы. Теорема Кэли имеет много разных интерпретаций. Остановимся на одной из них, известной под названием задачи о соединении городов: необходимо соединить п городов железными дорогами так, чтобы не строить лишних линий; сколькими способами можно построить такую систему дорог? Практическое значение этой задачи состоит в том, что: пусть известна стоимость с(а, Ь) строительства железной дороги между городами а и Ъ\ какая сеть дорог, соединяющих все п городов, имеет наименьшую возможную стоимость? Теорема Кэли дает решение этой задачи. Для этого каждому дереву Г, построенному на п вершинах, сопоставляется сумма С(Т)= £ с{а,Ь) (а,Ь)ЕЕ Выбрав среди этих сумм наименьшую, получим решение задачи. Для этого, как следует из теоремы Кэли, необходимо пересмотреть не больше п сумм. Как известно из предыдущего, удаление из связного графа G одного ребра, принадлежащего некоторому циклу, не нарушает связности графа G (см. теорему 4.3.8). Применим эту процедуру к одному из циклов, оставшихся в графе G, и так до тех пор, пока в G не останется ни одного цикла. В результате получим дерево, содержащее все вершины графа G. Это дерево называется остовным деревом графа G. Пусть G представляет собою граф с п вершинами, т ребрами и к компонентами. Применяя приведенную выше процедуру к каждому компоненту графа G, получим граф, который называется остовным лесом. Число ребер, которые при этом удаляются, называется цикломатическиМ числом или циклическим рангом графа G и обозначается C(G). Таким образом, цикломатическое число является мерой связности графа.
Глава 4. Элементы теории графов 293 Следует заметить, что циклический ранг дерева равен нулю, а циклический ранг циклического графа — единице. Пусть Т— остовный лес графа G. Граф G', полученный из графа G путем удаления всех ребер графа Г, называется дополнением остовного леса Г графа G. Теорема 4.8.4. Если Т— остовный лес графа G, то П а) всякое сечение в G имеет общее ребро с Т\ □ б) всякий цикл в G имеет общее ребро с дополнением Т. Доказательство. Докажем а). Пусть М— сечение графа G, удаление которого разбивает один из компонентов G на два подграфа: Н и F. Поскольку Т— остовный лес, то в нем должно существовать ребро, соединяющее вершину из Н с вершиной из F. Но это ребро является искомым ребром. Докажем (б). Если С— цикл в графе G, не имеющий ни одного общего ребра с дополнением Г, то С входит в остовный лес, а это невозможно, поскольку Т—лес. Теорема доказана. 4.8.2. Фундаментальная система циклов графа С понятием остовного леса Т графа G тесно связано понятие фундаментальной системы циклов, которая ассоциируется с Т. Пусть Т— остовный лес графа G. Если добавить произвольное ребро в граф G, которое не входит в Г, та в силу п. 6 теоремы 4.8.3 получим единственный цикл. Множество всех циклов, полученных таким образом (путем добавления отдельно каждого ребра в граф G, не входящего в 7), называется фундаментальной системой циклов, ассоциированной с Г. В том случае, когда нас не интересует, какой остовный лес рассматривается, будем говорить о фундаментальной системе циклов графа G. Пример 4.8.1 Система графов на рис. 4.8.1 демонстрирует введенное понятие. Теорема 4.8.5. Пусть G = (V, Е) — произвольный конечный граф. Число ребер графа G, которые необходимо удалить для получения остовного леса Т, не зависит от порядка га удаления и равно C(G) = |£| - |V| + К где к — число компонентов связности графа G. Доказательство. Пусть G/ = (V,-, £,), (i = 1, 2, ..., k)— один из компонентов связности графа G. Из теоремы 4.8.3 п. 2 следует, что для получения остовного дерева Т{ графа G, необходимо удалить |£/| - (|V,| - 1) ребро. Тогда общее количество ребер, которые необходимо удалить в графе G, равно (|£,| - (\Vi\ - 1)) + (|£2| - (ivy - 1)) + ... + (|£*| - (IVJd - 1)) = |£| - IV| + 1. Теорема доказана.
294 Часть I. Математические основы 1 2 2 3 3 2 Зв Рис. 4.8.1. а — граф G; б — остовное дерево графа G; в — фундаментальная система циклов, ассоциированная с остовным деревом графа G. < Следствие 4.8.5. Граф G представляет собой лес тогда и только тогда, когда C(G) = 0. Следствие 4.8.6. Граф G имеет единственный цикл тогда и только тогда, когда С«7)=1. Следствие 4.8.7. Граф G, у которого число ребер превышает число вершин, имеет цикл. Следствие 4.8.8. Всякое дерево порядка п>2 имеет по крайней мере две концевые вершины. Доказательство. Из леммы о рукопожатии и теоремы 4.8.3 п. 2 следует, что сумма всех степеней вершин дерева равна 2(п- 1), и каждая степень вершины больше нуля. Значит, хотя бы два числа из всех степеней вершин дерева равны единице. Теорема 4.8.6. Всякий ациклический подграф произвольного конечного графа G = (V, Е) является подграфом остовного дерева графа G. Доказательство. Пусть H = (V, £")— ациклический подграф графа G. Достаточно рассмотреть ситуацию, когда G связный. Предположим, что Н несвязный и Н' — один из его компонентов связности. Тогда в G существует такое ребро (м, v), что ие A, a ve V\Л, где А — множество вершин графа Н\ В таком случае граф Н + (w, v) — ациклический подграф графа G, имеющий меньше компонентов связности, чем Я. Повторяя это построение, мы,
Глава 4. Элементы теории графов 295 в конце концов, придем к остовному дереву графа G, которое содержит Я в качестве подграфа. Пусть теперь Я связный, но он не является остовным деревом графа G. Поскольку Я— связный ациклический граф, то Я— дерево, и поскольку Я не является остовным деревом графа G, то в G существует вершина V, не принадлежащая Я, и в G существует ребро (и, v), которое соединяет вершину v с одной из вершин графа Я, тогда граф Я + (и, v) представляет собой дерево, в котором Я является подграфом. Если Я + (и, v) — остовное дерево G, то все доказано, а если нет, то, повторяя данное построение, мы, наконец, придем к остовному дереву графа G, для которого Я будет подграфом. И если Я— остовное дерево для G, то и в этом случае теорема справедлива. Теорема доказана. 4.8.3. Остов наименьшего веса Рассмотрим такую задачу: пусть каждому ребру графа G = (V, Е) поставлено в соответствие некоторое число </,- = </(£,-), et e £, i = 1, 2, ..., \Е\; необходимо в графе G найти остовное дерево, сумма чисел dt в котором наименьшая. Число ф в этом случае называется весом ребра е„ а сам граф G — таким, что имеет вес. Следовательно, задача состоит в том, чтобы найти остовное дерево с наименьшим весом. Эта задача возникает при проектировании дорог, линий электропередач, трубопроводов и пр., когда необходимо соединить заданные точки некоторой системой связи так, чтобы любые две точки были связаны непосредственно между собой, либо через другие точки, и чтобы общая длина линий связи была минимальной. Рассмотрим несколько методов решения этой задачи. Первое решение следует непосредственно из теоремы Кэли. Действительно, рассмотрев все возможные остовные деревья полного графа G с п вершинами (а их будет не больше чем пп~") и выбрав те из них, которые имеют минимальную сумму весов, мы решим данную задачу. Но поскольку число пп~2 даже при небольшом п будет большим, то такой путь решения данной задачи достаточно трудоемок. Рассмотрим более эффективные способы решения этой задачи. Одним из них является алгоритм Краскала. Алгоритм Краскала состоит в выполнении такой последовательности действий: 1. берем пустой граф О и строим граф Т\ = 0 + е\9 где е\— ребро графа G = (V, Е) минимального веса; 2. если граф Тк уже построенный и к < п - 1, то строим граф Г*+1 = 7\ + е*+1, где ек+\ — ребро минимального веса среди ребер графа G, не вошедших в граф Тк, которое не составляет цикла с ребрами графа Тк.
296 Часть I. Математические основы Этот алгоритм базируется на такой теореме. Теорема 4.8.7. Пусть G — связный граф порядка п и Т— подграф графа G, полученный в результате выполнения шагов 1 и 2 алгоритма Краскала. Тогда подграф Т— остовное дерево графа G минимального веса. Доказательство. То, что Т— остовное дерево графа G, следует из теоремы 4.8.3 п. 2. Остается показать, что сумма чисел d, для всех ребер Т минимальна. Предположим противное, т. е. что существует дерево S графа G такое, что его вес P(S) меньший веса дерева Т- Р(Т). Если е,— первое ребро, не принадлежащее графу 5, то подграф графа G, равный S + eh будет иметь единственный цикл С, содержащий ребро е,. Поскольку С содержит ребро е, принадлежащее 5 и не принадлежащее Т, то подграф S", полученный из S путем замены е на е„ также будет остовным деревом S графа G. По построению d(e,) < d(e) и потому P(S') < Р(5), причем число общих ребер в S' и Т на одно больше, чем в S и Т. Повторяя шаг за шагом эту процедуру, можно преобразовать S в Т так, чтобы сумма чисел dt на каждом шаге не увеличивалась. Следовательно, Р(Т) < T(S) и мы получили противоречие. Теорема доказана. Пример 4.8.2 Рассмотрим граф, изображенный на рис. 4.8.2, и найдем остовное дерево этого графа. 4 2 За4 2 3 б Рис. 4.8.2. Граф G (а) и остовное дерево графа G минимального веса (б). < 4.9. Ориентированные графы и деревья 4.9.1. Основные понятия Напомним, что когда ребра графа G = (V, Е) заданы в виде упорядоченных пар (и, v), т. е. Е с V2, то граф G называется ориентированным (орграфом). Ребра орграфа называются дугами, вершина и — началом, вершина v — концом дуги.
Глава 4. Элементы теории графов 297 Дуга (и, v) называется дугой, выходящей из вершины и и ведущей в вершину V. Пусть G = (V, Е)— орграф. Если (и, v) e Е, то вершина и называется непосредственным предшественником (предком) вершины v, а вершина v — непосредственно подчиненной вершине и или непосредственно достижимой из вершины и. Число дуг оп(и), выходящих из вершины и, называется степенью выхода вершины и, а число дуг in(u), ведущих в вершину и, — степенью входа вершины и. Очевидно, что степень вершины п(и) = оп(и) + in(u). Если (Vw e V) оп(и) < 2, то граф G называется бинарным. Интересно, как формулируется лемма о рукопожатии для орграфов. Поскольку каждая дуга орграфа из Е "принимает" участие в каждой из сумм вида ]Гш(у)и£0п(у) veV veV • лишь по одному разу, то имеем такое соотношение: Xw(v)=X*n(v) = |4 veV veV Следовательно, лемма о рукопожатии для орграфов формулируется так. Лемма о рукопожатии для орграфов. Сумма степеней входа всех вершин орграфа равна сумме степеней выхода всех его вершин. Этот результат часто называют орлеммой о рукопожатии. Маршрутом или путем I из вершины и в вершину v (/ - l(u, v)) в орграфе G называется последовательность вершин и = и\, иг, ..., w„ = v таких, что (м„ W/+i)e Е, 1 = 1, 2, ..., к-\. При этом вершину и называют начальной, a v — конечной вершиной пути / и говорят, что и достижима из v по пути /(w, v), либо что путь / ведет из вершины и в вершину v. Дуги, которыми соединены вершины маршрута, называются ребрами маршрута. Маршрут называется орцепью, если все ребра этого маршрута разные, и простой орцепью, если все вершины маршрута, кроме первой и последней, разные. Орцепь называется замкнутой, если первая и последняя ее вершины совпадают. Цикл— это простая замкнутая орцепь. Если и — вершина графа G, для которой оп(и) = 0 (in(u) = 0), то такая вершина называется, как и раньше, концевой, или висячей вершиной, либо стоком (источником) графа G. Пример 4.9.1 В графе на рис. 4.9.1 вершина и является источником, а вершина w — стоком.
298 Часть I. Математические основы U ^ W Рис. 4.9.1 < Пусть R— отношение непосредственной достижимости на множестве V, а /?, — его транзитивное замыкание. Очевидно, что отношение достижимости совпадает с отношением /?,. Орграф G называется сильно связным, если (Vm, v E V) uRtv. Связный орграф называется эйлеровым орграфом, если в нем существует замкнутая орцепь, проходящая через каждую дугу графа. Теорема 4.9.1. Связный орграф является эйлеровым тогда и только тогда, когда in(v) = on(v) для всякой его вершины v. Доказательство аналогично доказательству теоремы 4.3.10. Орграф G называется гамильтоновым, если в нем существует цикл, проходящий через каждую из его вершин. Орграф называется полу гамильтоновым, если в нем существует простая орцепь, проходящая через каждую из его вершин. Для гамильтоновых орграфов дело немного усложняется, что имеет место, как мы знаем, и для неориентированных графов. Логично поставить вопрос: обобщается ли теорема Дирака на гамильтоновы орграфы? Одно такое обобщение принадлежит Гуйя-Ури. Теорема 4.9.2. Пусть G— сильно связный орграф порядка п. Если on(v) >n/2 и in(v) >n/2 для любой его вершины v, то G является гамильтоновым графом. Доказательство данной теоремы достаточно сложное и выходит за рамки данной книги. Ациклическим орграфом называется орграф, у которого нет циклов. Ориентированным деревом называется ациклический орграф, удовлетворяющий таким условиям: □ (3v0 е V) in(vo) = 0; вершина v0 называется корнем; П (Vv Ф v0) in(y) = 1, где v G V\ □ (Vv Ф v0) существует путь v0, vb ..., v„ = v, причем единственный.
Глава 4. Элементы теории графов 299 Ниже, если не оговорено противное, под деревом будем понимать ориентированное дерево. Ориентированный лес— это орграф, состоящий из нескольких деревьев. Если (и, v) — ребро дерева Г, то вершина и называется отцом вершины v, a v — сыном вершины и. Если оп(и) = 0, то и называется листом в дереве. Вершина и вместе со всеми своими наследниками составляет поддерево дерева Т. При этом и — корень этого поддерева. Теорема 4.9.3. Орграф G = (V, Е) является ориентированным деревом, если □ орграф G — связный и существует v0 € V, которая не имеет предков, и для любой вершины и е V in(u) = 7; □ орграф G имеет вершину vo, из которой достижима всякая другая вершина и, причем путь, соединяющий vo и и, единственный; П орграф G имеет вершину vo, не имеющую предков, а остальные вершины имеют только одного непосредственного предка, и с vo достижима любая другая вершина. Доказательство предлагается читателю как простое упражнение. Упорядоченным деревом будем называть дерево, у которого множество сыновей каждой вершины упорядочено. Бинарное дерево Т называется полным, если для каждой вершины и из V глубины, меньшей к, оп(и) = 2, и если глубина и равна к, то оп(и) = 0, где глубина вершины и — это длина пути из корня в эту вершину. Высота вершины в дереве Т— это длина самого длинного пути из заданной вершины в вершину-листок этого дерева, достижимого из данной вершины. Высотой дерева Г называется высота его начальной вершины. Уровень вершины — это разница между высотой дерева и глубиной этой вершины. 4.9.2. Бинарные отношения и орграфы Из определения орграфа следует, что множество ребер Е можно рассматривать как бинарное отношение на множестве V. Следовательно, всякое бинарное отношение R на множестве V может рассматриваться как орграф G(V, R), если в качестве множества ребер графа взять множество R. Очевидно, справедливо и обратное утверждение: всякий орграф G = (V, Е) задает некоторое бинарное отношение R на множестве V. Действительно, если определить бинарное отношение так, что два элемента и и v из множества V находятся в отношении R между собой тогда и только тогда, когда (м, v) e £, то отношение R и будет искомым.
300 Часть I. Математические основы Таким образом, между бинарными отношениями, определенными на некотором конечном множестве V, и орграфами, для которых множество V служит множеством вершин, существует взаимно однозначное соответствие. Рассмотрим орграфы, которые соответствуют отношению эквивалентности. Пусть R — отношение эквивалентности на V. Из свойств отношения R следует, что V разбивается на классы эквивалентности Vu V2, ..., V* и в силу рефлексивности, симметричности и транзитивности отношения R имеем: О v/?v, т. е. (v, v) G E\ □ vRv\ => vxRv, т. е. (v, vi) G E и (vb v) e E\ □ (v/?vi) и vxRu => (v, vi) G Ей (vi, u)e E=> (v, u) e E, (v, vj), (vi, u) => (v, u) e £. Другими словами, всякий элемент в классе эквивалентности должен быть связан с каждым элементом этого класса ребром и наоборот. Например, если некоторый класс имеет три вершины: v, w, w, то граф этого класса эквивалентности будет иметь вид, показанный на рис. 4.9.2. Рис. 4.9.2 Подводя итог, заметим, что отношение эквивалентности R на множестве V порождает к графов G\ = {VU £1),..., G* = (V*, Ек) (для каждого класса свой граф). 4.9.3. Размеченные графы и представление термов Пусть MV и ME— некоторые множества, которые будем называть множествами меток. Граф G = (V, Е) называется размеченным с помощью функций/а g, если /: V->MV\ g: £ -> ME.
Глава 4. Элементы теории графов 301 При этом функция / называется функцией разметок вершин, а функция g — функцией разметок ребер. Пусть G = (V, Е) и Я = (V, £") — графы, размеченные с помощью функций/, g и/, g' соответственно. Графы G и Н называются эквивалентными, если они изоморфны, и когда h — этот изоморфизм, то Ли) =f(h(u)), g((u,v)) = g\(h(u),h(v))), то есть соответствующие вершины и ребра имеют одни и те же метки. Если функция Jig) тождественная, т.е. MV=V и J{u) = u (МЕ = Е и g((w, v)) = (и, v)), то в графе размечены только ребра (только вершины). В этом случае в практических приложениях функция J{g) просто не принимается во внимание. Рассмотрим теперь конструкцию размеченного графа, удобную для задания термов. Пусть G = (V, Е) — орграф, G' = (A, Q) — некоторая алгебра и N — множество натуральных чисел. Положим MV= Q. Составным объектом называется четверка S = (V, L,J, v0), где V— множество вершин, voG V— начальная вершина, /: V-+Q— функция разметок, L=VxVxN— множество упорядоченных связей, если J{v) = (oneQ, то |Ln(v, V,N)|<rc, Ln(v,V,/)< ] . ' [0, * > n. Пусть Rt—транзитивное замыкание отношения непосредственной достижимости. Составной объект называется инициальным, если для любой вершины v Ф v0 => v0/?/V. Ниже будут рассматриваться только инициальные составные объекты. Условимся в дальнейшем называть составной объект просто составным. Граф G = (V, Е) будет называться графом составного S. Составной называется деревом, если его граф — дерево. Если Ду) = (о, где со— нульарная операция из Q, то со называют первичным составным объектом. Каждая вершина составного 5 порождает составной объект, начальной вершиной которого является она сама. Составной 5/, который порождается вершиной v, называется 1-м аргументом составного Sv (arg(v, i) = v'), порожденного вершиной v,
302 Часть I. Математические основы если существует i е N такое, что (v, v', i) e L. Использовав отношение непосредственной достижимости, операцию arg можно обобщить на все множество V, если положить для vj, v2, ..., vn e Vтаких, что arg(vb ik+\) = v* + i, справедливо равенство arg(v, iu ..., iid = vk+\ (k=\, w-1). Меткой составного называется метка его начальной вершины. Большое количество задач, как для графов, так и для деревьев требуют обхода вершин графа (дерева) в некотором порядке. Наиболее распространены три способа обхода вершин графов: прямой, обратный, внутренний (рис. 4.9.3, соответственно а, б, в). АЛЛ 2 6 4 7 3 8 А \ Л \ А \ 357 236 146 / \ / \ I \ 4 8al 56 2 1 в Рис. 4.9.3 Чаще всего используется прямой порядок обхода вершин составного, которые еще называют обходом слева направо и сверху вниз. Суть его состоит в выполнении таких действий: □ посетить начальную вершину составного — vo; □ посетить самый левый аргумент V вершины v, который еще не посещался ((v, v', 0 е L). Соответственно этому порядку нумеруются и вершины составного. При этом считается, что номер вершины v отождествляется с самой вершиной. Благодаря такому отождествлению составной объект можно задавать с помощью массива (вершин) в памяти вычислительной машины. Составные объекты представляют собой удобный способ для задания термов. Пример 4.9.2 □ Терм t = ((a/(b/ c)) + (5-(x-y))-(d + (u-v))) задается составным объектом, изображенным на рис. 4.9.4. □ Терм t = ((((x-y) + x) + x-y) + x-y) задается двумя составными, изображенными на рис. 4.9.5 и 4.9.6.
Глава 4. Элементы теории графов 303 Л Л А л Л Л ' Л Л А ' ' а / 5 ~ u v х Л A /I х х 5 х у Рис. 4.9.4. Составной, представляющий Рис- 4.9.5. Составной, представляющий терм t терм f, граф которого — дерево х У Рис. 4.9.6. Ациклический составной, представляющий терм t Отметим, что второй способ представления терма намного экономнее, поскольку граф его составного имеет всего лишь 6 вершин и 8 дуг, в то время как первое представление имеет на 7 вершин и на 4 дуги больше. i 4.9.4. Контрольные вопросы □ Что такое граф, мультиграф, псевдограф? □ Что такое платонов граф, регулярный граф, полный граф, пустой граф, связный граф, ориентированный граф? □ Что такое двудольный граф, полный двудольный граф, /:-дольный граф? □ Какая разница между графом и орграфом, графом и мультиграфом, графом и псевдографом?
304 Часть I. Математические основы □ Будет ли двудольным графом дерево, ациклический граф (орграф)? □ Что означает запись XP(G) = 5? □ Всякий ли граф можно раскрасить пятью красками? □ Сколько двудольных графов можно построить на множестве, состоящем из четырех элементов? □ Существует ли регулярный граф степени 3 с тремя вершинами? □ Постройте орграф, который соответствует отношению эквивалентности, заданном на трехэлементном множестве с единственным классом эквивалентности. 4.9.5. Задачи и упражнения 1. Приведите полные доказательства следствий 4.8.1 и 4.8.2. 2. Убедитесь в том, что двум разным деревьям Т и Т с п вершинами соответствуют разные списки L и Z/, которые строились как доказательство теоремы Кэли. 3. Постройте транзитивное замыкание отношения R = {(д, b), (я, с), (b, d), (d, а), (Ь, с)}, заданного на множестве Л = {а, Ъ, с, d]. 4. Найдите число маршрутов длины 3, которые соединяют вершины а и с для отношения R из примера 3. 5. Пусть дано дерево Г=({1, 2, 3, 4}, {(1, 2), (1, 3), (3, 4)}). Постройте его матрицу смежностей и матрицу достижимостей. Какие свойства имеет данная матрица? Чему равна четвертая степень данной матрицы? 6. Докажите, что каждое дерево является двудольным графом. 7. Какие деревья представляют собой полные двудольные графы? 8. Постройте остовные деревья для графов: • #5; • #з,з; • графа Петерсена; • Платоновых графов. 9. Найдите циклические ранги таких графов: • Кя\
Глава 4. Элементы теории графов 305 • Платоновых графов; • графа Петерсена; • связного регулярного графа степени к и порядка п. 10. Постройте остовные деревья и ассоциированные с ними фундаментальные системы циклов и сечений таких графов: • ^3,4» • wv, • С6; • Платоновых графов. 11. Постройте все неизолированные между собой деревья шестого порядка.
ЧАСТЬ II МАТЕМАТИЧЕСКИЕ МОДЕЛИ Глава 5. Абстрактная теория автоматов Глава 6. Теория конечных автоматов Глава 7. Модели алгоритмов и программ Глава 8. Формальные грамматики и формальные языки
Глава 5 Абстрактная теория автоматов В этом разделе вводятся основные понятия абстрактной теории автоматов, а также основные виды автоматов. Цель данного раздела— показать, что изучение поведения автоматов в абстрактной теории автоматов можно свести к изучению представления событий в одном специальном классе автоматов, называемом автоматами Мура. 5.1. Основные определения 5.1.1. Определение автомата и его разновидности Пятерка (А, X, Y, fA, gA) называется автоматом Мили, если она состоит из множества состояний автомата А9 множества входных символов X, множества выходных символов К, функции переходов fA: А х X —> А и функции выходов gA: А х X —> У. Множества X и Y называют соответственно входным и выходным алфавитами автомата. Как правило, автомат обозначают символом множества его состояний, т. е. А = (Л, X, Y,fA, gA). Если известно, о каком автомате идет речь, то индекс А в символах функций переходов и выходов опускают. Если Дя, х) = а\ то говорят, что автомат А под действием входного сигнала х б X переходит в состояние а\ или сигнал х переводит автомат А из состояния а в состояние а\ Если g(a, x) = у, то говорят, что автомат А преобразует в состоянии а входной сигнал х б X в выходной сигнал у е Y. Автомат удобно задавать в виде нижеприведенной схемы, где прямоугольник А символизирует множество состояний автомата, а стрелки — каналы, с помощью которых автомат обменивается информацией с внешней средой. Стрелка с отметкой х соответствует его входу, а стрелка с отметкой у— его
310 Часть II. Математические модели выходу. Символы х и у, которыми отмечены стрелки, обозначают соответственно входной и выходной символы, а символ а над прямоугольником — внутреннее состояние автомата,4 в момент поступления символах. Рис. 5.1.1. Функционирование такой схемы можно описать так. На вход автомата подается сигнал (символ) хе X, под действием которого в соответствии с текущим внутренним состоянием автомата и функций перехода и выхода изменяется состояние автомата, и на его выходе появляется выходной сигнал (символ) у G Y. Если на вход автомата подавать слово (последовательность входных символов), на выходе также появляется слово (последовательность выходных символов). В этом случае автомат А можно рассматривать как алфавитный преобразователь информации, отображающий слова полугруппы F(X) в слова полугруппы F(Y). Последовательность входных сигналов можно рассматривать как функцию натурального аргумента — дискретного автоматного времени. Это дает основание трактовать автомат как дискретную динамическую систему, которая изменяет свое состояние во времени под действием внешних и внутренних факторов. Автомат А называется инициальным, если в множестве его состояний выделено некоторое состояние, которое называется начальным. При функционировании инициального автомата считается, что в начальный момент времени (перед подачей на его вход некоторого слова р е F(X) автомат находится в начальном состоянии. Автомате = (Л, X, Y,f, g) называется конечным, если все три множества: А, X и Y, конечны, и бесконечным, если хотя бы одно из них бесконечно. Автомат называется полным или полностью определенным, если функции переходов и выходов полностью определены, и частичным, если хотя бы одна из них частичная. Иногда встречаются автоматы, у которых компонент/— не функция, а некоторое отношение, то есть в таких автоматах не выполняется условие однозначности перехода. Автоматы такого типа называются недетерминирован-
Глава 5. Абстрактная теория автоматов 311 ными. Если же отношение / является функцией, то автомат называется детерминированным. Следовательно, для детерминированного автомата А с начальным состоянием а однозначно находится состояние Ъ, в которое автомат перейдет под действием слова р Е F(X). А в недетерминированном автомате таких состояний может быть не одно, а несколько. Ясно, что класс детерминированных автоматов является подклассом недетерминированных автоматов. Кроме классов детерминированных и недетерминированных автоматов, существуют и другие специальные классы. Среди них выделяются некоторые вырожденные классы автоматов, у которых одно из множеств (А, X или Y) одноэлементное. В таких случаях рассматриваются упрощенные модели автоматов. Приведем некоторые примеры. Автомат без памяти— это тройка (X, Y, g), g: X—> Y. Этот автомат выполняет посимвольную трансформацию символов входного алфавита X в символы выходного алфавита Y, при которой на один и тот же входной символ х Е X он реагирует одним и тем же выходным символом yeY. Понятие автомат без памяти— основное в теории переключающих схем, которая изучает способы представления таких автоматов сетями из логических элементов. Автономный автомат — это четверка (Л, Y,f, g), где/: Л —> Л, g: А —> Y. Для такого автомата представлением начального состояния определяется весь дальнейший процесс его функционирования. Автомат без выходов, или Х-автомат— это тройка (A,X,f), где /: Л хХ—»Л. Часто Х-автомат задают с помощью четверки (Л, X,/, FqA), а инициальный Х-автомат — с помощью пятерки (Л, X,/ {оо}, FqA), где F— некоторое подмножество состояний автомата, элементы которого называются заключительными или представляющими состояниями, а а0 Е А — начальное состояние автомата. Из перечисленных классов автоматов только Х-автоматы, с точки зрения теории, вызывают интерес, поскольку в двух предыдущих случаях поведение автомата заранее определено. Автоматы Мура являются отдельным случаем автоматов Мили. Автомат (Л, X, К, / g) называется автоматом Мура, если его функция выходов g(a, x) выражается функцией переходов f(a,x) с помощью уравнения g(a, х) = h(f(a, х)), где h: А —> Y. Функция h называется функцией отметок автомата, а ее значение h{a) в состоянии а — отметкой этого состояния. Хотя автоматы Мура и являются отдельным случаем автоматов Мили, в теории автоматов они заслуживают особенного внимания, поскольку в ряде случаев их специфические свойства дают возможность строить более содержательную и глубокую теорию, чем теория автоматов Мили. 11 Зак. 3427
312 Часть II. Математические модели Перейдем к рассмотрению конечных автоматов и способов их представления. В общем случае для представления конечных автоматов пользуются двумя стандартными способами, которые называются универсальными— это таблицы переходов и выходов и графы переходов и выходов. 5.1.2. Таблицы переходов и выходов Таблицы переходов и выходов автомата — это две матрицы одинаковой размерности, строки которых отмечены различными символами входного алфавита, а столбцы — различными символами состояний автомата. Для функции переходов (первая матрица) на пересечении /-ой строки, отмеченной символом х е X, и 7-го столбца, отмеченного состоянием а е А, находится значение Лачх) = Ъ. Аналогично для функции выходов (вторая матрица)— на пересечении /-ой строки и 7-го столбца находится значение g(a, x) = y G К. В случае инициального автомата считают, что начальное состояние автомата отмечает первый столбец как в таблице переходов, так и в таблице выходов. Пример 5.1.1 □ Автомат А = ({О, 1, 2, 3}, Х= {я, Ь}, К= {О, 1}, {0},/, g) задается такими таблицами переходов и выходов: 9 а Ь 0 0 1 1 0 1 2 0 1 3 0 1 f а Ь 0 2 1 1 3 0 2 0 3 3 1 2 Приведенный автомат переписывает любое слово в алфавите {я, Ь} в слово в алфавите {О, 1}; □ Рассмотрим более содержательный пример автомата. Пусть А = ({0, 1, 2, 3}, X = {а = (О, О), Ь = (0, 1), с = (1, 0), d = (1, 1)}, Y = {0, 1}, {0},/, g), где /и g заданы таблицами переходов и выходов: 9 а Ь с d 0 0 1 1 0 1 1 0 0 1 2 0 1 1 0 3 1 0 0 1 \f а ь с d 0 0 0 0 3 1 2 1 1 1 2 0 0 0 3 3 2 1 1 1
Глава 5. Абстрактная теория автоматов 313 Нетрудно проверить, что этот автомат выполняет сложение двух чисел в двоичной системе исчисления, которые поступают на его вход в порядке возрастания разрядов. Кроме того, он выполняет контроль знакового разряда. * 5.1.3. Граф переходов и выходов Граф переходов и выходов автомата представляет собой ориентированный граф, вершины которого взаимно однозначно соответствуют состояниям автомата. Дуги графа отмечены парами символов, первый—символом входного алфавита, второй — символом выходного алфавита. В этом случае соответствие между графом переходов и выходов и функциями перехода / и выхода g такое, что если Дя, х) = а и g{a, х) = у9 то в графе из вершины а в вершину a ведет дуга, отмеченная парой (х I у\ и наоборот, если в графе переходов и выходов автомата существует дуга (я, а), отмеченная парой (хIу\ то для функций перехода/и выхода g выполняются равенства Да, х) = а и g{a, x) = у. Из приведенного соответствия графа автомата его функциям перехода и выхода видно, что не всякий граф, дуги которого отмечены парами символов из некоторых алфавитов X и Y, будет представлять собой граф переходов и выходов автомата. Для того чтобы отмеченный граф был графом автомата, необходимо и достаточно, чтобы выполнялись два условия, которые называются условиями авшоматности графа. 1. Не существует двух дуг с одинаковыми входными отметками, выходящих из одной и той же вершины (условие однозначности). 2. Для любой вершины и входного символа существует дуга, которая выходит из этой вершины и отмечена этим входным символом (условие полноты). Таким образом, для недетерминированных автоматов не выполняется условие 1, а для частичных автоматов — условие 2. Но несмотря на это, таблицы переходов как недетерминированных, так и частичных автоматов также изображают графами. Пример 5.1.2 □ Граф переходов и выходов автомата Л = ({0, 1, 2, 3}, Х= {а, Ь), К= {0, 1}, {0},/, g) из примера 5.1. п. 1 имеет вид: Рис. 5.1.2.
314 Часть II. Математические модели □ Граф переходов и выходов автомата Л = ({0, 1, 2, 3}, X={a = (0, 0), Ь = (0, 1), с = (1, 0),rf=(l, 1)}, Г={0, 1}, {0},/, g) из примера 5.1.1 п. 2 имеет такой вид: Рис. 5.1.3. < При небольшом числе состояний более удобен графовый способ представления автомата. Кроме того, представление автоматов графом переходов и выходов дает возможность дать определение еще одного класса автоматов — ациклических. Автомат, граф переходов и выходов которого ациклический, называется ациклическим автоматом. Функции переходов и выходов можно распространить на входную и выходную полугруппы: F(X) и F(Y) соответственно. Для этого необходимо положить: Да, е) = a,f(a, px) =/(/(д, р), *), g(a, е) = е, g(a, px) = g(a, p) g(f(a, р), х). Применяя индукцию по длине слова q, нетрудно доказать такое соотношение: f(a,pq)=j{f(a,p), q), g(a, pq) = g(a, p) g(f(a, p\ q). Действительно, если q = x, т. е. l(q) = l, то базис индукции имеет место по определению. Если же q = q'x и для q' соотношение ассоциативности выполняется, то f(a, pq) =f(f(a, pq'\ х)) =f(f(a, р), qx), g(a, pqx) = g(a, pq) g(f(a, pq), x) = = g(a,p) g(f(a,p), q') g(f(a,pq'), x) = g(a, p) g(f(a,p), qx).
Глава 5. Абстрактная теория автоматов 315 Условимся в дальнейшем считать, что автомат А переходит из состояния a в состояние а' под действием словар, или что словор переводит автомате из состояния а в состояние а, если/(а, р) = а. Состояние а называется достижимым из состояния а {а —» я')> если существует такое входное слово р, которое переводит автомат А из состояния а в состояние а. Для того чтобы установить достижимость а из а, достаточно в графе переходов и выходов найти путь из вершины а в вершину а'. Очевидно, что если такой путь существует, то последовательность первых компонентов отметок дуг этого пути и будет составлять слово р. Заметим, что для установления достижимости а из а достаточно рассматривать лишь такие пути в графе автомата (они называются простыми), которые не проходят дважды через одну и ту же вершину графа. Это замечание дает возможность ограничить поиск необходимого входного слова лишь такими словами, длина которых не превышает общего числа состояний автомата. Ясно, что в случае конечных автоматов проверка истинности отношения я —» а всегда возможна. 5.1.4. Подавтоматы. Гомоморфизмы автоматов Подмножество ВсД множества состояний автомата Л составляет подавтомат автомата А, если для всякого состояния Ъ Е В и любого входного символа х Е X состояние ДЬ, х) принадлежит множеству В, причем функции перехода и выхода автомата В совпадают с функциями перехода и выхода автомата Л на множестве В. Из приведенного определения следует, что основное условие, которому должен удовлетворять подавтомат, — это замкнутость множества его состояний по отношению достижимости. Другими словами, если подмножество В множества состояний некоторого автомата А представляет собой множество состояний подавтомата, то это подмножество должно включать все состояния, достижимые из любого состояния этого подмножества. В отдельном случае, если зафиксировать некоторое состояние Ъ автомата А и построить множество В всех состояний, достижимых из этого состояния, то это множество вместе с соответственно ограниченными функциями перехода и выхода автомата будет подавтоматом автомата Л. Пусть заданы некоторый конечный автомат А = (Л, Ху К,/, g) и его состояние а Е А. Отображение fa будем называть отображением, индуктируемым состоянием а автомата Л, если для всякого р Е F(X) faip) = g(a9p).
316 Часть II. Математические модели Будем считать, что автомат А задает отображение h его входной полугруппы на выходную полугруппу, если существует такое состояние а этого автомата,, что h =fa. Множеством отображений, заданных автоматом А, назовем совокупность {fa} (a e А) всех попарно разных отображений. Если же автомат А инициальный, ограничимся рассмотрением отображения, индуктируемого его начальным состоянием. Это отображение будем называть отображением, индуцируемым автоматом А. Автоматы А и В, имеющие один и тот же входной и выходной алфавит и индуктирующие одну и ту же совокупность отображений, т. е. {fa} (а е А) = [fu] (b Е В), называются эквивалентными автоматами (А ~ В). Если автоматы АиВ инициальные, то А ~ В, если / = fbo. Два состояния а и Ъ одного и того же автомата А, или двух разных автоматов А и В называются эквивалентными состояниями (а ~ Ь), если/^ =fb. Непосредственно из этих определений следует такая теорема. Теорема 5.1.1. Автоматы А ~ В тогда и только тогда, когда для всякого состояния ае А найдется эквивалентное ему состояние Ъ € В, и наоборот. Автомат называется приведенным, если все его состояния попарно неэквивалентны. Для конечных автоматов приведенность означает, что количество состояний приведенного автомата не превышает количества состояний любого другого автомата, эквивалентного ему. В теории автоматов задача построения приведенного автомата для заданного автомата— одна из наиболее важных и называется задачей минимизации автоматов. Пусть даны два автомата: А = (Л, X, К,/, g), В = (В, Х\ У,/, g) и три отображения: z: А —> В, и: X —»Х\ v: К—» Y. Говорят, что отображения z, w, v гомоморфно отобраэюают автомат А в автомат В, если (Va Е А) (V* Е X) имеют место такие соотношения: □ z(f{a,x))=f(z(a),u(x)y, П v(g(a9x)) = gXz(a),u(x)). Если же автоматы А и В инициальные, то к этим условиям добавляется еще одно условие: П z(ao) = bo, где #о £ A, bo E В — начальные состояния автоматов. Если такие отображения z, м, v существуют, то говорят, что они реализуют гомоморфизм автомата А в автомат В. Гомоморфизм автомата А в автомат
Глава 5. Абстрактная теория автоматов 317 В называется изоморфизмом, если все три отображения: z, w, v, реализующие этот гомоморфизм, взаимно однозначны. Изоморфные автоматы отличаются один от другого лишь отметками своих входных и выходных символов и состояний. Поэтому, если в автоматах Л и В входные или выходные — или и входные, и выходные — алфавиты совпадают, то будем считать, что отображение и или отображение v, или и и, и v — тождественные отображения. В дальнейшем рассмотрим автоматы А и В, у которых входные и выходные алфавиты совпадают, т. е. А = (Л, X, К,/, g) и В = (В, X, К,/', #'). В этом случае отображение z: A —> В будет называться гомоморфизмом автомата А в автомат В, если (\/я е A) (Vjc e X): z{f(a,x))=f'{z(a\xY (5.1.1.а) g(a,x) = g'(z(a),x); (5.1.1.6) z(ao) = Ьо — для инициальных автоматов. (5.1.1.в) Отдельными вариантами понятия гомоморфизма являются понятия гомоморфизма на и изоморфизма. Гомоморфизм z называется гомоморфизмом на, если отображение z является отображением на (см. раздел 1), и изоморфизмом, если z — взаимно однозначный гомоморфизм. Если z — гомоморфизм автомата А в автомат В, то индукцией по длине слова р е F(X) можно доказать, что равенства (5.1.1) выполняются и для расширенных функций переходов и выходов: z(f(a,p))=f'(z(alp)', (5.1.2.a) g(a,p) = g'(z(a),p). (5.1.2.6) С понятием гомоморфизма автоматов тесно связано понятие эквивалентности автоматов. Действительно, равенство g(a,p) = g'(z(a),p) при переходе к отображениям, которые индуктируются состояниями автомата, означает fa(p)=U)(p). (5.1.3) Поскольку равенство (5.1.3) справедливо для всякого входного слова р, то это означает, что состояния а и z(a) эквивалентны. Отсюда следует, что {fa}(aeA)cz{fz(a)}z(a)eB. (5.1.4) Для автоматов справедливы утверждения, аналогичные утверждениям 2.1.1 и 2.1.2. Теорема 5.1.2. Если z: А —> В — гомоморфизм автомата А в автомат В, то образ z(A) автомата А при отображении z является подавтоматом автомата В.
318 Часть II. Математические модели Доказательство. Достаточно показать, что подмножество z(A) множества состояний автомата В замкнуто относительно функции переходов /'. Допустим противное, то есть, что существуют состояние a е z(A) и некоторый х G Х9 такие что/'(а', х) g z(A). Поскольку a e z(A), то существует a e А такое, что z(a) = а. Но тогда по определению гомоморфизма состояние Да, х) должно переходить в состояние f'(z(a), x) =f'(a\ x), которое, по нашему предположению, не принадлежит множеству z(A). Полученное противоречие доказывает замкнутость множества z(A) относительно функции переходов/'. Теорема 5.1.3. Если z: А —> В и z': В -> С— гомоморфизмы (гомоморфизмы на, изоморфизмы) автоматов А и В, В и С, то произведение отображений z * z': А —> С — также гомоморфизм (гомоморфизм на, изоморфизм). Доказательство предлагается как простое упражнение. Теорема 5.1.4. Если z: А —> В— гомоморфизм автомата А на автомат В, то А ~ В. Доказательство. Поскольку z—гомоморфизм на, то для всякого состояния Ъ из В прообраз z'\b) Ф 0. Следовательно, для всякого состояния Ъ из В найдется (хотя бы одно) состояние а из А такое, что а ~ Ъ. По теореме 5.1.1 и формуле (5.1.4) данная теорема справедлива. Заметим, что утверждение, обратное к теореме 5.1.4, не справедливо ни для гомоморфизмов на, ни для изоморфизмов. Следствие 5.1.1. Если v А —> В— гомоморфизм автомата А в автомат В, то А - z{A\ где z(A) — гомоморфный образ А в В. Ядром гомоморфизма v А —» В (ker(z)) называется такое разбиение множества состояний автомата А на классы, при котором в один и тот же класс попадают те и только те состояния, которые при гомоморфизме z имеют один и тот же образ. Другими словами, ядро гомоморфизма ker(z) = {К(а) \ а е А], где К(а)— класс разбиения, которому принадлежит состояние а и be K(a) <=> z(a) = z(b). Поскольку ker(z)— разбиение множества состояний, то по лемме 1.1.1 с ядром гомоморфизма связывается отношение эквивалентности Rz, такое что aRzb <=> z(a) = z(b). Непосредственно из определения гомоморфизма автоматов следует такое утверждение. Утверждение 5.1.1. Если z: А —> В — гомоморфизм автомата А в автомат В и ker(z) — его ядро, то: О a) aRjb => а ~ Ъ; □ б) (\/х G X) аКЪ =>уГа, х) RJ(b, х) & g(a, х) = g(b, x).
Глава 5. Абстрактная теория автоматов 319 Доказательство предлагается как простое упражнение. Отношение эквивалентности R на множестве состояний автомата А будем называть конгруэнтностью, если аКЪ => Дя, х)ДДЬ, х) & g(a9 х) = g(b, х). Нетрудно проверить, что отношения Rz и - — конгруэнтности. Для отношения Rz это следует прямо из утверждения 5.1.1, б. Покажем, что отношение конгруэнтность. Пусть х G X, р е F(X), Да, х) = а7, ДЬ, х) = Ь' и а ~ Ь. Отношение а~ b означает, ЧТО fa(xp) =fb(xp) И fa(x) = fb(x)9 ИЛИ fa(xp) = /„(*) fa'(p) = fb(x)fb'(p) =fb(xp). Откуда следует, что fa'(p) =Л'(р)- Поскольку слово р произвольное, то это означает, что Да, х) = а' ~ V =ДЬ, х\ а вместе с уравнением fa(x) =fb(x)9 и то, что отношение конгруэнтность. Таким образом, всякий гомоморфизм автоматов А и В задает некоторое отношение конгруэнтности на множестве состояний автомата А. Лемма 1.1.2 подсказывает нам такой вопрос: а справедливо ли обратное утверждение, то есть, можно ли по отношению конгруэнтности на множестве состояний автомата А указать такой автомат 5, на котором автомат А будет гомоморфно отображаться и при этом ядро гомоморфизма будет совпадать с данной конгруэнтностью. Оказывается, что такой факт имеет место. Пусть А = (А, X, У,/, g)— автомат и Rz— отношение конгруэнтности на множестве А. Введем новый автомат Д= (Л, X,Y, /, g), состояниями которого являются классы эквивалентности по отношению /?z, a / и g определяются ниже с помощью функций / и g таким образом. Пусть а — представитель класса эквивалентности К(а\ которому принадлежит состояние а, тогда f(a,x) = f(a,x) и g(a,x) = g(a,x). Поскольку Rz— конгруэнтность, выбор представителя в классе эквивалентности К(а) не влияет на задание автомата А . Автомат А, построенный таким образом, называется фактор-автоматом автомата А относительно конгруэнтности Rz и обозначается A I Rz. Рассмотрим отображение hz, которое ставит в соответствие каждому состоянию а автомата А класс эквивалентности состоянию а- а = К(а) — автомата A I Rz. Нетрудно убедиться, что hz гомоморфизм. Действительно, из определения hz имеем hz (/(a, x)) = b = f{hz{a\x) = /(в, х), hz(f(a, х)) = g{hz{a\ х) = g(a, х) = g(a, x).
320 Часть II. Математические модели Гомоморфизм hz в теории автоматов называется каноническим. Для канонического гомоморфизма автоматов справедлив аналог теоремы о гомоморфизме {см. разд. 2.1). Теорема 5.1.5. Пусть z: А —» В— гомоморфизм автомата А в автомат В и ker(z) — его ядро, тогда автоматы A /ker(z) и z(A) изоморфны. Доказательство предлагается как упражнение. 5.1.5. Теорема о приведенном автомате Теорема о приведенном автомате. Пусть А — автомат и К(А) — класс всех автоматов, эквивалентных автомату А. Тогда в классе К(А) существует приведенный автомат, который является гомоморфным образом любого другого автомата из класса К(А) и определяется с точностью до изоморфизма. Доказательство. Построим по автомату А и отношению ~ фактор-автомат А I ~. Покажем, что автомат А I ~ имеет все свойства, указанные в условии теоремы. Покажем, в первую очередь, что автомат А/ приведенный. Пусть а, а '— пара эквивалентных состояний автомата А I ~. Тогда из свойства канонического гомоморфизма (теорема 5.1.5) имеем, что всякие два прообраза состояний а и а' — состояния а и а—эквивалентны между собой. Но это означает, что а и а' принадлежат одному и тому же классу эквивалентности по отношению ~ и при каноническом гомоморфизме А —> А I ~ переходят в одно и то же состояние автомата А I ~, т. е. а = а'. Следовательно, состояния автомата А I ~ попарно неэквивалентны, а это означает, что автомат А I ~ — приведенный. Пусть В— произвольный автомат из К(А), тогда существует гомоморфизм z автомата В на автомате / ~, который задается таким образом: Z(b) =a= К{а\ где а — некоторое состояние автомата Л, эквивалентное состоянию Ъ автомата В. Такое задание отображения г корректно в том плане, что не зависит от выбора элемента а: если а ~ Ъ и а - Ь, то а = а'— их общий образ при каноническом гомоморфизме. Отображение z— гомоморфизм на, поскольку для произвольного состояния а Е А/~ существует эквивалентное ему состояние а автомата А, а тогда, поскольку А ~ В, найдется состояние Ъ Е В такое, что а - Ъ (теорема 5.1.1), и которое при отображении z будет переведено в состояние а.
Глава 5. Абстрактная теория автоматов 321 Покажем теперь, что z— гомоморфизм. Пусть be В— произвольное состояние автомата В и a е А такое, что a ~ Ь. Тогда z№ *)) = f(a,x) = J(a,x)=J (z(b\ *), g(b, х) =fb(x) =fa(x) = g(a, x) = g (z(b), x). Пусть В e K{A\ у которого все состояния попарно неэквивалентны. Покажем, что в этом случае гомоморфизм z'. В —> А I ~ будет взаимно однозначным, то есть будет изоморфизмом. Пусть b, b' е В и z{b) = z(b'). Но тогда, поскольку b ~ z{b) и b' ~ z(b'\ то b ~ b\ а в силу того, что В приведенный, это означает, что Ъ = У. Теорема доказана. Из этой теоремы следует, что для получения приведенного автомата, эквивалентного заданному, достаточно построить максимальное разбиение множества состояний данного автомата на классы эквивалентных между собой состояний. Опишем метод построения такого разбиения, базирующийся на понятии i-эквивалентности состояний (/ = 1, 2,...). Состояния and называются i-эквшалентными, если (Vp e F(X)) длины i имеем g(a, p) = g(a\ p). /-эквивалентными являются состояния, имеющие одинаковые столбцы в таблице выходов. Если состояния а и а не /-эквивалентны, то они называются i-различными. Очевидно, что /-эквивалентность состояний — это обыкновенное отношение эквивалентности. Классы эквивалентности данного отношения называются i-классами. Из условий автоматности следует, что для всякого значения / имеет место неравенство (/ + 1)-классы < /-классов, т. е. если состояния (/ + 1)-эквивалентны, то они и /-эквивалентны. Состояния называются ^-эквивалентными, если для всякого i (/ e {1,2,...}) они /-эквивалентны. Это отношение также является отношением эквивалентности, а его классы эквивалентности будем называть ^-классами. Теорема 5.1.6. Два состояния: а и а' эквивалентны тогда и только тогда, когда они ^эквивалентны. Доказательство вытекает из определения отношения эквивалентности состояний автомата и определения ©«-эквивалентности. Для построения приведенного автомата рассмотрим такой, в общем говоря, бесконечный процесс разбиения множества состояний на ««-классы. На первом этапе по таблице выходов автомата находим разбиение множества состояний автомата на 1-классы. В дальнейшем, считая что система /-классов автомата уже построена, применим операцию расщепления /-классов для построения (/ + 1)-классов. Эта операция определяется так.
322 Часть //. Математические модели Пусть Ки К2, ..., Кт — некоторое разбиение множества состояний автомата А на классы, тогда расщеплением этого разбиения будем называть такое разбиение К\\ К2\ ...9Кп' множества состояний этого автомата, которое удовлетворяет таким условиям: □ каждое из множеств К\\ К2\ ..., Кп' целиком принадлежит одному из множеств Ки К2, ..., Кт\ □ (V* G X) (Va e K/)j(a, x) е Kh где Kt определяется символом jc и классом К/ и является одним из /-классов; □ если /ГД/Г/сЛ^/^Д то (ЗхеХ) (У a <= K{) (Va <= К/) f(a,x)eKp, f(a\x)e Kq',p*q. Для некоторого разбиения операция расщепления классов не приводит к их изменению, например, когда каждый класс — это отдельное состояние автомата. Применяя операцию расщепления классов, получаем новое разбиение, классы которого являются подклассами соответствующих классов предыдущего разбиения. При этом два состояния and принадлежат одному и тому же (/ + 1)-классу, если (Vjce X)f(a,x) nf(d,x) принадлежат одному и тому же /-классу. Допустим теперь, что предыдущим для операции расщепления классов было разбиение множества состояний на /-классы. Тогда из равенства g(a, xp) = g(a, x) g(f(a, х), р\ где/? — входное слово длины /, следует, что состояния а и d, попавшие при расщеплении некоторого /-класса в один и тот же его подкласс, будут (/ + ^-эквивалентными. Действительно, поскольку а и а лежат в одном /-классе и / > 1, то g(a, х) = g(a\ х), а поскольку/(a, jc) и f(a\ х) также лежат в одном и том же /-классе, то и g(f(a, х), р) = g(f(d, х), р). Наоборот, если состояния and лежат в разных классах разбиения, полученного в результате применения операции расщепления, то это может быть только тогда, когда они уже лежали в разных /-классах (значит, не были даже /-эквивалентными) или, в противном случае, для некоторого х состояния f(a, x) nf(d, x) лежат в разных /-классах. А это значит, что существует такое слово р длины /, что g(a, xp) * g(f(d, x), р). Заметим, наконец, что если начальный автомат конечный, то через некоторое время последовательность разбиения множества его состояний на классы, получаемые на разных этапах процесса разбиения, стабилизируется и представляет собой разбиение на ©«-классы. Действительно, на каждом /-м шаге (/>1) число /-классов не превышает числа состояний самого автомата, но тогда в силу конечности автомата найдется такое значение /, что все (/ + 1)-классы будут совпадать с /-классами. Для такого разбиения индукцией по длине входного словар легко показать, что каким бы не было слово р, для
Глава 5. Абстрактная теория автоматов 323 двух произвольных /-эквивалентных состояний a w а' будет выполняться равенство g(a, р) = g(a\ p). Контрольные вопросы. □ Дайте определение автомата. □ Какой автомат называется конечным, полным, частичным, детерминированным, недетерминированным, ациклическим, автоматом без выходов? □ Какие Вы знаете способы задания автоматов? О Что представляют собой условия автоматности графа? □ Дайте определение отображения, представленного в автомате. □ Дайте определение эквивалентности состояний автомата и автоматов. 5.2. Представление событий в автоматах. Автоматы Мура и недетерминированные автоматы Этот небольшой по объему раздел имеет сугубо теоретический характер. В нем рассматриваются условия и способы представления произвольных отображений и событий в автоматах, а также взаимосвязь между автоматами Мили и автоматами Мура и детерминированными и недетерминированными автоматами Мили с точки зрения представления событий в этих автоматах. Устанавливается, что как детерминированные, так и недетерминированные автоматы Мили эквивалентны автоматам Мура. 5.2.1. Автоматные отображения Выше было введено понятие алфавитного отображения для изучения поведения автомата. Рассмотрим теперь условия, каким должно удовлетворять алфавитное отображение, индуцируемое автоматом, и как построить алгоритмы, дающие возможность синтезировать автоматы, представляющие эти отображения. ^ Раньше для расширенных функций выходов было установлено соотношение g(a, pq) = g(a, p) g(f(a, p\ q\ или если условиться писать сокращенно ар для f(a, p), то g(a, pq) = g(a, p) g(ap, q).
324 Часть II. Математические модели Переписывая его с использованием обозначений для отображений, индуктируемых состояниями автоматов, получаем соотношение Zaipq) = Za(p)Zap(q). Из этого равенства следуют два необходимые условия, назовем их условиями автоматности отображений, которым должно соответствовать всякое отображение, представляемое в автоматах: О l(z(p)) = 1(р) для всякого р из F(X); □ если р < д, то zip) < z(q). Отношение < — это отношение частичного порядка на множестве F(X), задаваемое таким образом: p<q<=* q = рр\ т. е. когда р— начальное подслово слова q. Приведенные условия автоматности не только необходимы, но и достаточны для представления отображений в автоматах. Прежде чем показать достаточность этих условий, введем некоторые необходимые понятия. Сдвиг отображения Будем говорить, что слово р является частным от деления слова q на слово /?, и обозначать это с помощью равенства р = q || р, если p<q iq = рр). Если же неравенство p<q не выполняется, то результат операции q \\ p будем считать неопределенным. На множестве автоматных отображений, действующих на полугруппе слов F(X), для каждого слова р е F(X) определим оператор сдвига, который преобразует отображение z в отображение zp и задается уравнением zP(q) = z(pq) || zip). Отображение zp называется сдвигом отображения z. Из другого условия автоматности отображения и неравенства p<pq следует, что для всякого слова/? из F(X) оператор сдвига []р полностью определен на множестве автоматных отображений. Для произвольного слова р и произвольного автоматного отображения z сдвиг zp = [z]p тоже будет автоматным отображением. Действительно, HZpiq)) = Kzipq) || Zip)) = Hzipq)) - Kzip)) = Hpq) ~ Up) = Ш В дальнейшем, пусть q<r, тогда pq^pr и zipq)^zipr). Если поделим обе части неравенства на одно и то же начальное слово zip), то получим zipq) || zip) < zipr) || zip), или Zpiq) < zPir). Таким образом, из q < г следует, что zpiq) ^ zpir\ т. е. второе условие автоматности тоже выполняется.
Глава 5. Абстрактная теория автоматов 325 Из определения оператора сдвига легко получить соотношение [[]p]q = []pq, которое выполняется для любой пары слов из F(X). Из этого соотношения следует, что множество операторов сдвига можно рассматривать как полугруппу, и эта полугруппа изоморфна полугруппе слов F(X). Рассмотрим теперь два способа синтеза автомата по отображению. Первый способ. Возьмем за множество состояний автомата Az, который необходимо построить, множество F(X) — множество всех слов в алфавите Л" вместе с пустым словом е. Функции переходов и выходов зададим уравнениями Др, х) = рх\ gip, х) = zp{x). Покажем индукцией по длине входного слова, что состояние е автомата Аг индуктирует отображение z. Для слов, состоящих из одной буквы, равенство Kip) = zip) очевидно. Действительно, Kix) = gie, x) = Zeix) = zix) || zie) = zix). Пусть теперь это справедливо для слова р длины, большей 1, т. е. heip) = zip). Тогда для слова/?* имеем he(px) = he(p)zpix) = zip)izipx) \\ zip)) = zipx). Заметим, что для конкретного автоматного отображения z могут существовать такие слова р и q, что их сдвиги zp и zq совпадают. Второй способ. Возьмем множество всех сдвигов {zp} ip e X) отображения z в качестве множества сдвигов автомата Л-, который необходимо синтезировать, а функции переходов и выходов автомата зададим уравнениями: Я*р> х) = zpx\ gizp, х) = Zpix). Предлагается доказать индукцией па длине входного слова, что состояние ze — начальное состояние автомата А- — индуцирует отображение z. Из способов построения автоматов Az и А- следует такая теорема. Теорема 5.2.1. Всякое отображение, удовлетворяющее условиям автомат- ности, может быть представлено в автомате. Если такой автомат приведенный, то число его состояний определяется числом сдвигов данного отображения. Из этой теоремы и определения оператора сдвига получаем следствие. Следствие 5.2.1. Вместе с любым отображением, представленным в данном автомате, в этом автомате также представлен и любой его сдвиг. Действительно, если отображение ha, индукцировано состоянием а, совпадает с отображением z и zp — сдвиг отображения z, то отображение zp и hnp совпадают: Zpiq) = zipq) || zip) = ha(pq) || hn(p) = ihaip)hap(q)) \\ haip) = hapiq).
326 Часть II. Математические модели Оценивая автоматы, построенные обоими способами по одним и тем же автоматным отображениям, можно сказать, что они представляют собой две возможные крайности: при первом способе построения состояния автомата вводятся везде, где только возможно, а при втором — максимально экономно, т. е. лишь там, где это абсолютно необходимо. В первом случае диаграмма переходов и выходов построенного автомата независимо от начального отображения представляет собой бесконечное дерево, а во втором — полученный автомат приведенный, и число его состояний не зависит от начального отображения. Таким образом, отображение, не удовлетворяющее условиям автоматности, в автомате представить невозможно. Правда, существует простой способ, с помощью которого можно построить другое отображение— автоматное, и по которому однозначно можно найти начальное отображение. Этот способ базируется на расширении алфавитов X и Y: к алфавиту X добавляется буква и, а к алфавиту Y— буква v. Искомое отображение z строится так: если zip) = q, то z(pu... u)= v ... vq. /(<7)раз /(р)раз Определяя так отображение z на всех возможных словах из множества F= {pul(z(p)) \p E F(X)}, доопределим его на всех начальных отрезках этих слов таким образом, чтобы выполнялись условия автоматности. Такое определение корректно, поскольку оно не приводит к неоднозначности отображения. Если буква и ни разу не встречается в слове г = q || р, то образом z(r) этого слова будет слово w... v. Если же буква и встречается в слове г, то она однозначно оп- /(г)раз ределяет слово р и, следовательно, образ z(r). Всякое слово, не принадлежащее множеству F и не являющееся начальным отрезком слова из F, можно записать в виде р\р2, где р\ — слово максимальной длины из множества F или начальный отрезок некоторого слова из F. В этом случае отображение z на слове р\р2 определим с помощью уравнения z(p\Pi)= z(p\) vv... v. Построенное таким /(р2)раз образом отображение z автоматное. Легко показать, что по отображению z однозначно восстанавливается начальное отображение z . Действительно, если приписать к слову р такое число символов м, чтобы образ этого слова имел вид v ... vqv, то после вычеркивания символов v получим слово q, которое по построению отображения z и будет образом слова р при отображении z. Из сказанного следует справедливость такого утверждения.
Глава 5. Абстрактная теория автоматов 327 Теорема 5.2.2. Для произвольного алфавитного отображения f: F(X) —> F(Y) существует автоматное отображение g: F(X) u {и}) —> F(Y)u {v}, которое однозначно определяет начальное отображение/. Описанный прием построения отображения z называется стандартным приемом выравнивания длин слов. Но этот прием не всегда самый экономный способ преобразования произвольного алфавитного отображения в автоматное. В этом легко убедиться, если применить его к автоматному отображению. Из-за этого на практике, как правило, прибегают к последовательному дописыванию букв и и v (справа ко входному слову и слева к выходному), каждый раз проверяя выполнение условий автоматности. 5.2.2. Автоматные системы событий Пусть X— некоторый, возможно и бесконечный, алфавит. Всякое подмножество 5 с (X) называется событием в алфавите X. Автоматной системой событий в алфавите X будем называть всякое семейство {£,} (i Е /, где /— некоторое множество индексов) непустых событий в этом алфавите такое, что (JS/ = F(X)\{e} и StnSj = 0, если i Ф]. Между автоматными системами событий в алфавите X и автоматными отображениями из полугруппы F(X) в некоторую другую полугруппу F(Y) можно установить однозначное соответствие. Пусть z— некоторое автоматное отображение F(X) в F(F), и пусть алфавит К такой, что для каждой его буквы найдется хотя бы одно слово р Е F(X), для которого эта буква входит в образ zip). Иначе говоря, из алфавита Y можно исключить все буквы, не удовлетворяющие этому условию. Теперь для всякого у Е Y обозначим через Sy событие, которое состоит из всех слов р из F(X), для которых zip) оканчивается символом у. Совокупность {Sy} iy е У) таких событий, очевидно, будет автоматной в алфавите X. Построенную таким образом по отображению z систему автоматных событий будем в дальнейшем называть канонической системой событий автоматного отображения z со входной полугруппой F(AT) и выходной полугруппой FiY). Для канонической системы событий автоматного отображения z справедливо и обратное свойство— она однозначно определяет отображение z. Действительно, пусть р = xt xi2 ... xin — произвольное слово из FiX). Допустим, что слово xi xi ... xt, (для j = 1, 2, ..., п) принадлежит событию Sy. Тогда по второму условию автоматности и определению событий {SyJCjE Y) образом
328 Часть II. Математические модели слова р при отображении z может быть лишь слово у\у2.. .уп- Это слово получено исключительно по совокупности событий {Sy} без непосредственного обращения к отображению z. Если индексы автоматной системы событий явно не заданы, то можно строить отображение, для которого эта система была бы канонической с точностью до обозначения букв выходного алфавита. Следовательно, имеет место такая теорема. Теорема 5.2.3. Каноническая система событий произвольного автоматного отображения z: F(X) —> F(Y) является автоматной системой событий в алфавите X. Наоборот, всякая автоматная система событий в алфавите X моэюет рассматриваться как каноническая система событий некоторого автоматного отображения со входной полугруппой F(X). При этом отображение z определяется с точностью до обозначения букв выходного алфавита. Эта теорема дает возможность свести изучение автоматных отображений к изучению автоматных систем событий. В частности, задача представления отображений в автоматах может быть сведена к задаче представления событий в автоматах. Говорят, что событие Sy в алфавите Y представлено в инициальном автомате А выходным сигналом у, если входным алфавитом автомата А является алфавит X, a Sy состоит из всех тех и только тех слов в алфавите X, образы которых при отображении, индуцируемом автоматом А, оканчиваются буквой у. Автоматная система событий называется представленной в инициальном автомате А, если каждое событие этой системы представлено в автомате А некоторым выходным сигналом. Исходя из теоремы 5.2.3, всякую автоматную систему событий {5,} (i e /) можно рассматривать как каноническую систему событий некоторого автоматного отображения. Построив инициальный автомат, индуцирующий это отображение, представим начальную автоматную систему событий выходными символами построенного таким образом автомата. Для того чтобы событие 5 в алфавите X представить в автомате, необходимо рассмотреть систему событий {5, F(X)\(Su {е})}, которая, очевидно, является автоматной системой. Следовательно, событие S можно представить в автомате. Из всего сказанного следует такое утверждение. Теорема 5.2.4. Всякое событие может быть представлено выходным сигналом некоторого, вообще говоря, бесконечного инициального автомата Мили. Всякая автоматная система событий допускает представление в инициальном автомате Мили.
Глава 5. Абстрактная теория автоматов 329 5.2.3. Автоматы Мура Выше говорилось, что Х-К-автомат называется автоматом Мура, если его функция выходов выражается функцией переходов Да, х) с помощью уравнения g{a, х) = z(/(a, *)), где z— функция отметок состояний. Значение функции z(a) в состоянии а называется отметкой этого состояния. Хотя автоматы Мура представляют собой отдельный случай автоматов Мили, но с точки зрения индуцированных этими автоматами отображений они оказываются не беднее автоматов Мили. Теорема 5.2.5. Для всякого автомата Мили А = (А, X, Y, fA, g^ существует эквивалентный ему автомат Мура В. Доказательство. Возьмем за множество состояний автомата В множество А х К и зададим функции переходов и выходов такими правилами. Если gA(a, х) = у' и/А(а, х) = а', то положим /д((я, у), х) = (а\ у'), gB((a, у), х) = gA(a, x) = /. Из такого определения функций fB и gR видно, что если на множестве AxY ввести функцию отметок z с помощью равенства z((a, у)) = у, то для функции gB будет выполняться соотношение £д((я» У), х) = z(fe((a, у), х))9 которое означает, что автомат В является автоматом Мура. Теперь индукцией по длине входного слова покажем, что состояние а и (а, у) (у— произвольный символ из Y) индуцируют одно и то же отображение. Пусть р = jc; Xi ... xt — произвольное входное слово, и пусть uj , aj,..., aj — последовательность состояний автомата А, такая что ah = а, и ajk+i = fA(aJk, xik) для; = 1, ..., п. Вследствие равенства #д((я, у), х) = gA(a, x) для слов, состоящих из одной буквы, образы отображений иа и ща< у) совпадают. Допуская, что это справедливо для слова р длины и, покажем, что образы этих отображений совпадают и для слова хр большей длины. Исходя из свойства отображений Ua(xp) = UaMUaxip) и Ща,у)(хр) = Ща,у)(х) Щ(а,у),х)(р)> а также из определения функции переходов /д((я. У)» х) = Ша> х), у)
330 Часть II. Математические модели и нашего предположения, имеем uax(p) = щах>у>)(р), а значит, иа(хр) = ща%у)(хр). Теорема доказана. Возможен и другой путь построения автомата В. Поставим в соответствие каждому состоянию а автомата А множество {а} и {(д, х) \хе X}. Объединение всех таких множеств примем за множество состояний автомата В, а функции /д и gB переходов и выходов этого автомата зададим с помощью равенств: М а,х) = (я, х)9Ща9 х)9 х) = (fA(a, х)9 х'); gB( ayx) = gA(a9 х)9 gB((a9 х)9 х) = gA(fA(a9 х)9 х). Обозначим через z функцию отметок, сопоставляющую состоянию (а, х) автомата В отметку gA(a, x). Теперь справедливы равенства: g8( a9x) = z(/b( а , *)); gB((a9 х)9 х) = z(fB((a, x)9 х)). Следовательно, построенный автомат является автоматом Мура. Индукцией по длине входного слова р можно показать, что для всякого х Е X состояния а и а эквивалентны и состояния ах и (а, х) эквивалентны. Оба способа построения автомата В по автомату А имеют право на существование, поскольку если автомат А конечный, то и автоматы Мура, построенные обоими способами, также будут конечными, но в зависимости от числа символов в алфавитах X и Y будут иметь разное число состояний. В одних случаях более экономный автомат дает первый способ построения, а в других— второй способ построения. Следствие 5.2.2. Если автомат Мили А конечный и имеет п состояний, то существует эквивалентный ему автомат Мура В с k- n состояниями, где к — число символов выходного алфавита. Следствие 5.2.3. Если автомат Мили А конечный и имеет п состояний, то существует эквивалентный ему автомат Мура В с (т + \)п числом состояний, где т — число символов входного алфавита. Автоматы Мура, как и автоматы Мили, можно задавать таблицами переходов и выходов. Но для автоматов Мура существует и более компактный способ задания. Действительно, функция отметок автомата Мура однозначно задается функциями переходов и выходов для всех тех состояний, которые являются значениями функции переходов. Для всех остальных состояний автомата функция z(a) может быть неопределенной. В дальнейшем условимся доопределять функцию z{a) на все множество состояний автомата Мура и задавать
Глава 5. Абстрактная теория автоматов 331 автомат не функциями переходов и выходов, а функциями переходов и отметок. При необходимости функцию выходов можно определять с помощью равенства g(a, х) = z(j{a, х)). Для автоматов Мура функция переходов задается уже известными таблицами переходов или отметками дуг на диаграммах переходов. Функцию отметок можно задавать проще, чем функцию переходов. Для этого, как правило, состояниям автомата Мура в таблицах переходов сопоставляют определенные отметки или в случае диаграмм отмечают вершины диаграммы этими отметками. Пример 5.2.1 Таблица переходов и отметок автомата Мура Отметка Состояние х у и а Ь а v v Ь Ь 1^}—•-—^Е) Рис.5.2.1. Диаграмма переходов и отметок ^ При работе с автоматами Мура следует принимать во внимание, что хотя подавтомат автомата Мура и изоморфный образ автомата Мура тоже будут автоматами Мура, свойство автоматов быть автоматами Мура не сохраняется, в частности, при гомоморфизмах автоматов. Отсюда следует, что автомат, эквивалентный автомату Мура, может не быть автоматом Мура, а алгоритм построения приведенного автомата может давать автомат, который не является автоматом Мура. В связи с этим в теории автоматов Мура вводятся специальные понятия: муровская эквивалентность и муровский гомоморфизм. Состояния а и d одного либо двух разных автоматов Мура называются му- ровски эквивалентными, если они имеют одну и ту же отметку и эквивалентны в обычном понимании. Два автомата муровски эквивалентны, если для каждого состояния одного автомата найдется муровски эквивалентное ему состояние другого автомата, и наоборот. Гомоморфизм Л: А —»А' автомата А в автомат А' называется муровским, если он сохраняет функцию отметок, т. е. для всякого а е А справедливо z'(h(a)) = z(a).
332 Часть II. Математические модели Автомат Мура называется муровски приведенным, если все его состояния муровски попарно неэквивалентны между собой. Для автоматов Мура имеют место аналоги теоремы 5.1.4 и теоремы о приведенном автомате. Теорема 5.2.6. Если И: А —> В— муровский гомоморфизм автомата А на автомат В, то автоматы А и В муровски эквивалентны. Доказательство следует из определений. Теорема 5.2.7 (о приведенном автомате Мура). В классе К(А) всех автоматов, муровски эквивалентных заданному автомату А, существует один и с точностью до муровского изоморфизма, только один приведенный автомат, на который муровски гомоморфно отобраэюаются все автоматы из этого класса. Для автоматов Мура, у которых выходные сигналы совпадают с отметками состояний, удобнее говорить о представлении событий множествами состояний, а не выходными сигналами. Будем считать, что событие S в алфавите X представлено в инициальном автомате Мура А множеством его состояний F, если входной алфавит автомата А совпадает с X, а 5 состоит из тех и только тех слов, которые переводят автомат А из начального состояния в состояния из множества F. Следует заметить, что если начальное состояние принадлежит множеству заключительных состояний F, то событие, представляемое множеством F, будет включать пустое слово, чего не могло бы быть при представлении событий выходными сигналами. Теорема 5.2.8. Если событие S представлено в инициальном автомате Мура выходным сигналом у, то событие, которое возможно пополнено лишь пустым словом, представляется в этом же автомате множеством всех состояний, отмеченных выходным сигналом у. Если событие S представлено в инициальном автомате множеством состояний F, то, определяя функцию отметок так, чтобы она принимала значение у на всех состояниях множества F и только на таких состояниях, получим инициальный автомат Мура, у которого событие S, кроме пустого слова (если ао £ F), представляется выходным сигналом у. Доказательство. Пусть F— множество всех состояний автомата А, имеющих отметку у, a S(ao, F) — множество всех слов, которые переводят автомат А из начального состояния ао в одно из состояний множества F. Пусть рх — произвольное слово, такое, что слово g(ao, рх) заканчивается символом у (обозначим Sy событие, состоящее из всех таких слов рх). Тогда вследствие равенства g(f(a0, р), х) = z(f(a0, рх)) можно утверждать, что f(a0, px)e F и рх е S(flo, F)9 т. е. Sy с S(a0, F).
Глава 5. Абстрактная теория автоматов 333 Пусть теперь рх е S(ao, F), тогда g(f(a09 р), х) = z(f(a0, px)) = у и, значит, слово/?jc е Sy. Таким образом, события Sy и 5(ао, F) равны с точностью до пустого слова е. Теорема доказана. Теорема 5.2.8 позволяет ограничиться рассмотрением событий, представляемых в автоматах множествами состояний. Функции выходов при этом не играют никакой роли и поэтому в дальнейшем, рассматривая события, представляемые в автоматах, будем рассматривать автоматы без выходов, или ^-автоматы. Подводя итог, подчеркнем, что, рассматривая детерминированные автоматы без выходов с точки зрения представления событий множеством состояний таких автоматов, мы не ограничиваем общности рассмотрения. 5.2.4. Недетерминированные автоматы Недетерминированным автоматом (недетерминированным Х-У-автоматом) называется четверка (А, X, У, /?), где Л, X, У— соответственно множество состояний, входной и выходной алфавиты автомата, а/?сЛхХхУхЛ — его отношения переходов и выходов. Теперь очевидно, что если представить отношение R как {(a, х, g(a, jc), /(а, *))}, то детерминированный автомат можно рассматривать как недетерминированный. Инициальный недетерминированный автомат— это недетерминированный автомат с выделенным начальным состоянием до, задаваемым в виде пятерки (Л, X, У, /?, яо). Если (я, х, у, а') е /?, то говорят, что входной символ х может перевести автомат А из состояния а в состояние а и выдать на выходе символ у. Недетерминированные автоматы, как и детерминированные, удобно задавать с помощью диаграмм переходов и выходов. Недетерминированный Х-У-автомат называется частичным, если существует такое состояние а и такой входной символ л:, что отношение R не имеет ни одной четверки, у которой первые два компонента равны а их. Если алфавит Y состоит лишь из единственного выходного символа, то это отдельный случай недетерминированных автоматов— недетерминированные автоматы без выходов. Эти автоматы представляют собой тройки вида (Л, X, /?), где Л, X— множество состояний и входной алфавит, аЛсЛхХхЛ — отношение переходов. Аналогично расширенным функциям переходов и выходов детерминированных автоматов можно рассматривать расширенные отношения переходов и выходов недетерминированных автоматов. Отношение /?* с А х F(X) x F(Y) x А называется расширением отношения переходов и выходов /?, если для произвольной
334 Часть II. Математические модели четверки (я, х\Хг...хп, у\уг---ут> a) e R* выполняется равенство т = п и существует такая последовательность состояний яь аг, ••» Дл + ь что Я]=я, (я,,*,, у/, a,-+i)e /?для /= 1,2, ...,ииа„ + 1 = я'. Для недетерминированных автоматов без выходов вводится расширенная функция переходов £?*: А х F(X) —> 5(Л), где в(Л)— булеан множества А, которая также называется расширением функции переходов Q: АхХ —> В(Л) и задается таким образом: для каждого слова р = х\х2.. .хп е F(X) и а е (?*(я, р) можно указать такую последовательность состояний а\, #2, ..., ап + \9 что а = а,, а/+, е £(я„ *,) для / = 1, 2,..., пиап + \=а. Инициальным настроенным недетерминированным Х-автоматом (автоматом без выходов) (Л, X, Q, яо, F) называется Х-автомат (А, X, 0, у которого состояние яо взято за начальное, а в качестве множества заключительных (финальных) состояний принято Fez А. Событие S называется событием, представленным в автомате (Л, X, Q, яо, F), если оно состоит из тех и только тех слов р, для которых Q * (я0, р) включает хотя бы одно состояние из F. Инициальные недетерминированные Х-автоматы А к В называются эквивалентными, если для всякого подмножества А из А найдется такое подмножество В из В, что события, представленные в настроенных Х-автоматах (А, X, QA, я<ь А) и (5, X, QB, b0, В), совпадают, и наоборот. Два состояния я и я' недетерминированного Х-автомата (А, X, Q) называются эквивалентными, если при выборе произвольного подмножества F из А в качестве множества заключительных состояний настроенные Х-автоматы (А, X, Q,a,F)u (А, X, <2, a, F) представляют одно и то же событие. С теоретической точки зрения достаточно важным является утверждение, устанавливающее равносильность детерминированных и недетерминированных автоматов при представлении событий в конечных автоматах. Теорема о детерминизации. Для всякого инициального недетерминированного Х-автомата А существует эквивалентный ему детерминированный инициальный Х-автомат В, причем, если автомат имеет п состояний, то автомат В может быть построен так, что число его состояний не превышает величины 2п. Доказательство. Пусть (А, X, QA, я0)— недетерминированный Х-автомат и В(А) — булеан множества состояний А. На В(А) введем отношение достижимости: множество А" достижимо из множества А', если существует слово р е F(X) такое, что л"= ие*(*.р). аеА'
Глава 5. Абстрактная теория автоматов 335 За множество состояний искомого детерминированного Х-автомата В возьмем множество всех состояний, достижимых из множества Ао = {а0}. Множество {ао} будет служить начальным состоянием автомата В. Функцию переходов автомата В представим с помощью равенства /в<Ах)= \jQ(a,x)9 aeA где А — некоторое состояние автомата В. Пусть А — произвольное подмножество из А9 и пусть с — все подмножества А, достижимые из {яо}, и такие, что их пересечение с А непустое. Покажем включением в обе стороны, что события, представленные в Х-автоматах (А, X, £д, а0, А ) и (В, X, QB, {а0}, В), совпадают. Пусть слово р = х\Х2.. .хп такое, что <2д(яо, р) <~\ А Ф 0. Это означает, что существует последовательность состояний ао, а\, ..., ап = а такая, что fl,4ie Оа(яь Xi + \) для / = 0, 1, ..., п - 1. Но тогда множество, представляющее состояние /в({ао}, р), должно включать состояние а\ а значит, а должно принадлежать В. Наоборот, пусть для р = х\Х2...хп состояние/д({до}; р) принадлежит множеству В. Это значит, что множество, представляющее это состояние, включает некоторый элемент а из А . Тогда из определения достижимости множеств и способа задания функции Q* индукцией по длине слова р можно построить последовательность а = а„, а„_ь •••, яо такую, что а(е/в(ао, х\ x2...Xi), а это означает при / = п, что Qa * (яо, р) п А Ф 0. В завершение доказательства этой теоремы заметим, что множество, состоящее из п элементов, имеет Т подмножеств и, значит, число состояний автомата В не превышает 2п. Важно то, что оценка 2я является точной верхней оценкой [24]. Следовательно, переход от недетерминированного автомата к соответствующему детерминированному дает экспоненциальный рост числа состояний. С практической точки зрения это может значительно усложнить работу, поэтому часто пользуются недетерминированными автоматами, поскольку для представления событий эта модель требует намного меньшего числа состояний автоматов. 5.2.5. Задачи и упражнения 1. Дайте полные доказательства теорем 5.2.3, 5.2.4. 2. Дайте полное доказательство теоремы 5.1.5.
336 Часть II. Математические модели 3. Покажите, что для отображений z и А, заданных равенствами z(p)=pp (удвоение слова р)\ h(p) = //, где р получено из р изъятием всех вхождений некоторой буквы входного алфавита, существует более экономная процедура выравнивания длины слов, чем стандартная. 4. Постройте граф и таблицу переходов для конечного автомата, который представляет: • все четные числа в двоичной системе исчисления; • все нечетные числа в двоичной системе исчисления. 5. Пусть Х= {О, 1}, a S— множество всех слов из F(X), задающих в двоичной системе исчисления четные числа, и S'— слова из F(X), задающие в двоичной системе исчисления нечетные числа. Будет ли {5, S'} автоматной системой событий?
Глава 6 Теория конечных автоматов В данном разделе рассматриваются основные положения теории конечных автоматов. Приводятся эффективные алгоритмы синтеза и анализа конечных автоматов, а также алгоритмы их минимизации. 6.1. События, алгебра регулярных событий. Основная теорема теории конечных автоматов 6.1.1. Регулярные события Напомним, что событием в алфавите XНазывается произвольное множество S слов из полугруппы F(X). Говорят, что событие S представлено в автомате В множеством заключительных состояний F тогда и только тогда, когда (\/р е S)J{a, p) е F. Пара S(£/(X), W) называется алгеброй событий в алфавите X, если ее носителем U(X) является множество всех событий в алфавите X, a W включает две бинарные операции: дизъюнкцию и умножение, и одну унарную — итерацию. Дизъюнкцией SvS\ двух событий S и Si называется теоретико- множественное объединение событий S и S\9 т. е. S v Si = S u S\. Произведением S * 5i событий S и S\ называется событие, состоящее из всех слов вида pq, где р, q — произвольные слова из S и S\ соответственно, то есть S * S\ = {pq\p E S, q E Si}. Например, всякое слово вида xlx2...xk можно представить в виде произведения слов, состоящих из одной буквы: (jci) * (*2) * ... * (jq). Отсюда следует, что перестановка множителей в операции произведения событий в общем случае может не сохранять результат, то есть эта операция некоммутативна. Очевидно, что если операции дизъюнкции
338 Часть II. Математические модели и произведения применить к конечным событиям, то в результате получим снова конечные события. Итерацией {S} события 5 называется событие, состоящее из пустого слова е и всех возможных слов вида р\рг...рь где ри рг, -•••> Рк— произвольные слова из 5, а к — произвольное натуральное число из N+. Основное свойство операции итерации состоит в том, что оно дает возможность строить бесконечные события из конечных. Например, итерация события х е X дает неконечное множество слов Пустое множество слов называется невозможным событием. Из определения операции итерации следует, что итерация пустого слова и невозможного события является пустым словом, т. е. {е} = {0} = е. Элементарным событием в алфавите Х- {х\, хг, ..., хт} называется одно из m + 1 одноэлементного события е, хи хг, ..., хт, где е — пустое слово. Всякое событие, которое можно получить из элементарных применением любого конечного числа операций дизъюнкции, произведения и итерации, называется регулярным событием, или регулярным множеством слов, а всякое его задание через элементарные события и три указанные операции — регулярным выражением. Непосредственно из определения операций алгебры регулярных событий следуют такие тождества: □ AlSvT=TvS\SvS = S; □ A25v(rv/0 = (5vr)vF;5*(r*F) = (S*7)*^; □ A3(5vr)*F = 5*FvT*F;5*(rvF) = 5*rv5*F; □ А4 {{5}} = {S}; {S}=evS* {5}; S * {5} = {S} * S; □ А5{{5}{Г}} = {5уГ};{5}*{5} = {5}; {S)vS={S}'{e}=e- □ A6S*e = e*S = S;S*0 = 0*S=0;Sv0 = S;{0}=e. Иногда в алгебре событий рассматривают и другие операции, не относящиеся к числу основных. Чаще всего вводятся унарная операция дополнения и бинарная операция пересечения событий. Дополнением S' события 5 в алфавите X называется множество всех слов из F(X)9 не входящих в 5. Пересечением S nS\ событий S и S\ называется событие, которое состоит из всех таких слов, что одновременно входят в оба события — S и S\.
Глава 6. Теория конечных автоматов 339 Заметим, если операция пересечения событий замкнута на множестве всех конечных событий, то операция дополнения не является таковой на этом множестве. Рассматривая регулярные выражения, условимся называть одночленом регулярное выражение, в котором операция дизъюнкции не является последней из выполняемых операций. Дизъюнкция двух или большего числа регулярных выражений называется многочленом алгебры регулярных выражений. Например, одночленами являются выражения {5}, ST, (Sv T)Q, а выражения (S v QR v R{S}) и (ST v SR) будут многочленами: первый состоит из трех одночленов, а второй— из двух. Следует заметить, что выражения STv SR и S(Tv R) представляют одно и то же событие, хотя первое из них— многочлен, а второе — одночлен. Циклической глубиной регулярного выражения называется длина его максимальной последовательности подчиненных одна другой итераций. При этом первый знак итерации считается подчиненным второму, если первый входит в выражение, находящееся под знаком второй итерации. Например, если регулярные выражения Р, Q, R имеют циклическую глубину ноль, то циклической глубиной выражений {Р} v P{Q] v R будет единица, {{/>}S}— два и Pv RS—ноль. Циклическа глубина регулярного события вводится как наименьшая циклическая глубина регулярных выражений, представляющих данное событие. В частности, регулярные выражения {{*}{)>}} и {(х v у} представляют одно и то же регулярное событие, но имеют разную циклическую глубину, и поэтому циклическая глубина этого события отвечает второму, а не первому выражению. То, что это событие не может иметь глубину ноль, следует из простого утверждения. Утверждение 6.1.1. Конечные события, и только они, имеют нулевую циклическую глубину. Доказательство предлагается как простое упражнение (см. упр. 1 в конце раздела). Понятие циклической глубины дает возможность упорядочить события по сложности. Событие S сложнее, чем событие Г, если циклическая глубина первого больше, чем циклическая глубина второго. 6.1.2. Теорема анализа конечных автоматов Между конечными автоматами и регулярными множествами существует тесная связь, которая выражается таким утверждением. Теорема 6.1.1. (Основная теорема теории конечных автоматов). Класс регулярных событий совпадает с классом конечно-автоматных событий [8].
340 Часть II. Математические модели Доказательство этой теоремы производится путем построения двух алгоритмов: алгоритма анализа, который строит регулярное выражение для события, представленного в данном автомате, и алгоритма синтеза, строящего по регулярным выражениям конечный инициальный автомат, который представляет заданное этим выражением событие некоторым множеством своих состояний. Часто утверждения о включении регулярных событий в конечно- автоматные события, и наоборот, выделяют как отдельные и называют соответственно теоремами анализа и синтеза. Теорема анализа конечных автоматов. Пусть А = (А, X, f, ао, F) — конечный настроенный Х-автомат с множеством состояний {ао, aj, ..., ап}, a Sy обозначает событие, состоящее из всех таких слов в алфавите X, которые переводят автомат А из состояния я, в состояние я7. Для построения регулярного выражения события, представленого в автомате А, вследствие равенства S(a0, F) = [JS0j достаточно построить регулярное выражение для событий Sy (i, j -0, 1,2, ..., п). Для всякого словар = х\Х2...хп е Sy множество состояний {f(ah x\),f(ah x{x2), ...,/(а„ *iJC2..jc„_i)} будем называть промежуточными при переходе автомата^ из состояния я, в состояние я, под действием слова р. Пусть Stj (Uj =1,2, ..., п\ к = 0, 1, ..., п) обозначает событие, состоящее из тех и только тех слов, которые переводят автомате из состояния я, в состояние о,- и используют при этом состояния яь в2, •••, я* как промежуточные. В частности, если /: = 0, то Sy означает событие, состоящее из тех слов, которые переводят автомат А из состояния я, непосредственно в состояние я, (то есть без каких-либо промежуточных состояний). Отсюда следует, что S^ можно записать в виде с0 ее (*' еСЛИ ' = J' Su = V XV SU ГДе 5;: = < J f(ahx)=aj J J [0, еСЛИ l * j. Следовательно, Sy — регулярное событие, причем регулярное выражение может быть найдено непосредственно по таблице переходов (или диаграмме переходов) автомата. Допустим, что для всех событий S,"1, у которых верхний индекс принимает значения 0, 1, ... Д - 1, их регулярность уже доказана. В данном случае регулярные выражения для событий S^ (i, j = 1, 2, ..., п) можно найти, используя рекурентные соотношения Si} = 4"1 v SikX (skkX}SkkiX (i,j = h 2,.... n). (6.1.1.)
Глава 6. Теория конечных автоматов 341 Действительно, из выражения (6.1.1) следует, что слова, составляющие правую часть /-го соотношения, переводят автомат А из состояния я, в состояние я, и используют при этом состояния яь #2, • • •> я* как промежуточные, т. е. о* — с*~1 ч/ rk-\ink-\\ nk-\ Наоборот, пусть слово р переводит автомат А из состояния я, в состояние я, через промежуточные состояния яь ...,я*. Если состояние я* среди промежуточных состояний не встречается, то р е Sy~ . В противном случае слово р можно записать в виде р = р\рг- • Ри где слово /7/ переводит автомат А из состояния я, в состояние я*, каждое из слов рг, ..., /?/_i переводит автомат из состояния я* в состояние я* и слово pi переводит автомат из состояния ак в состояние я,, причем состояние я* при всех этих переходах не встречается среди промежуточных состояний. А это означает, что Р\ Е sik > Рг> Рз> — Pi-\ G skk > Pi E skj~ • Таким образом, доказано, что произвольное слово р из S- входит в SJj~l v Sik~l{SJ£l} S%j~l, т. е. рекурентные соотношения (6.1.1) существуют. Теперь заметим, что Sy = Sy . Теорема доказана. Из теоремы анализа можно получить алгоритм анализа конечных автоматов. Исходя из данного автомата и соотношений (6.1.1), этот алгоритм задает ре- гулярное выражение для события вида Sy . А регулярное выражение для события, представленного в этом автомате, находится в виде дизъюнкции (v Sqj), где j пробегает все значения состояний из множества заключительных состояний F. Необходимо заметить, что при использовании этого алгоритма на практике совсем не обязательно искать регулярные выражения для всех Sy, а лишь для тех, которые необходимы при построении события, представленного в автомате. Необходимые события можно выделить, если двигаться "с конца" — от события, нас интересующего, и спускаться к более простым событиям (у которых меньше значение параметра к). После этого, двигаясь от более простых к более сложным событиям, строим регулярные выражения для всех необходимых событий. В процессе этого построения можно применить тождественные соотношения, упрощающие регулярные выражения. В частности, чтобы
342 Часть II. Математические модели понизить циклическую глубину выражения, необходимо применить соотношения {0} =е и {е} =е. Пример 6.1.1 Применим алгоритм анализа к автомату А, диаграмма переходов которого изображена на рис 6.1.1. Начальным состоянием автомата является состояние 1, а заключительными состояниями — состояния 2 и 3. Рис. 6.1.1 Искомое событие 5д, представленное в автомате А9 очевидно, будет иметь вид SA = Sj*2 v S,43. Применяя рекурентные соотношения (6.1.1), получаем 5Д = fe v S?A[Sl)Sl2)v fe v S?4[Sl)Sl3). Из диаграммы переходов автомата видно, что из состояния 4 нельзя перейти ни в какое другое состояние, и поэтому события 542 и S43 невозможны. Вследствие соотношения 5*0 = 0 регулярное выражение упрощается до такого: SA =5,39vS3 >12 13- Используя формулу (6.1.1), найдем выражение для S12 и 513: ^12 = $\2 V ^1з{^33}^32* $\3 = ^13 v ^1з(^33 }^32- 2 2 2 2 Теперь строим выражения для 512, S13, S33, S32 : ^12 = ^12 v ^12{^22}^22^ ^13 = ^13 v ^12(^22}^23i ^33 = ^33 v ^32{^221^23» S32 = S32 v 532{522}522. (6.1.2) (6.1.3) (6.1.4)
Глава 6. Теория конечных автоматов 343 Необходимо построить выражения для S{2, S22, S\3> ^23» $32» ^зз: Sl2 = S?2vS?]{S?l}S?2=xv0{0}0 = x', S\2 = S°2 v s£, {Sfi }S?2 = 0 v 0{0}x = 0 ; 5113=51o3v51O1{51o1}S1O3 = };v0{0}y = r, 523 = 52O3v52O1{51O1}51°3 = yv0{0}y = y; 5^2 = 53O2v53O1{51O1}51O2=xv0{0}x = x; 5^з = 53°3 v s£ {5,°, }S,°3 = 0 v 0{0}>> = 0. Подставляя найденные выражения в систему (6.1.4), находим: 5,122=jcvjc{0}0 = jc; Sj23 = у v д:{0}у = у v jcey = у v xy ; 523 = 0 v х{0}у = 0 v jc^y = ху ; 5322 = jc v jc{0}0 = х v 0 = jc . Аналогично находим выражения системы (6.1.3): S\2 = х v (у v ху){ху}х = е v (у v е){ху)х \ S?3 = (yvxy)v(yvxy){xy}xy = (evx)y(ev{xy}). Окончательно имеем SA = (ev(yv е) {ху}) xv(evx)y(ev {ху}). < 6.1.3. Теорема синтеза конечных автоматов Для доказательства этой теоремы пользуются теоремой о детерминизации недетерминированного Х-автомата. Для этого необходимо показать, что для всякого регулярного выражения найдется настроенный недетерминированный Х-автомат, который представляет то же регулярное событие, что и данное выражение. Существование такого автомата доказывается индукцией по числу операций в начальном регулярном выражении и следует из таких утверждений. Лемма 6.1.1. Невозможное событие 0 и все элементарные события в алфавите Xявляются конечно-автоматными. 12 3ак. 3427
344 Часть II. Математические модели Доказательство этой леммы следует из того, что мы можем непосредственно привести диаграммы переходов автоматов А(0), А(е) и А(х), представляющих соответственно события 0, е и хЕ А" (см. рис. 6.1.2). На рис. 6.1.2 начальные состояния автоматов находятся слева. Заключительные состояния обозначены звездочкой внутри соответствующей вершины диаграммы. Отсутствие отметок у некоторых дуг диаграммы означает, что переходы, соответствующие этим дугам, могут совершаться под действием любого входного сигнала. go о. окзэ. Рис. 6.1.2. Диаграммы переходов автомата: а—А(0); б—А(е); в—А(х) Лемма доказана. Лемма 6.1.2. Если события S и Т— конечно-автоматные, то события S vT, ST и fS} молено представить в конечных настроенных недетерминированных автоматах. Доказательство этой леммы сводится к разработке правил композиции автоматов, согласно с которыми по автоматам A(S) и А(Т) строятся автоматы A(SvT\A(ST)hA({S})A Пусть A(S) = (A, X,f, До. F\ А(Т) = (В, X,/', Во, Г) — автоматы, представляющие события S и Г соответственно, и в которых Ао, В0 — множества начальных состояний, a F и F'— множества заключительных состояний. Построение автоматов A(S v Г), A(ST) и Л({5}) будем проводить по таким правилам [83]. Правило 1 (Построение автомата A(S v T). Недетерминированный настроенный автомат A(S v Г), представляющий событие S v Г, строится так: A(S v 7) = (/4и В, X, g, A0u B0, Fuf), где функция переходов g задается с помощью равенств \f(ay jc), если ае A(S), g(a9x) = \ [/(а,;с), еслиаеЛ(5).
Глава 6. Теория конечных автоматов 345 Рис. 6.1.3. Схема построения диаграммы переходов недетерминированного автомата A(S v T) по диаграммам переходов автоматов A(S) и А(Т) Графическое изображение этой композиции автоматов дано на рис. 6.1.3. Доказательство того, что автомат A(SvT) представляет событие (SvT), очевидно, поскольку всякое слово, которое раньше переводило начальное состояние одного из автоматов в одно из заключительных состояний того же автомата, теперь будет переводить это начальное состояние (как начальное состояние автомата A(Sv T)) в одно из заключительных состояний (заключительное состояние автомата) A(S v Г). Правило 2 (Построение автомата A(S * Т)). Автомат A(S * Г), представляющий событие (S * Г), строится так: A(S * Т) = (А и В, X, g, Ао , F), где g(a,x) = f(a, jc), если a e А и a £ F, ( \ f(a9x)u\ U/' [аеВ0 f'(a, jc), если а Е В\ ,еслиаЕ F, — \Aq, если е£ 5, Ао = i [AqUB0, если ее 5; — Г/^еслие^З, ~[FuF/,eGJiH£?eS'. Следовательно, функция переходов автомата A(S * Г) совпадает с функциями переходов автоматов A(S) и А(Т) для состояний, не являющихся заключительными д^1я автомата А(5). А для заключительных состояний автомата A(S) переход под действием сигнала х е X может быть осуществлен во все состояния, в которые он мог бы быть осуществлен в автомате A(S), а также во все те состояния, в которые можно попасть из любого начального состояния автомата А(Т) под действием того же сигнала х (приводится схема построения диаграммы переходов автомата A(S * Т) по диаграммам переходов автоматов A(S) и А(Т) в случае, если её S и е g Г (рис. 6.1.4)).
346 Часть II. Математические модели Покажем, что построенный таким образом автомат A(S * Т) представляет событие S * Т. Рассмотрим случай, когда е £ S и е £ Т. Пусть р — слово из (5 * Г), тогда его можно записать в виде р = р\хр2, где р\ е 5, хрг е Г, и указать состояния ао, я*, b0 и fe* такие, что Дао, Р\) = а и/'(Ьо, хр2) = Ь*. Рис. 6.1.4. Схема построения диаграммы переходов автомата A(S * Т) по диаграммам переходов автоматов A(S) и А(Т) в случае, когда е g S и е g Г На рис. 6.1.4, кроме уже перечисленных состояний, выделим состояние я, в которое автомат А(Т) переходит из bo под действием первого символа слова хр2. Из построения автомата A(S * Г) следует, что из состояния а можно перейти в состояние а под действием символа лг, но это означает, что под действием слова р =р\хр2 (как видно из рис. 6.1.4) можно перейти из яо в Ъ . Значит, ps S * Т. Наоборот, пусть р—- слово, которое переводит автомат A(S * Г) из начального состояния яо в заключительное состояние Ъ . В процессе этого перехода выделим моменты, когда автомат A(S * Т) последний раз был в состоянии из множества А и первый раз — в состоянии из множества В. Состояния автомата A(S * Г) в эти моменты обозначим а* и а, через х обозначим символ, который переводит автомат A(S * Т) из состояния а в состояние а , и через р\ и * — * /72 слова, которые переводят автомат A(S * Т) из яо в а и из а в о . Но тогда из построения автомата A(S * Т) р\ Е S, р -р\хрг и во множестве 50 найдется состояние bo такое, из которого под действием символа х можно перейти в состояние а . А это означает, что хрг £ Т, ар Е S * Т. Случаи, когда одно из событий — S или Г, или оба сразу включают пустое слово е, требуют незначительных вспомогательных дополнительных рассуждений, связанных с расширением множества начальных или заключительных состояний, и их рассмотрение предлагается как упражнение (см. упр. 3 в конце раздела).
Глава 6. Теория конечных автоматов 347 Правило 3. (Построение автомата A({S}).) Автомат А({5}), представляющий событие {S}, можно получить из автомата А(5) в результате таких действий (рис. 6.1.5): □ расширение множества состояний автомата A(S) состоянием 0, которое будет единственным начальным состоянием автомата А({5}); □ расширение множества заключительных состояний за счет состояния 0; □ расширение области значений функции переходов для заключительных состояний и дополнения ее для состояния 0 с помощью равенств g(a,x) = (J/(a, х), если a = 0; аеА0 f(a, x), если a E А и a £ F\ ( ^ f(a*x)v JJf(a9x) aeAo [если а б F. Рис. 6.1.5. CxeWia построения диаграммы переходов автомата 4({S}) по диаграмме переходов автомата A(S): дополнительные переходы; 0 — дополнительное состояние, которое для автомата 4({S}) является начальным состоянием; хр ' — слово события S; а/ (/ = 1, 2, .... /с) — состояние, в которое переходит A(S) из некоторого начального состояния под действием некоторого входного символа Докажем, что построенный таким образом автомат А({5}) представляет событие {S}. Если р е {5}, т. е. р=р\Р2...рь где ри Рг, ••-, Рк е 5, то найдутся пары (#0, а*),..., (ао, al)> первые компоненты которых являются элементами из А0, а вторые — элементами из множества F, и такие, что слова pi (i= l, 2, ..., к) переводят автомат A({S}) из состояния al0 в состояние at . Можно считать, что слова pi непустые, т. е. /?,- = хр', х{ е X. Но тогда, если обозначить через at (i = 1, 2, ..., к) состояние, в которое автомат A({S}) переходит из al0
348 Часть II. Математические модели под действием первого символа слова ph то нетрудно убедиться (см. рис. 6.1.5), что под действием символа х, автомат A({S}) перейдет из 0 в <ц, после этого под действием р,— в состояние а, , под действием хг— в состояние Я2, и наконец, под действием слова /?* из состояния ak — в состояние ak . А это значит, что словор является представленным в автомате A({S}). Обратное утверждение о том, что слово, представленное в автомате Л({5}), принадлежит {S}, доказывается аналогично. Для этого необходимо лишь разбить слово/?, которое переводит автомат A({S}) из состояния 0 в одно из заключительных состояний, на части в соответствии с моментами времени, когда под действием следующего символа слова/? автомат A({S}) переходит из некоторого заключительного состояния в состояние, куда под действием того же входного символа возможен переход из некоторого состояния, начального для автомата A(S) (см. упр. 4 в конце разд.). Следовательно, доказательство леммы 6.1.2 закончено, а вместе с ним и доказательство теоремы синтеза и основной теоремы теории конечных автоматов. Из приведенного выше доказательства теоремы синтеза легко найти алгоритм синтеза настроенных автоматов по данному регулярному выражению. Суть этого алгоритма состоит в последовательном применении правил 1-3 соответственно к данному регулярному выражению. Рассмотрим пример. Пример 6.1.2 Синтезировать автомат, который представляет событие S = (xv у){х}. Для синтеза автомата А(5), представляющего событие 5, необходимо построить автоматы А(х) и А(у), которые представляют события х и у соответственно. А далее, пользуясь правилами 1-3, по автоматам А(х) и А(у) построить автоматы А(х v у), А({х}) и, наконец, автомат Д(5). Строим автоматы А(х) и А(у) (рис. 6.1.6). Применяя правила 1 и 3, строим автоматы А(х v у) и Л({л:}) (рис. 6.1.7). Рис. 6.1.6. Графы переходов автоматов: а—А(х)\ б—А(у)
Глава 6. Теория конечных автоматов 349 Рис. 6.1.7. Графы переходов автоматов: а —А(х v у); б — А({х}) Состояния, из которых недостижимы заключительные состояния, называют тупиковыми. Заметим, что в процессе синтеза автомата можно удалять тупиковые состояния. Событие, которое представляется в данном автомате, очевидно, не изменяется, а число состояний автомата может уменьшиться, что довольно существенно для дальнейшего процесса детерминизации автомата и наглядности диаграммы переходов. Правда, автомат после изъятия тупиковых состояний может стать частичным. Учитывая это замечание, автоматы А(х v у) и Л({д:}) можно упростить (рис. 6.1.8). Теперь строим автомат/4(5), пользуясь правилом 2 (рис. 6.1.9). о о Q о о, Оэ б Рис. 6.1.8. Графы переходов автоматов: а —А(х v у); б —А({х}) Рис. 6.1.9. Графы переходов автомата A(S): a — с применением правила 2; б — окончательный вид
350 Часть II. Математические модели При построении автомата A(S) были удалены состояния, недосягаемые из начальных состояний автомата. Мотивация этого удаления такая же, как и для тупиковых состояний. Как уже отмечалось, автомат, полученный в результате синтеза, может быть частичным и к тому же в некотором подалфавите основного алфавита. В этом случае необходимо добавить одно новое состояние, из которого под действием любого х из X можно перейти лишь в себя, и в которое из всех других состояний ведут переходы под действием любого х из X. Событие, которое представляется в данном автомате, будет неизменным, а сам автомат станет полностью определенным над алфавитом X. * Рассмотрим некоторые следствия, вытекающие из основной теоремы теории конечных автоматов. Следствие 6.1.1. Проблема тождественности двух регулярных событий S и Г, алгоритмически разрешима, то есть существует алгоритм, который для произвольной пары регулярных событий S и Т выясняет, будет ли равенство S = Г тождеством. Доказательство. Синтезируем автоматы для регулярных событий S и Г, де- терминизируем их, а потом применим к ним алгоритм проверки эквивалентности. Если автоматы эквивалентны, то S = Т— тождество. В противном случае равенство S = Г не является тождеством. Следствие 6.1.2. Дополнение регулярного события и пересечение двух регулярных событий - регулярные события. Доказательство. Пусть регулярное событие S представлено в автомате A(S) = (Л, X, /, а0, ^0, синтезированном по событию S. Тогда дополнение S' = F(X)\S события 5, очевидно, представлено в автомате A(S') = (А, X,/, оо, A\F). Ясно, что настроенный таким образом Х-автомат будет представлять множество слов F(X)\S. Если теперь провести анализ построенного автомата, то можно найти регулярное выражение для события S' = F(X) \ S. Пусть S и Т— произвольные регулярные события, A(S) = (Л, X, /, До, F) и А(7) = (В, X,f\ So, F')^ синтезированные по этим событиям автоматы. Для того чтобы построить автомат, который представляет событие S п Г, рассмотрим автомат A(S п Т) = (А х В, X, / , А0 х В0, F x F'), где Ах В — декартово произведение множеств А и 5, F x F' — декартово произведение множеств F и F', а функция переходов задается уравнением 7((a,b),*) = №,*)J(b,*)).
Глава 6. Теория конечных автоматов 351 Очевидно, что всякое слово, принадлежащее событию S n Г, будет переводить начальное состояние автомата A(S n T) в одно из его заключительных состояний, а также и автоматы A(S) и А(Т). Если теперь к автомату A(S n T) применить алгоритм анализа, то можно получить регулярное выражение для события S пТ. Следствие доказано. Следствие 6.1.3. Алгебра регулярных событий в алфавите X замкнута относительно операций дополнения пересечения и объединения и, значит, представляет собой булеву алгебру. Имеет место аналогичное утверждение и для всех событий, которые могут быть представлены в заданном ^-автомате. Следствие 6.1.4. Множество всех событий, которые могут быть представлены в заданном ^-автомате, представляет булеву алгебру. Доказательство. Пусть А = (Л, X,/, до, F)— инициальный Х-автомат. Если событие S представлено в автомате А множеством состояний F, а событие Т— множеством состояний F', то событие F(X)\S представлено в автомате А множеством состояний А \ F, событие S u T— множеством состояний FuT, а событие SnT— множеством состояний FnF'. Если добавить к множеству состояний автомата А состояние, которое представляет невозможное событие, то отсюда следует справедливость нашего утверждения. 6.1.4. Задачи и упражнения 1. Дайте полное доказательство утверждения 6.1.1. 2. Пользуясь алгоритмом анализа, постройте регулярное выражение, представленное в автомате: • состояниями 2 и 3; Рис. 6.1.10
352 Часть II. Математические модели • состояниями 2 и 3; О' Рис. 6.1.11. • состояниями 2 и 3; • состоянием 4. Рис. 6.1.12. 3. Дайте полное обоснование правила 2. 4. Дайте полное обоснование правила 3. 5. Пользуясь алгоритмом синтеза, постройте диаграммы переходов автоматов, в которых представлены регулярные события: • S = x{y] vy{x}\ • T = yvx{y}\ • V = x[y) v {xy} v {x}y\ • U = (xvy){xy}. 6. Слова xy...z и z...yx называются симметричными (см. разд. 3.3, операция conv). Пусть S—некоторое событие, a S' — событие, которое состоит из всех слов, симметричных словам из S. Покажите, что событие S' тоже регулярное. 7. Событие, которое получается из события S в результате изъятия некоторого символа х е X из всех слов события 5, называется х-аннуляцией события S
Глава 6. Теория конечных автоматов 353 (см. разд. 3.3, операция sub). Покажите, что л-аннуляция регулярного события S является регулярным событием. 8. Пусть S = (ху v х{у}), T= ({х} v {xy}). Постройте автоматы A(S) и А(Т) по данным регулярным выражениям. Найдите регулярные выражения для событий (S n Т) и (S u T). 6.2. Практические методы анализа и синтеза конечных автоматов 6.2.1. Уравнения в алгебре событий В предшествующем разделе, применяя разработанные, алгоритмы анализа и синтеза, мы убедились, что эти алгоритмы довольно громоздкие. Это мешает их использованию на практике. В этом разделе мы рассмотрим более удобные алгоритмы анализа и синтеза конечных автоматов. Практический алгоритм анализа автоматов можно построить, рассматривая уравнения в алгебре регулярных событий. Уравнением в алгебре событий называется равенство вида x=kx,p,q,...,r), где t—терм алгебры регулярных событий, в котором X— неизвестное событие, а Р, <2, ..., R — известные события. Уравнение называется линейным, если ни один одночлен его правой части не включаете больше одного раза, и это включение не стоит под знаком итерации. Общий вид линейного уравнения такой: X = S,A7?, v S2XR2 v ... v SkXRk v Q, (6.2.1) где Si, Ri, Q — известные события. Из этого определения следует, что, например, уравнения X = R[X}Q, X = XRX v P не являются линейными. Линейное уравнение вида (6.2.1) называется леволинейным (праволинейным), если все множители, которые стоят слева (справа) от неизвестного, равняются пустому слову е, то есть S, = е (R, = е), i = 1, ..., к. Очевидно, что всякое леволинейное (праволинейное) уравнение можно свести к виду X = XRvQ(X = RXvQ). (6.2.2) Рассмотрим решения леволинейного уравнения. Для этого подставим в правую часть уравнения (6.2.2) выражение XR v Q и получим новое уравнение X = (XR v Q)R v Q = XR2 vQRvQ. Выполнив такие подстановки несколько раз, прийдем к уравнению X = XR" v QRn~l v ...vQRvQ = XRnv Q(Rn~l v ... v R v e).
354 Часть II. Математические модели Отсюда следует, что событие Q(Rn~l v ... v R v e) входит в решение данного уравнения. Поскольку это справедливо для всякого натурального и, то отсюда имеем, что событие Q{R} должно принадлежать искомому значению неизвестного X. Но, подставив в (6.2.2) вместо X значение Q{R}9 имеем Q{R] = Q{R}R vQ = Q({R}R ve) = Q{R}, а следовательно, X = Q{R} является решением уравнения (6.2.2). Теорема 6.2.1. Если е £ R, то уравнение Х- XRv Q имеет единственное решение X = QfR}. Доказательство. Пусть X' — решение уравнения (6.2.2) ир— произвольное слово из X'. Покажем индукцией по длине слова/?, что оно будет принадлежать Q{R}. Это подтверждает, что X с (?{/?}, а поскольку ранее было показано, что Q{R} включается во всякое решение, то это и будет означать, что событие Q{R] —единственное решение нашего уравнения. Если р = е, то е должно включаться в XR v Q, но поскольку событие XR не может включать это слово, то е е Qn, значит, ре Q{R]. Предположим теперь, что для всех слов, которые принадлежат решению X' и имеют длину меньше чем р, мы показали, что они принадлежат также и Q{R}. Из того, что р е X', следует, что р е X'R или р е Q. В последнем случае включение ре Q{R} очевидно. Предположим, что р е X'R. В этом случае слово р можно представить в виде р = рр\ где ре X', р" е Q, и длина слова р" не является нулевой. Но это означает, что длина слова р меньше длины слова р и по предположению индукции ре Q{R}, а тогда р=р'р" также принадлежит (?{/?}, что и доказывает теорему. Следствие 6.2.1. Если е € /?, R и Q— регулярные события, то решение уравнения X = XR v Q — тоже регулярное событие. Аналогично теореме 6.2.1 можно доказать такое утверждение. Теорема 6.2.2. Если е е R, то всякое решение уравнения X = XR v Q имеет вид (Q v TJfR}, где Т—произвольное событие. 6.2.2. Системы линейных уравнений Рассмотрим теперь систему линейных левосторонних уравнений: {Xl = XlSuvX2S2lv...vXnSnXvR] Х2 = XxSl2 v X2S22 v... v XnSn2 vR2 [Xn=X,SlnvX2S2nv...vXnSnnvRn
Глава 6. Теория конечных автоматов 355 Эта система имеет единственное решение, если е € S/, (i, j = 1, 2, ..., и). Рассмотрим метод решения такой системы, который называется методом последовательного исключения неизвестных. Суть этого метода хорошо известна из линейной алгебры под названием метода Гаусса и состоит в том, чтобы из первого (не обязательно по порядку) уравнения выразить неизвестное Х\ через другие неизвестные. Найдя выражение для Хи подставляем его в остальные уравнения и находим выражение для Х2 и так далее до тех пор, пока не будет найдено выражение для ХП9 которое уже не содержит неизвестных. После этого в результате обратного процесса находим значения для Х„_ь Хп_2, ..., Х2, Хи выраженные через события. Теорема 6.2.3. Если все коэффициенты Sy системы (6.2.3) не включают пустого слова еу то эта система имеет единственное решение, которое может быть найдено методом последовательного исключения неизвестных. Это решение будет регулярным, если все Sy и Ri (i, j = 1, ..., п) регулярные. Доказательство выполняется индукцией по числу уравнений в системе. Если система состоит из одного уравнения, то утверждение следует из теоремы 6.2.1. Пусть теорема справедлива для всех систем с числом уравнений до п - 1 включительно. Покажем, что она справедлива для системы, которая состоит из п уравнений. Для этого из последнего уравнения найдем выражение для Хп относительно остальных неизвестных. Из теоремы 6.2.1 имеем Хп = (XxSm vX2S2n v ... vXn-iSn-m v Rn) {Snn}. (6.2.4) Подставим полученное выражение для Хп в первые п - 1 уравнение системы (6.2.3). Приходим к системе [Xx=XxSuvSx,J§n%n^ntV...v v Хп_, (5Л_М v Sn_ln{Sn,n K,i) v (/?, vRn{Sfhn K,i) (6.2.5) Xn-\ = X\Sn-l\ V Sn-\,nVn,n Pn,n-\ v • • • v [V **-l(S„-lf„-i V^-l,nKnKl) V(Rn-\ V«„{SMKn-l) Нетрудно убедиться, что полученная система удовлетворяет условиям теоремы, а тогда, по предположению индукции, ее единственное решение может быть найдено методом последовательного исключения неизвестных. Пусть, Х\, Хг, ..., Хп-\ являются решением системы (6.2.5), подставим их в систему (6.2.4). Получим совокупность событий Х\, Хг, ..., Хп-\, (XiSi,„ v ... v Xn-\Sn-in v Rn){Snn}9 которые являются решением системы
356 Часть II. Математические модели (6.2.3) и будут регулярными, если такими являются события Х\, Хг, ..., Хп-\ и коэффициенты Sin и /?„ (i = 1, 2, ..., и). Теорема доказана. Заметим, все сказанное о линейных левосторонних уравнениях и системах справедливо и для линейных правосторонних уравнений и систем. Следует также заметить, что данные результаты не относятся к системам, в которых одновременно встречаются как левосторонние, так и правосторонние уравнения. Более того, может случиться так, что решение такой системы может быть нерегулярным, несмотря на регулярность всех коэффициентов системы. 6.2.3. Применение уравнений в алгебре событий к задачам анализа и синтеза конечных автоматов Пусть А = (F, X,/, аь F)— настроенный автомат, где А = {яь #2, ..., ал}. Для любого состояния я/ (i = 1, ..., п) символом Si обозначим событие Задачу анализа автомата можно, очевидно, сформулировать как задачу поиска регулярного выражения для дизъюнкции тех событий 5„ индексы которых обозначают заключительные состояния из F. Для решения этой задачи составим систему уравнений относительно Si, 52, ..., Sn: m Si= \JSjXvSu, (6.2.6) где Ie, если i = 1, ' . f 0'=l «) 0, если * *1. Коэффициенты при неизвестных Sj в этой системе, очевидно, не включают пустого слова. Следовательно, она имеет единственное решение, которое может быть найдено методом последовательного исключения неизвестных. Теорема 6.2.4. Пусть А = (А, X, f, a]t F)— инициальный автомат с множеством состояний {aj, a2, ..., ап}. Тогда совокупность событий S, = fp \f(a]f p) = aj (i = 7, ..., n) является решением системы (6.2.6). Доказательство. Вследствие того, что совокупность событий 5, каноническая, а решение системы (6.2.6) единственное, достаточно показать, что всякое слово q из F(X), принадлежащее событию Sh также принадлежит /'-му компоненту решения системы (6.2.6) и только ему. Докажем это индукцией по длине слова q.
Глава 6. Теория конечных автоматов 357 Для пустого слова— единственного слова длины нуль— это имеет место в соответствии с определением события S,y и потому, что все коэффициенты при неизвестных не включают пустого слова. Предположим теперь, что наша теорема справедлива для всех слов, длины меньшей чем длина слова q, и что q = q'xe {p |Даь ;с) = а,}, а Ч' £ {я \Aau й) = aj}- Из этих вхождений следует, что До,, х) = а,-, а тогда в соответствии с предположением индукции {д принадлежит у'-му компоненту и только ему) и по построению системы уравнений (слагаемое SjX входит только в /-тое уравнение) получаем, что q принадлежит i-му компоненту и только ему. Пример 6.2.1 Выполнить анализ автомата (рис. 6.2.1) с помощью аппарата системы уравнений в алгебре регулярных событий, у которого ао = 1, a F = {2, 3}. Из диаграммы переходов автомата находим систему: S\ = S*x v e\ 52 = S\X v S3*; 53 = S\yv Бгу\ 54 = S2X v Siy\ 55 = S4yvS5(xvy). Необходимо найти дизъюнкцию второго и третьего компонентов решения системы. Эти компоненты зависят от второго и четвертого, и ни один из них не зависит от пятого компонента. Поэтому мы можем сразу ограничиться лишь первыми четырьмя уравнениями. Поскольку решение системы единственное и не зависит от порядка исключения неизвестных, то позволим себе выбрать этот порядок. Подставим второе уравнение в третье и решим его относительно S$9 получим S3 = Sl(yvxy){xy}. Подставим теперь третье уравнение во второе и решим его относительно 52, получим S2 = S\(x v yx){yx).
358 Часть II. Математические модели Подставим полученные выражения для S3 и S2 в четвертое уравнение: S4 = S{(x v yx){yx}x v S{(y v xy){-x>,}>;- Это выражение для S4 подставим в первое уравнение и решим его относительно Si: S\ = (С* v >>л:){;у.х}.о; v (у v ху){ху}у{х}. Искомым событием является дизъюнкция S2 v S3, которая выражается через Si таким образом: S2vS3 = Sx((y v ху){ху] v (л: v ух){ух}). Окончательно, подставив выражение для Si в эту дизъюнкцию, имеем S2 v S3 = ((* v ух){)иг}ях v (у v ху){хуМ*}) ((у v ху){ху} v О v yx){yx}). Следовательно, анализ автомата методом составления и решения уравнений в алгебре событий довольно удобный, поскольку он использует хорошо известные понятия линейной алгебры. Следует также заметить, что при этом получается довольно компактная запись результата без применения тождественных преобразований, в то время как в предшествующем методе эти преобразования применялись неоднократно. ^ 6.2.4. Основной алгоритм синтеза конечных автоматов Приведенный ниже алгоритм синтеза конечных автоматов базируется на понятии вхождения букв в регулярное выражение. Данный алгоритм имеет определенные преимущества перед соответствующим алгоритмом из разд. 5.1: он является довольно практичным в использовании и может оперировать не только с одним регулярным выражением, а и с любой конечной совокупностью таких выражений. Вхождением буквы х в регулярное выражение R называется тройка (R'x"R"), где /?' и /?" — части записи терма R такие, что /?У является записью терма R. Запись R' называют префиксом вхождения, а запись R" — его суффиксом. Заметим, что префикс и суффикс вхождения в общем случае могут не быть записями регулярных выражений, например из-за нарушения баланса скобок. Понятие вхождения буквы в выражение можно обобщить на подвыражения: вхождением подвыражения Q в выражение R будем называть тройку (R'QR"), где /?'— префикс вхождения, R"— суффикс вхождения, R'QR"— запись выражения R. Например, выражение х(ху v ул){лу} включает два вхождения подвыражения ху: одно из них— (лг( , ху, vyx){xy}\ а второе— (х(ху vyx) {,ху,})- При фиксированном вхождении выражения Q в выражение R вхождение букв
Глава 6. Теория конечных автоматов 359 однозначно индуцируют вхождения этих же букв в более широкое подвыражение выражения /?. Вхождение (R'xR") буквы х в выражение R индуцируется вхождением (R\QR2) подвыражения Q в выражение R и вхождением (Л/л^') в это подвыражение, если R' = R\R\' и R" = Ri'Ri- Пусть R— регулярное выражение, и X— множество его регулярных подвыражений. Рассмотрим множество всех вхождений букв алфавита X в выражения из /?, отождествляя при этом разные вхождения одной и той же буквы, если одно из них индуцируется другим. На множестве вхождений индуктивно определим начальные и заключительные вхождения, а также отношение следования. Для сокращения записей условимся отождествлять там, где это не вызывает недоразумений, вхождение буквы с самой буквой. Пусть L(S)— множество начальных вхождений букв в выражение S. Это множество определяется по таким правилам: 1. Если S = e или 5=0, то L(S) = 0, и если S— элементарное событие (S = {х}\ то L(S) ={х]. 2. Если S = S'vS'\ то L(S) = L(S') u L(S"). 3. Если S = S'S", то L(S) = L(S'), если е£ S\ и L(S) = L(S')v L(S") в противном случае. 4. Еспи S={S'}, то L(S) = L(S'). Аналогично индукцией по числу операций в выражении 5 определим и множество R(S) заключительных вхождений букв в выражение 5: 1. Если S = e или 5 = 0, то R(S) = 0, и если S— элементарное событие (S={x}\toR(S)={x). 2. Если S = S' v S", то R(S) = /?(S') v /?(S"). 3. Если S = S'S", то R(S) = R(S")9 если e € S"9 и R(S) = tf(S') u /?(S"), в противном случае. 4. Если5={5,},то/?(5) = /?(5/). Перейдем теперь к понятию следования на множестве вхождений букв одного и того же выражения. Пусть х и у— некоторые фиксированные вхождения соответствующих букв в выражении S. Обозначение х \-у (S) означает, что вхождение буквы у следует за вхождением буквы х в выражении S. Дадим индуктивное определение отношения следования: 1. Если S = 5^5", то* \-y(S)&x \-y(S') илих \-y(S"). 2. Если S = S'S", то х [у (£)<=>* [у (S') или х \-у (S") или х е R(S') и У б US").
360 Часть II. Математические модели 3. Если S={S'}, то л; |-y(5)»jc f- у (S') или х е R(S') и у е L(S'). Теорема 6.2.5. Пусть S — регулярное выражение, тогда слово xj xi.-. xn принадлежит событию, которое представлено этим выражением, тогда и только тогда, когда существует последовательность ZjZ2---Zn вхождений букв в выражение S такая, что: L цявляется вхождением буквы x-t (i = 1, 2, ..., п). 2. Zi \~Zi +1, если 1 <и <п- 1. 3. zje L(S)uzne R(S). Доказательство проводится индукцией по числу операций в выражении S. Утверждение очевидно, если S является 0, е или элементарным событием. Пусть оно выполняется для выражений S' и S", покажем его справедливость для выражений S' v S", S'S" и {S'}. Если слово р принадлежит событию, представленному выражением S' v S", то это может быть лишь тогда, когда это слово принадлежит событию, представленному выражением S' или S". Но по предположению индукции и в силу определения множеств L(S' v S") и R(S' v S") для этого слова будут выполняться условия 1-3 теоремы. Если р G S'S", то это включение может быть выполнено одним из трех способов: р g S' и е е S"\ е е S' и р е S"; р = р'р", р е S' и р" е S". По предположению индукции и в силу индуктивных определений множеств начальных и заключительных вхождений, а также отношения следования на множестве вхождений в каждом из трех случаев, когда выполняется включение р Е S'S", будут выполняться условия 1-3. Если жер G {£'}, то это означает, чтор = р\рг...рп (л > 1) и pi e S'. Но отсюда по предположению индукции, определениям множеств Ц{5'}), /?({£'}) и отношениям следования вытекает справедливость условий 1-3. Теорема доказана. Теорема 6.2.6. Существует алгоритм, который по любой конечной системе регулярных выраэюений в алфавите X строит конечный настроенный Х-автомат, который представляет каждое из регулярных выраэюений данной системы некоторым множеством своих состояний. Число состояний в этом автомате не превышает 2п + 1, где п — суммарное число разных вхождений букв алфавитах в данные выражения. Доказательство. Состояниями автомата А, который необходимо синтезировать, за исключением начального состояния ао, будут служить множества вхождений букв в данную систему регулярных выражений. При этом не исключается и использование пустого множества вхождений.
Глава 6. Теория конечных автоматов 361 Функцию переходов/(а, х) автомата Л определим с помощью таких двух правил: 1. для произвольного х е X состояние /(яо, ■*) представляет собой множество всех начальных вхождений буквы х во все выражения данной совокупности выражений; 2. если состояние а представляется некоторым множеством вхождений, то для всякого х е X состояние j{a, x) является множеством всех вхождений буквы х, которое следует за вхождениями букв, которые представляют состояние а. Заметим, что состояниями автомата А являются не произвольные подмножества вхождения букв, а только те, которые достижимы из начального состояния под действием какого-нибудь слова в соответствии с правилами, задающими функцию переходов. Из теоремы 6.2.5 и способа построения переходов автомата А видно, что непустое слово р принадлежит некоторому событию, которое представлено выражением S в начальной совокупности выражений, тогда и только тогда, когда под действием этого слова автомат А переходит из начального состояния в состояние, которое рассматривается как множество вхождений букв и включает хотя бы одно заключительное вхождение для выражения S. В соответствии с построением автомата Л равенство Дя0, р) = ао возможно только тогда, когда слово р пустое и, значит, событие, представленное состоянием ао, — пустое слово. Из всего сказанного следует, что событие, которое отвечает регулярному выражению 5, представлено в автомате А множеством состояний, которые включают заключительные вхождения букв в выражение 5, и если это событие включает пустое слово, то к этому множеству состояний следует отнести начальное состояние я0- Очевидно, что число состояний построенного таким образом автомата не превышает 2п + 1. Подводя итоги этой теоремы, сформулируем в явном виде правила синтеза автомата, по которым можно реализовать алгоритм синтеза автомата. Правило 1. Разметить вхождения букв в начальных регулярных выражениях. Правило 2. Состояние, которое обозначается а0, объявить начальным и пока что единственным состоянием автомата. Правило 3. В соответствии с правилом 1 (определение функции переходов) заполнить столбец состояния ао в таблице переходов так, что при этом объявляются состояниями автомата все состояния, которые являются начальными вхождениями. Отвести новым состояниям соответствующие столбцы в таблице переходов.
362 Часть II. Математические модели Правило 4. Если в таблицы переходов все столбцы заполнены, то перейти к выполнению правила 6, в противном случае выбрать незаполненный столбец и перейти к правилу 5. Правило 5. В соответствии с правилом 2 (определение функции переходов) заполнить выбранный столбец множеством вхождений букв, объявить при этом множества вхождений, которые раньше не встречались, состояниями автомата и сопоставить каждому из них новый столбец в таблице переходов. Правило 6. Для каждого регулярного выражения R из начальной совокупности выражений объявить заключительными состояниями все те состояния, которые включают хотя бы по одному заключительному вхождению буквы в выражение R. При этом если представленное выражение R включает пустое слово, то начальное состояние тоже объявить заключительным для этого выражения. Для применения этого алгоритма на практике необходимо выбрать удобный способ задания для разных вхождений букв в выражения из данной совокупности. Для этого введем нумерацию вхождений букв целыми числами таким образом, что каждое вхождение получит свой особый, только ему соответствующий номер (порядок нумераци произвольный). При нумерации вхождений букв их номера будем ставить возле соответствующих букв (правее и ниже) и называть индексами вхождений. Процесс нумерации вхождений букв в выражения будем называть разметкой. Применяя алгоритм синтеза к заданной размеченной совокупности выражений и отождествляя вхождения букв с их индексами, будем представлять состояния множествами индексов. Пример 6.2.2 Построить автомат А, который представляет регулярные выражения в алфавите {х, у}, имеющие вид S\ = (xv e){yx) vxy, S2= {yx}(xvyx}. Решение задачи начнем с разметки выражений S\ и 52: S\ = (*i v е){угхъ} v хЛу5, S2 = {yeXi}(xs v у&ю). Множествами начальных и заключительных вхождений букв в выражения в соответствии с их определением будут множества {1, 2, 4, 6, 8, 9} и {1, 3, 5, 8, 10}. Отношение следования на множестве вхождений зададим парами (1,2), (2, 3), (3, 2), (4, 5), (6, 7), (7, 6), (7, 8), (7, 9) и (9, 10), где второе число означает вхождение, которое следует за вхождением, которому соответствует первое число.
Глава 6. Теория конечных автоматов 363 Выполняя процесс порождения состояний автомата и заполняя таблицу переходов (правила 2-5), приходим к такому множеству состояний: а<ь fli = {l, 4, 8}, а2={2, 6, 9}, яз = {2, 5}, я4={3, 7, 10}, а5 = {3}, а6 = {8}, ят = {2} и я8 = {0} (это состояние в таблице переходов обозначено символом "*"). В результате получим такую таблицу переходов. Входные сигналы Состояния автомата а0 *1 а2 а3 а4 а5 а6 а? * X а1 * а4 а5 а6 * * а5 Y а2 а3 * * а2 а7 * * При дальнейшей работе алгоритма синтеза (правило 6) находим множества состояний, которые представляют те же события, что и выражения S\ и S2. Этими множествами будут: для выражения S\ — множество {а0, ах, я3, «4, as] (заметим, что пустое слово принадлежит выражению Si), для выражения S2 — множество {а\, аА, а5}.* 6.2.5. Контрольные вопросы □ Какое уравнение в алгебре событий называется линейным? □ Что представляет собой решение системы линейных уравнений в алгебре событий? □ Всякий ли автомат можно синтезировать по заданному регулярному выражению? □ Для всякого ли конечного автомата можно построить представленное в нем регулярное выражение? □ Какие Вы знаете правила синтеза автомата? Назовите их. 6.2.6. Задачи и упражнения 1. Применяя алгоритм анализа к автоматам из упр. 1 разд. 6.1, постройте регулярные выражения для соответствующих автоматов. 2. Постройте регулярное выражение для автомата, который представляет полугруппу слов, порожденную такими словами: {ab, abc, ba, cba]. 3. Используя алгоритм синтеза конечных автоматов, постройте автомат, который представляет такие регулярные выражения: S\ = (xve){xy],
364 Часть II. Математические модели S2={yx}(xvyx}. S3 = (xve){x) vy, SA={y)(xvy}. 4. Пользуясь методом последовательного исключения неизвестных, найдите решения системы уравнений: X = XRvYQvZ, Y = XPvYAvB. 6.3. Минимизация конечных автоматов без выходов В предыдущем разделе мы рассмотрели общий метод построения приведенного автомата для заданного. Этот метод базировался на применении операции расщепления классов и в случае конечных автоматов давал алгоритм построения приведенного автомата. Рассмотрим более детально процесс минимизации Jf-автоматов. Назовем пару (К, х) элементарным делителем или элементарным дробителем, где К— класс некоторого разбиения Р, х— входной символ автомата А, а множество всех делителей обозначим декартовим произведением РхХ. Не будем описывать типов переменных, которые встречаются в этом алгоритме, условимся лишь обозначать классы состояний автомата буквами К, L, L', L", а множества классов (разбиение) — Р, Р7, Ро. Причем значение переменной Р0 считается равным начальному разбиению множества состояний автомата Л на 1-классы или 0-классы. \ Алгоритм МА1 (А) *■•.""••■'-.; I Начало. Р' := Ро; Делить: Р := Р'; Р' := Р' I P' X X; Если Р * Р', то перейти на делить, иначе остановиться; Конец.
Глава 6. Теория конечных автоматов 365 6.3.1. Общий алгоритм минимизации Применяя трансформационный метод построения алгоритмов, по алгоритму МА1 можно построить довольно эффективный алгоритм минимизации конечных автоматов без выхода. Суть трансформационного метода продемонстрируем ниже при построении алгоритма минимизации для ациклических автоматов, а сейчас напомним некоторые определения теории конечных автоматов без выхода. Распространим, как и раньше, функцию переходов/на всю полугруппу слов F(X), полагая для всякого р = хр (х е X, р е F(X)) и a e A f(a,p)=f(f(a,x),p'). При этом если функция/(а, х) не определена, то и Да, р) тоже не определена. Если же /(а, р) определена и равняется Ъ, то говорят, что слово р переводит автомате из состояния а в состояние Ъ. Отношение эквивалентности (~) на множестве состояний автомата без выходов определяется таким образом: a ~ a' « (Vp E F(X)) (/(a, p) e F <=>f(a\ p) e F). Отношение ~, как легко убедиться, является отношением конгруэнтности на множестве А относительно функции переходов /, значит, можно говорить о фактор-автомате ВI ~. Автомат, у которого все состояния попарно неэквивалентны, называется приведенным. Приведенным автоматом для заданного автомата В как раз и служит фактор-автомат ВI ~. Построение приведенного автомата для заданного вместе с задачами его анализа и синтеза— это одна из основных задач теории конечных автоматов. Кроме того, из предшествующего раздела следует, что, выполняя минимизацию автоматов без выхода, мы не ограничиваем общности нашего рассмотрения. Как мы уже знаем, построение приведенного автомата—итерационный процесс, при котором строятся максимальные классы эквивалентности. Построение начинается с некоторого априорного разбиения, например, разбиения на два класса: заключительные состояния и все остальные состояния начального автомата— и продолжается до тех пор, пока полученные классы уже не могут быть разделены на более мелкие. Поскольку автомат конечный, то этот процесс всегда заканчивается через конечное число итераций. Расщепление выполняется таким образом, что для всякого текущего разбиения состояния из разных классов между собой неэквивалентны. Перейдем теперь к определению функции расщепления классов и выявлению некоторых ее свойств.
366 Часть II. Математические модели Пусть К, L, L!— некоторые подмножества состояний автомата Л = (А, X,/, F) их — некоторый символ изX. Определение функции расщепления (/) можно дать следующим образом: L/(Ar,jt) = {L\L"}, где L'={azL\j{a, х)еК), L" = L\L', если L'*0 и L"*0, иначе L/(K,x) = L. Непосредственно из определения вытекают такие соотношения для функции /: 1. (L/(*,*))/(AT,*) = L/(#Г,*); 2. (L/ (tf,х))I(Г,х) = (L/ (Г,jc')) /(ЛГ, jc); 3. (L / (/Г, jc)) / (/Г7, jc) = (L / (ЛГ, jc)) / (К\ х) = = (L / (ЛГ, *)) / (/Г, jc) = (((L / (ЛГ, х)) I {1С, х)) I (/Г, х\ где л:=к u a:", г п /г = 0. Основываясь на этих свойствах, в [18, 21] выполнено построение эффективного алгоритма, исходя из приведенного выше алгоритма МА1. Алгоритм минимизации конечных автоматов без выхода, полученный трансформационным методом из алгоритма МА1, имеет такой вид. 6.3.2. Алгоритм минимизации конечных автоматов без выходов I Алгоритм MA (A) \ 1 Начало. R := Ro; ДРОБ := Ro X X; Пока ДРОБ Ф 0 выполнить Взять {К, х) из ДРОБ; Для всех L из R выполнить L' : = {a G L | f(a, х) e К}; L" : = {а 6 L | f(a, x) € К}; Если if Ф 0 и L" * 0 то Заменить L в Я на {!*', L"} ; Для всех х из X выполнить Если (L, х) есть ДРОБ то Заменить (L, х) в ДРОБ На { (If, х) , (L", х)};
Глава 6. Теория конечных автоматов 367 Иначе ДРОБ := ДРОБ U G{(L', х) , (L", х) ) ; КЕ; КЦ; КЕ; КЦ; КЦ; Конец. Конструкции, которые используются в приведенном алгоритме, близки к обычным конструкциям, которыми пользуются в программировании: □ переменные R и ДРОБ имеют тип "множество множеств"; □ переменные К, L, L\ L", X— "множество", а значением функции G((L\ х), (L", х)) является та из двух пар, расщепление по которой проще. Семантика оператора взять (к, х) из дроб такая, что после его выполнения элемент (К, х) изымается из множества ДРОБ. Операторы цикла вида для всех ... из ... выполнить устроены таким образом, что каждый элемент указанного в заголовке множества (в данном случае X или К) выбирается как параметр один раз, порядок выбора несущественен, и окончание цикла наступает тогда, когда все множество перебрано. В результате работы алгоритма МА получаем автомат, основное свойство которого выражается таким утверждением. Теорема 6.3.1. Фактор автомат А/- является приведенным автоматом для автомата А. Доказательство существенно не отличается от доказательства теоремы 4.1.5 и предлагается как упражнение. Пример 6.3.3 Построить приведенный автомат для автомата А = ({1, 2, 3, 4, 5, 6, 7}, {0, 1}, /, {7}), функция переходов которого задана с помощью графа рис. 6.3.1. Применяя алгоритм МА, последовательно получаем /?0= {(7), (1, 2, 3, 4, 5, 6)}, ДРОБ = {(7, 0), (7, 1), ((1, 2, 3, 4, 5, 6), 0), ((1,2, 3, 4, 5, 6), 1)}. Расщепляем классы по паре (7, 0). Класс (7) при этом не изменяется, а (1, 2, 3, 4, 5, 6) разбивается на два подкласса: (1, 2, 3) и (4, 5, 6). После этого ДРОБ = {(7, 1), ((1, 2, 3), 0), ((1, 2, 3), 1), ((4, 5, 6), 0), ((4, 5, 6), 1)}, a R = {(7), (1, 2, 3), (4, 5, 6)}. Расщепление по паре (7, 1) ничего не изменяет. Далее расщепляем {4, 5, 6} / ((4, 5, 6), 1)= {4, 5, 6}; {1,2,3}/((4, 5, 6), 1) = ({2,3}, {1}); {2,3}/((4,5,6),0)={2,3}.
368 Часть II. Математические модели После этого классы больше не изменяются, значит, получаем автомат (рис. 6.3.2). Следовательно, ~ = {(1), (2, 3), (4, 5, 6), (7)}. Рис. 6.3.1 Перенумеруем снова классы и примем их за новые состояния. Получаем фактор-автомат, изображенный на рис. 6.3.3. 1 1 Рис. 6.3.3 < 6.3.3. Алгоритм минимизации ациклических автоматов Теперь рассмотрим задачу минимизации ациклических конечных автоматов. Заметим, что алгоритм приведения конечных автоматов, рассмотренный выше, можно применять и к ациклическим автоматам. Но если автомат ациклический, то этот алгоритм можно сделать более эффективным относительно затрат как времени, так и памяти. Пусть автомате = (Л, X,/, F) ациклический. Ацикличность автомата Л позволяет разбить множество его состояний на уровни так, что состояния верхнего уровня недостижимы из состояний нижнего уровня. Формально это записывается так. Рис. 6.3.2
Глава 6. Теория конечных автоматов 369 Пусть L < V означает, что класс L достижим из класса L', тогда L<L'=$L/(L\x) = L. (6.3.1) Очевидно, что отношение < является отношением частичного порядка. При этом классы одного уровня не сравнимы между собой. Рассмотрим процесс преобразований (трансформаций) алгоритма МА для случая ациклических автоматов. Начальными данными для этих преобразований является алгоритм МА(А), где А— ациклический автомат, приведение которого необходимо выполнить, и соотношение, характеризующее ациклические автоматы: (V<i, a е A)(\fp е F(X)) (/(a, p) = a'=>a^~ a'). (6.3.2) В алгоритме МА начальным было разбиение множества состояний автомата на два класса: {F, A\F}— заключительных и остальных состояний. Для случая ациклических автоматов за начальное разбиение можно взять разбиение /?rang = {So, Si, ..., Sm}, где So = {a G A | (Vjc g X)f(a9 x) = u>}; Si+x = {aeA\ ((Vjc g X)f(a, x) = w)v vj{a,x)e \JSj))&&ceX)(f(a,x)eSd)h 7=1 w— символ неопределенности. Неэквивалентность состояний, которые лежат в разных классах, является непосредственным следствием соотношения (6.3.2). Используя разбиение /?rang, первые два оператора алгоритма МА заменим Операторами R : = Rrang И ДРОБ : = R х X. Частичный порядок, присущий множеству /?rang, позволяет говорить о частичном порядке на множестве R. При этом классы, принадлежащие одному уровню, не сравнимы между собой относительно этого порядка. Порядок на R можно перенести и на множество ДРОБ, если сравнивать пары (L, х) по первым компонентам. Это дает возможность говорить о минимальных элементах в ДРОБ. В алгоритме МА порядок выбора пар из ДРОБ нефиксиро- ван, а здесь, воспользовавшись отношением (6.3.2), заменим оператор взять (К, х) из ДРОБ Оператором Взять минимальный элемент (К, х) из ДРОБ. ИсПОЛЬЗуЯ ТО Же Самое СООТНОШеНИе, Оператор Для всех L из R выполнить заменим Оператором Для всех L из R, таких что L > К, выполнить. Поскольку в цикле по элементам ДРОБ каждый раз выбирается минимальный элемент, то для всякого L из R такого, что L> К, справедливо свойство, что ни одна пара (L, х) не может быть взята прежде пары (К, х) как пара,
370 Часть //. Математические модели по которой ведется расщепление. Это позволяет упростить условный оператор Если (L, х) есть ДРОБ то заменить (L, х) в ДРОБ на ({L\ x) , (L", х)}, иначе ДРОБ := ДРОБ и G(L', х) , (!/', х)}. В результате получаем алгоритм, ориентированный на обработку ациклических автоматов. I Алгоритм МАИ (А) ■£/.--->* -4^;'^ : : ч ; i i _-. Л1 , ; :.„' Li^. ~:^:.:zL:^ j-l^ — ~.~ ~ : j Начало. R I = Rrang 7 ДРОБ := R X X; Пока ДРОБ Ф 0 выполнить Взять минимальный элемент (К, х) из ДРОБ; Для всех L из R таких, что L > К выполнить L' : = {a G L | f(a, х) e К}; L" : = {a G L | f(a, х) g К) ; Если L' Ф 0 и L" * 0 то Заменить L в Л на {Z/, L"} ; Для всех х из X выполнить Заменить (L, х) в ДРОБ на { (I/, х) , (L", х)} ; КЦ; КЕ; КЦ; КЦ; Конец. Анализируя полученный алгоритм, можно увидеть, что множества ДРОБ и R пополняются новыми элементами одинаковым способом — с точностью до Jf-сомножителя декартового произведения в множестве ДРОБ. Это дает возможность уточнить стратегию выбора элементов из ДРОБ путем замены цикла Пока ДРОБ Ф 0 выполнить Взять минимальный элемент (К, х) из ДРОБ; Р; КЦ; где Р — оператор, который отвечает телу цикла; двойным циклом Пока ДРОБ Ф 0 выполнить Взять {К} х X из ДРОБ, где К— минимальный класс в множестве ДРОБ
Глава 6. Теория конечных автоматов 371 Для всех ^ из X выполнить Р; КЦ; КЦ; Обратим внимание на такое свойство оператора Р: если некоторый класс L из R при выполнении оператора Р изымается из /?, то одновременно с ним из множества ДРОБ изымаются все пары вида (L, л;) для х е X. Отсюда и из того, что начальное значение ДРОБ = R х X, следует, что в точке, следующей непосредственно за оператором взять (к, х) из дроб, справедливо инвариантное соотношение к е r. Следовательно, в этой точке можно вставить избыточный оператор Отметить к в R. В результате приходим к такому алгоритму. j Алгоритм МА-2 (A) I Начало. R I = i?rang 7 ДРОБ := R X X; Пока ДРОБ Ф О выполнить Взять {К} х X из ДРОБ, где К — минимальный класс в множестве ДРОБ; Отметить К в R i Для всех ^ из X выполнить Р; КЦ; КЦ; Конец. Пусть а—точка входа в тело внешнего цикла, и пусть R'— множество неотмеченных элементов из множества R. Тогда легко проверить, что в точке а имеет место инвариант дроб = r' x х. Используя его, условие самого внешнего цикла ДРОБ*0 заменим условием R' ф 0, а оператор взять {к} х х из дроб ...— оператором найти в r минимальный неотмеченный класс к. После этих преобразований структура данных ДРОБ и все связанные с ее вычислением операторы становятся избыточными, и их можно исключить. В результате приходим к такому алгоритму. [Алгоритм МА-3 (А) | Начало. R • = Rrang / Пока в R есть неотмеченные классы выполнить Найти минимальный неотмеченный элемент К;
372 Часть II. Математические модели Отметить К в R; Для всех х из X выполнить Для всех L из R таких, что L >. К, выполнить I/ := {а 6 L | f(a, х) 6 К} ; L" := {а 6 L | f(a, х) g К); Если I/ * 0 и L" Ф 0, то Заменить L в R на {£/, L"} ; КЕ; КЦ; КЦ; КЦ; Конец. И в заключение, заменяя внешний цикл, операторы найти в r ... и отметить К в R ЦИКЛОМ Для всех К из R в порядке возрастания выполнить, ПОЛуча- ем окончательную версию алгоритма минимизации ациклических автоматов. I Алгоритм МАД (А) \ .,..-'..*. ;".< . ; ^ \ Начало. R • = Rrang 7 Для всех К из R в порядке возрастания выполнить Для всех х из X выполнить Для всех L из R таких, что L > К выполнить I/ : = {а 6 L | Яа, х) 6 К); L" : = {а 6 L | f(a, х) g К) ; Если L' * 0 и L" * 0, то Заменить L в Л на {I/, L"} ; КЕ; КЦ; КЦ; КЦ; Конец. Качественную характеристику построенного алгоритма МАА дает такое утверждение. Теорема 6.3.2. Приведение ациклического автомата А алгоритмом МАА выполняется за время 0(т), где т — число переходов в автомате А [20]. Доказательство. Построение начального разбиения Rmng, связанного с разбиением состояний по уровням, выполняется за один обход графа переходов
Глава 6. Теория конечных автоматов 373 автомата А. Разбиение Rmng представим в виде списка уровней, каждый из которых, в свою очередь, тоже представляется списком классов. Обход классов выполняется от нулевого уровня к максимальному, а внутри уровня — в порядке перечня классов. При расщеплении классов относительно элементарного расщепителя (К, х) воспользуемся отношением/"1, обратным к функции переходов/. С помощью этого отношения за ограниченное время выполняется доступ к каждому элементу я, такому что /(я, х) е К. Найденный элемент а изымается из соответствующего класса L и заносится в новый класс L', связанный с L. Операции удаления а из L и добавления его в L', как мы знаем, можно выполнить за ограниченное время, если представить классы двусторонними списками. После расщепления всех классов относительно (К, х) для каждого класса L, имеющего элементы, которые под действием х переводились в К, выполняется проверка: будет или нет этот класс пустым после перемещения таких элементов. Если он пустой, то Z/ рассматривается как L, а если нет, то соответствующий уровень пополняется новым классом— Z/. Очевидно, что такая проверка и пополнение списка классов внутри уровня еще одним классом выполняется за ограниченное время. Теперь для получения окончательной оценки достаточно заметить, что каждый переход j{a, х) = а в алгоритме МАА используется при делении классов ровно один раз. Теорема доказана. Рассмотрим модификацию функции деления. Эта модификация определяется для произвольных классов L, К и произвольных элементов х, х из Xтак: {Ц = {az L\f(a,x)&f(a,x')G К], urn чч \l^ = {aeLf{a,x)^K8if{a,x')^Kw L I\Fl ,\X, X i) — s vf(a,x)eK&f(a9x')eK}9 [Ls' = {aeLf(a9x')&f(a9x')eKl где & и v — операции булевой алгебры. Поскольку операции & и v коммутативные, то LI (К, {х, x})-LI (К, {х\ х}). Другими словами, два состояния из класса L попадают в один и тот же класс разбиения в результате применения модифицированной функции расщепления, если х и х— потомки этих состояний — оба или один из них принадлежит, или ни один из них не принадлежит классу К, независимо от порядка, в котором берутся элементы х и х . Как видим, данная модификация очевидным образом обобщается на произвольное конечное число элементов из входного алфавита Х9 в частности L/(K,X) = L/(K, [хихь ...,**}).
374 Часть II. Математические модели Поменяв в алгоритме МАА внутренние циклы местами, приходим к алгоритму, который вычисляет разбиение множества состояний автомата А на классы эквивалентности, соответствующее отношению (я, a')e L<^> s(a, К) = s(a\ К), где L, К— некоторые классы разбиения, a s(a, К) — число переходов из состояния а в состояния из класса К под действием символов из входного алфавита^ Опишем реализацию этой функции и выясним ее временные характеристики сложности. При построении разбиения с помощью модифицированной функции расщепления классы, которые возникают в процессе ее вычисления, связываются между собой списком таким образом, как это показано на рис. 6.3.4 (здесь для а е L, имеем s(a, K) = k- i, где / = 1,2, ... Д). С< l; < <* l\ Рис. 6.3.4 При этом элемент из класса U каждый раз переносится в соседний класс L,_/. Адрес соседнего класса удобно зафиксировать в некотором месте списка L/, например, в первом элементе. После завершения вычисления модифицированной функции расщепления выполняется обход всех первых элементов списков L/, и адреса, записанные в них, делаются нулевыми. Кроме того, в процессе этого обхода удаляются пустые классы. Очевидно, что такая реализация модифицированной функции расщепления требует времени 0(к\ где А: = |АГ|. 6.4. Алгоритмы построения конгруэнтных замыканий для конечных автоматов 6.4.1. Определение отношения конгруэнтного замыкания Пусть R— некоторое отношение эквивалентности на А. Отношение R называется конгруэнтным замыканием отношения R тогда и только тогда, когда a R V » aRa v (Vjc g X')(f(a9 x) R *f(a\ x)). Ясно, что отношение /?* является отношением эквивалентности, но, вообще говоря, не является отношением конгруэнтности. Действительно, не всегда a R V => (Vjc e X)(/(a, x)R*f(a'9 x)).
Глава 6. Теория конечных автоматов 375 Пример 6.4.1 Пусть даны состояния а и а такие, что aRa\ и состояния a\ =/(я, x), а\ =/(я'» х)> а2 =/(я, *')> ai =/(я'>х') такие, что a^Ra-l и неверно axRa{. Тогда из aR а не следует/(a, x)R*f(d, х) и поэтому R не является отношением конгруэнтности. a a -/ \- / \ а, а2 а! а2' Рис. 6.4.1 < Поставим в соответствие каждому состоянию а из А вектор целых чисел v(a) = О'ь «2, •••> **)> где *,-— номер класса эквивалентности состояния/(a, xj), j = 1, ..., k, k < \X\. Тогда очевидно, что v(a) = v(d) «=> aR*d. Этот факт дает возможность определить еще одно важное отношение RS — симметричное конгруэнтное замыкание отношения R. Действительно, пусть 5— некоторая перестановка элементов вектора v(a) = (/ь *2, ..., i*), т.е. S(v(a)) = = v(5(ii, i2, ..., I*)) = 07, iV, -.., i*'), тогда я/?5 V «=> (дЛя') v (35)(v(fl0 = v(S(iu i2, ..-, 4)) = 5(v(fl)). Иначе говоря, яЛ5 а' тогда и только тогда, когда а и а или априорно эквивалентны, или их векторы равны с точностью до порядка перечисления компонентов. Для бинарных автоматов удобно считать, что Х- {О, 1}. Рассматривая бинарные конечные автоматы, мы не ограничиваем общности, поскольку всякий автомат с входным алфавитом, включающим больше двух символов, можно превратить в бинарный автомат. Это достигается путем расширения множества состояний начального автомата и кодированием входных символов в алфавите {0, 1}. Такое преобразование всегда возможно, поскольку всякая полугруппа с конечным числом образующих изоморфно вкладывается в полугруппу, которая порождается двумя образующими {0, 1}. Пример 6.4.2 Пусть X- {*, x\ jc"}, А = {1, 2, 3, 4, 5} (рис. 6.4.2). Закодируем слова X в алфавите {0, 1}. Для этого необходимо закодировать только образующие: х = р = 01, х =// = 10, хп =р" = 11. Тогда полученный автомат будет иметь вид, приведенный на рис. 6.4.3. Из приведенного примера очевидным образом вытекает справедливость такого простого утверждения. 13 Зак. 3427
376 Часть II. Математические модели х х Рис. 6.4.2. Начальный автомат А Рис. 6.4.3. Бинарный автомат А для А Утверждение 6.4.1. Если А = (А, X, /, F)— конечный автомат и А' = (А\ {О, 1}, /', F')— соответствующий ему бинарный автомат, то |Л'| < |Л| + |Л| • (log|X| + 1) = |Д| • (log|X| + 2). Доказательство. Для того чтобы закодировать к = \Х\ элементов, необходимо к слов длины log к + 1 в алфавите {0, 1}. Значит, каждый переход в автомате А моделируется не больше, чем log к + 1 переходами в автомате А' и для этого необходимо ввести не больше log к + 1 состояний. Отсюда и вытекает приведенная оценка для числа состояний. 6.4.2. Общий алгоритм вычисления конгруэнтного и симметричного конгруэнтного замыканий Перед тем как рассмотреть алгоритм вычисления конгруэнтного замыкания конечных Х-автоматов, опишем его структуры данных. Структура Г, которую будем называть деревом переходов на классах, представляет собой конечный ациклический автомат и разрешает за время 0(|Х|) определить состояние а\ такое что aR a. Для определения состояния а на вход автомата Т подается вектор v(a) = Оь /2, ..., ik), и если Д1, v(a)) = a\ то aR*a\ в противном случае состояние а не определено, то есть результатом будет 0 (Т(а) = я', если а определено, и Т(а) = 0, если а не определено).
Глава 6. Теория конечных автоматов 377 Структура pending представляет собой переменную типа множество и служит для работы с множеством состояний начального автомата, а переменная combine—для работы с множеством пар состояний начального автомата. Другие структуры данных имеют такую семантику: find(a): дает имя классу, которому принадлежит состояние а; list(e): дает список состояний, среди которых есть хотя бы один переход в состояния из класса е\ unions, е'): функция объединения двух классов еи^'в один класс с именем е. S. Обрбщенрыи.ал1;орит№ /зычксления/кркфу^нт^рго.дамь^мания/ХАКЗчВ^Ш] %Ж1 Начало. pending := А; /* А — множество состояний автомата А */ Пока pending Ф 0 выполнить combine := 0; Для каждого а из pending.выполнить Если Т{а) = 0 то скорректировать переходы в Т Иначе add (а, Т(а)) в combine KE Impending := 0; Для каждого (а, а') из combine выполнить Если find (а) Ф find (а') то Если |list(find(a)| < |list(find(a')I то Для каждого Ъ из list(find(a)) выполнить add Ъ в pending КЦ; union(find(a') , find(a)) Иначе Для каждого Ъ из list(find(a')) выполнить add Ь в pending КЦ; union (find (а), find (a')) КЕ; КЕ; КЦ; КЦ; Конец.
378 Часть II. Математические модели Качественную характеристику алгоритма УАКЗ дает такая теорема. Теорема 6.4.1. Алгоритм УАКЗ вычисления конгруэнтного замыкания отношения эквивалентности R для автомата А = (А, X, f, F) требует времени 0(к • т • log т), где к = |Х|, п = \А\, т = к- п. Доказательство. Пусть автомат А задан таблицей переходов, классы отношения R — одномерным массивом М длины п так, что каждый элемент М(а) имеет два поля: имя текущего класса, которому принадлежит состояние а, и имя класса, которому раньше принадлежал элемент а (/" и /с соответственно). Автомат Т зададим двумерным массивом m x n и указателем р свободного элемента в этом массиве (Т сначала нулевой, то есть р= 1). Начальным состоянием автомата Г будет состояние 1. Коррекция переходов в автомате Г, которая отвечает вектору v(a) = (/" , /" , ..., /" ), выполняется по таким правилам. 1. Если Г(1, i" ) = 0 и 7X1, if ) = 0, то 7X1, ц ) положим равным р + 1 и увеличим/7 на единицу. 2. Если Г(1, i") = 0 и 71(1, j'iC)*0, то 7X1, /") положим равным 7X1, /'iC), а 7X1, i\) — равным 0. Если 7X1, i\ ) =j * 0, то находим T(j, /" ): если T(j, /" ) = 0, выполняем шаг 1 для 7Х/, i" )> а если 7Х/, /2") определен — шаг 2 и т. д. 3. Если все переходы в Т скорректированы a T(j\ /") = 0, то T(j\ /£) положим равным^, увеличиваемр на 1 и состоянию T(j\ /" ) ставим в соответствие состояние а. Если же состояние T(j\ /") определено и ему соответствует состояние а\ то пару (а, а') заносим в множество combine. Из описания шагов 1-3 следует, что для заданного вектора v(a) коррекция переходов требует времени, пропорционального длине вектора v(a\ т. е. О(к) единиц времени. Теперь для доказательства теоремы подсчитаем количество операций, которые выполняются в процессе работы алгоритма на структурах данных. Для структуры pending число операций add при реализации стратегии модификации меньшей половины не превышает величины п + к - п • log к • п = 0(т • log ш). Поскольку при обработке одного элемента из множества pending необходимо затратить 0(к) единиц времени для коррек-
Глава 6. Теория конечных автоматов 379 ции переходов в автомате Г, то общая сложность работы с элементами множества pending выражается величиной 0(к • m • log m). Число операций add для множества combine ограничено числом операций над элементами множества pending, то есть ограничено величиной 0(т • log m), а значит, и число операций find тоже ограничено этой величиной. При объединении классов используется алгоритм быстрого объединения непересекающихся классов. При этом с каждым классом эквивалентности связываются двусторонние списки состояний, являющихся непосредственными предшественниками состояний данного класса, и число, характеризующее количество элементов в списках предшественников. Поскольку число операций union ограничено числом и, то общее время для этих операций выражается величиной 0(п • G(ri)), где G(n) — функция, обратная к функции Аккер- мана [15]. Подводя итог, получаем, что общая сложность алгоритма УАКЗ выражается величиной 0(к • m • log m). Теорема доказана. Рассмотрим работу алгоритма УАКЗ на примере. Пример 6.4.3 Пусть дан автомат А, изображенный на рис. 6.4.2. Необходимо вычислить конгруэнтное замыкание отношения тождественности *'. Перенумеруем классы автомата^: {1}—1, {2} — 2, {3} — 3, {4} — 4, {5} — 5. Значит, М(1).л = 1, М(1).п = 0, М(2).л = 2, М(2).п = 0, М(3).л = 3, М(3).п = О, М(4).л = 4, М(4).п = 0, М(5).п = 5, М(5).п = 0. Множество pending ={1, 2, 3, 4, 5}, combine = 0. Выберем произвольный элемент из множества pending, например 2. Строим вектор v(2) = (Зн, Зн, 5Н) (v(2) = (0е, 0е, 0е)). Выполняем коррекцию переходов в автомате Т для v(2) (рис. 6.4.4—левая ветвь в дереве 7). Далее этот процесс повторяем для состояний 1, 3, 4, 5. В результате получили автомат Г, изображенный на рис. 6.4.4. Непосредственно из рисунка видно, что состояния 3 и 4 эквивалентны, поскольку Г(4) = 3, то есть combine = {(3, 4)}. После этого pending становится пустым множеством и начинает работать часть алгоритма, обрабатывающая элементы множества combine. Берем пару (3, 4) из combine и находим множество состояний list(find(3)), то есть те состояния, которые связаны с состоянием 3 хотя бы одним переходом. Это множество состоит из одного состояния — 2. Объединяем состояния 3 и 4 в один класс с именем 4, включаем состояние 2 в множество pending и,
380 Часть II. Математические модели поскольку множество combine пустое, начинаем обрабатывать элементы множества pending = {2}. Корректируем переходы в Т для v(2) = (4Н, 4Н, 5") (v(2) = (3е, 3е, 5е)). Находим 71(2) = 4 и пару (2,4) включаем в множество combine. После этого, повторяя весь процесс для пары (2, 4), находим состояние 1, для которого v(l) = (4H, 4", 5н) и Г(1) = 4. Выполняя аналогичные действия для состояния 1, окончательно получаем такие классы эквивалентности: {1, 2, 3, 4} —4 и {5} —5. Пометки финальных - состояний з14I i i 4 4 4 4 10 11 12 13 И t t 2 13 5 t Эквивалентные "состояния 4 Рис. 6.4.4. Ациклический автомат Г для векторов классов состояний * Алгоритм УАКЗ легко обобщается на случай симметричных конгруэнтных замыканий. Действительно, для вычисления симметричного конгруэнтного замыкания необходимо привести в порядок компоненты вектора v(a) для каждого состояния а из А, перед тем как определить класс его эквивалентности. Первичная сортировка всех состояний может быть выполнена за 0(к • к- и) = 0(к• т) единиц времени, а следующие сортировки для любого состояния*— за 0(к) единиц времени. Для выполнения такой сортировки служат процедуры sort и ordering. Алгоритм УАКСЗ для вычисления симметричного конгруэнтного замыкания имеет такой вид. | УАКСЗ (В, R); Начало. pending := А; /* А — множество состояний автомата А*/ Для любого а из pending выполнить sort(v(a)); КЦ;
Глава 6. Теория конечных автоматов 381 Пока pending Ф 0 выполнить combine := 0 Для любого а из pending выполнить Если Т{а) = 0 то скорректировать переходы в Т Иначе add (а, Т(а)) в combine KE Impending := 0 Для любого (а, а4) из combine выполнить Если find (a) * find (а') то Если |list(find(a)| < |list(find(a')l то Для любого b из list(find(a)) выполнить add b в pending; ordering (v(b) ,find(a) , find (a')) КЦ; union (find (a') , find (a)) Иначе Для любого b из list (find(a') ) выполнить add b в pending; ordering (v(b) , find (a') , find (a)) ; КЦ; union (find (a) , find (a')) KE; KE; КЦ; КЦ; Конец. Из сказанного вытекает справедливость такого утверждения. Теорема 6.4.2. Временная сложность алгоритма вычисления симметричного конгруэнтного замыкания RS* для конечного автомата А = (A, X,f, F) относительно априорного отношения эквивалентности R пропорциональна величине 0(k m- log n). Если же не все состояния из А удовлетворяют симметричному отношению, а лишь некоторые, например, состояния из некоторого подмножества А\ то данный алгоритм также можно применять. Действительно, при этом сортируются не все состояния из А, а лишь состояния из А'. Если А' задать в виде характеристического вектора, то оценка теоремы 6.4.2 остается без изменений.
382 Часть II. Математические модели Пример 6.4.4 Возвратимся к автомату, который рассматривался выше в примере 6.4.3. Пусть переходы этого автомата изменены таким образом: v(l) = (5,2,4),v(4) = (4,5,4), v(2) = (5, 3, 3), v(5) = (5, 5, 5). v(3) = (4,4,5). 1. Пусть А' = А. Тогда приводим в порядок все v(a): Г. v(l) = (2,4,5),v(4) = (4,4,5); Р v(2) = (3, 3, 5), v(5) = (5, 5, 5); П v(3) = (4, 4, 5). Дерево переходов на классах будет иметь вид, представленный на рис. 6.4.4. В результате работы УАКСЗ получаем, что RS = {(1, 2, 3, 4), (5)}. 2. Пусть А' = (1, 3, 4). Тогда дерево переходов Г автомата В имеет вид, показанный на рис. 6.4.5. В результате работы УАКСЗ находим, что /?S*={(1),(2),(3,4),(5)}. 2 3 4 ч ч ч 5 6 7 ч ч ч 8 9 10 I I I 1 2 3 I 4 Рис. 6.4.5. Дерево переходов Алгоритм УАКСЗ легко трансформируется в алгоритм конгруэнтного замыкания для бинарных автоматов [83]. Для них работа со структурой Т может быть организована более эффективно. Действительно, каждый вектор некоторого состояния а автомата А представляет собой пару v(a) = (/, Д и мы можем положить T{a) = T(Uj) = а\ если а определено, и 0, если а не определено. Следовательно, в этом случае время вычисления состояния а является константой, и это дает возможность улучшить оценку временной сложности алгоритма как УАКЗ, так и УАКСЗ. <
Глава 6. Теория конечных автоматов 383 Следствие 6.4. J. Временная сложность алгоритмов УАКЗ и УАКСЗ для бинарного автомата Л выражается величиной 0(т • logm), где т — число переходов в автомате А. Основываясь на утверждении 6.4.1, получаем Следствие 6.4.2. Временная сложность алгоритма вычисления конгруэнтного замыкания отношения R для автомата А пропорциональна величине (ш • log k) • log (m • log к). Если автомат частичный, то задачу вычисления R или RS можно свести к предыдущей, если ввести для всех а и х таких, что /(я, х) = и>, где w — состояние неопределенности, специальное состояние a, которым расширяется множество А и для которого (\/х е X)f(a, x) = a . Из этого замечания следует, что данный алгоритм можно применить и к ациклическим автоматам, которые являются частичным. Но такое доопределение функции переходов может значительно увеличить число переходов в начальном автомате, что, в свою очередь, может отрицательно повлиять на эффективность алгоритма в целом. Рассмотрим другой возможный путь работы алгоритма УАКЗ с частичными автоматами. Сначала скорректируем определения R и RS для случая частичных автоматов. Такую коррекцию необходимо сделать, поскольку непосредственно воспользоваться векторами v(a) уже невозможно. Определение корректируется таким образом: aR V о aRa v ((Vjc e X) (/(я, x) = w &f(a\ x) = w)v (/(a, x) R*f(a\ x)), то есть состояния /(я, х) и f(a\ x) или оба неопределены, или определены и лежат в одном классе эквивалентности отношения R . Поставим в соответствие состоянию а вектор v(a) = (xiU xi2, ..., xujuj2, •••,7/), где х e X такой, что f(a, х) лежит в классе с именем jp, р = 1, 2, ..., I. Теперь алгоритм УАКЗ можно применить к автомату А с вектором v(a). Тогда, как и раньше, имеем aR V <=> aRa v v(a) = v(a'). Если вычисляется RS*, то aRS*a <=> aRa v (35) v{a) = S(v'(a')) = (хц, хп* -, ■*//» S(]\\ 5(72), •••, S{ji)\ где S— перестановка на именах классов. Таким образом, для вычисления RS*, как и раньше, необходимо привести в порядок вторую половину вектора v'(a). Построение векторов v\a) выполняется за время О(т), где т — число переходов в автомате А, если А представлять графом переходов. Если же А задается таблицей переходов, то это время выражается величиной 0(к • и), где к = \Х\9 ап — число состояний автомата Л. Если векторы вычисляются за время 0{т\ то алгоритм УАКЗ не изменяется, за исключением автомата Г, который в этом случае занимает вдвое больше
384 Часть II. Математические модели памяти, чем в предыдущем. Отсюда следует, что временные характеристики алгоритма не изменяются. 6.4.3. Алгоритм вычисления конгруэнтных замыканий для ациклических автоматов Если Х-автомат А = (Л, X,f) ациклический, то можно построить более эффективный алгоритм вычисления конгруэнтного замыкания для такого автомата. Введем некоторые необходимые понятия. Пусть R — отношение эквивалентности на множестве состояний автомата А. Говорят, что автомат А над R имеет цикл, если существует такая последовательность состояний a = bu Ьг, ..., &2* +1 = я, что fljbu- ь х) = &2/ для некоторого х из X и (ах, ац +1) е R (рис. 6.4.6). Автомат А над R называется ациклическим, если А над R не имеет циклов. Рассмотрим случай, когда А над R и А над R ациклические. Если автомат ациклический, то множество классов отношения R можно привести в порядок по уровням так, что состояния из классов верхнего уровня недостижимы из состояний классов нижнего уровня. Этот порядок может нарушиться в результате слияния классов разных уровней. Пусть К— некоторый класс разбиения R. Класс К будем называть фиксированным, если классы эквивалентности любого потомка всякого состояния а из К не могут измениться в процессе вычислений (эти классы фиксированы), то есть вектор v(a) произвольного элемента из К не изменяется в процессе вычисления R *. Фиксированными классами будут, например, классы разбиения /?, имеющие наиболее низкий уровень. Действительно, состояния из этих классов не имеют потомков, и потому их классы не могут измениться в процессе вычислений. Заметим, что когда сливаются два фиксированных класса, то в результате снова получаем фиксированный класс, и если хотя бы один из классов не фиксированный, то результат тоже будет нефиксированным классом. "I \ "I \ i / Рис. 6.4.6
Глава 6. Теория конечных автоматов 385 Для вычисления классов разбиения R воспользуемся функцией расщепления классов (см. разд. 6.3). При построении разбиения множества состояний на классы с помощью функции расщепления в качестве элементарного делителя берется пара (К, х), где х е Х9 а К— некоторый фиксированный класс. Выполнив расщепление для всех таких пар (К, х\ можно начинать поиск и построение других фиксированных классов. Вследствие идемпотентности функции расщепления классы К из дальнейшего рассмотрения можно изъять. Таким образом, стратегия вычислений такова: пока имеются фиксированные классы, выполнять расщепление; использованные в процессе вычисления фиксированные классы изымать из дальнейшего рассмотрения; построить новые фиксированные классы и, если они имеются, повторить процесс для новых фиксированных классов. Следовательно, при такой стратегии необходимо эффективно выполнять операции слияния классов и поиска фиксированных классов. Для выявления фиксированных классов необходимо просмотреть все классы, которые сливаются, для выяснения того, что ни один из них не сливается с нефиксированным классом. Если оказывается, что какой-либо класс не фиксирован, то все фиксированные классы, которые с этим классом должны сливаться, сливаются, и полученный класс откладывается до тех пор, пока не станет фиксированным. Для сохранения отложенных классов служит множество НЕГОТОВЫЕ в приведенном ниже алгоритме АКЗАА. Если же все классы, которые сливаются, фиксированные, то формируется новый класс и заносится во множество ДРОБ— множество элементарных расщепителей. Для сохранения "заготовок" для выявления фиксированных классов служит множество ГОТОВЫЕ, а для определения того, что класс фиксирован для любого состояния автомата А, заводится счетчик числа не- пройденных переходов из этого состояния. Эти счетчики изменяют свои значения в процессе расщепления классов, а начальные значения счетчиков находятся, очевидно, за один обход автомата А, то есть за время О(т), где m— число переходов в автомате А. Изменение значения R(a) счетчика состояния а выполняется таким образом: □ если a е L и L измельчается по (К, х), то если а е V = {а е L |/(а, х) е К], величина R(a) уменьшается на единицу; □ если ае L\L' = {a e L |/(я,x) e К}9 то R(a) не изменяется. Таким образом, если R(a) = 0, то классы потомков состояния а уже фиксированные, в противном случае не фиксированные. Если некоторый класс К откладывается, то это значит, что существует я е К такое, что R(a) Ф 0. Итак, если автомате над R и над /?* ациклический, то состояние а в процессе дальнейших вычислений обязательно должно попасть в некоторый фиксированный
386 Часть II. Математические модели класс. Если такое не случается, то А над R* имеет цикл. Это обстоятельство может служить условием проверки того, что А над R ациклический. Рассмотрим алгоритм вычисления конгруэнтного замыкания ациклических автоматов. АКЗАА (A, R) Начало. ДРОБ := {К Е R | Va G К г(а) .= 0}; РОЗБ := А \ ДРОБ; НЕГОТОВЫЕ := РОЗБ; Пока ДРОБ * 0 выполнить Для всех К из ДРОБ выполнить Для всех х из X выполнить Для всех L из РОЗБ выполнить ll := {a e L | f(a, x) e К); R(L') := R(L') - |L'|; L" := {a e L | f(a, x) G K) ; Если I/ * 0 & L" * 0 то Заменить L в РОЗБ на {I/', L"} ; Если r(L') = 0 то ГОТОВЫЕ : = ГОТОВЫЕ "и {I/} KE; Если i?(L") = 0 то ГОТОВЫЕ : = ГОТОВЫЕ U {L"} KE; KE; КЦ; КЦ; КЦ; ДРОБ := 0; Пока ГОТОВЫЕ Ф 0 выполнить Взять К из ГОТОВЫЕ; Формируй ЛГ по К; Если г (К) = 0 то (ДРОБ := ДРОБ U {К }; НЕГОТОВЫЕ := НЕГОТОВЫЕ \ {К } ) иначе НЕГОТОВЫЕ := НЕГОТОВЫЕ U {К } КЕ;
Глава 6. Теория конечных автоматов 387 КЦ; КЦ; Если НЕГОТОВЫЕ Ф 0 то стоп /* цикл */; Конец. В приведенном алгоритме используется оператор Формируй К по к, который проверяет фиксированность всех классов из множества ГОТОВЫЕ. Если обнаруживается, что некоторый класс или совокупность классов из множества ГОТОВЫЕ связаны с некоторым нефиксированным классом К\ то данный класс или совокупность классов изымается из множества ГОТОВЫЕ с соответствующей отметкой состояний в этих классах. Отметка служит для того, чтобы по необходимости повторно отложить класс или совокупность классов. Данные состояния уже не будут анализироваться, будут анализироваться лишь те состояния, которые еще ни разу не анализировались. Таким образом, использование такой отметки разрешает предотвратить повторный анализ состояний в классах. Если же на некотором шаге обнаруживается, что класс К фиксированный, и все классы, которые с ним связаны, тоже фиксированные, то по нему формируется новый класс, который получает имя и заносится в множество ДРОБ. Имеет место такое утверждение. Теорема 6.4.3. Временная сложность алгоритма АКЗАА для ациклического автомата А выражается величиной О(т), где т — число переходов в автомате А [83, 36]. Доказательство предлагается как упражнение. Заметим, что если в алгоритме АКЗАА использовать модифицированную функцию расщепленния (см. разд. 6.3), то с помощью данного алгоритма можно вычислять симметричные конгруэнтные замыкания ациклических автоматов. При этом временные характеристики алгоритма немного ухудшаются и выражаются величиной 0(к • т), где к = \Х\, а т-— число переходов в автомате, т. е., имеет место такое следствие. Следствие 6.4.3. Время, необходимое для вычисления алгоритмом АКЗАА симметричного конгруэнтного замыкания некоторого отношения эквивалентности для ациклического автомата Л, выражается величиной 0(к • т). 6.4.4. Контрольные вопросы □ Дайте определение отношения конгруэнтного замыкания. □ Дайте определение отношения симметричного конгруэнтного замыкания. □ Какую временную сложность имеет алгоритм УАКЗ?
388 Часть II. Математические модели □ Какую временную сложность имеет алгоритм УАКСЗ? □ Какие структуры данных используются в алгоритме УАКЗ? 6.4.5. Задачи и упражнения 1. Дайте доказательство теоремы 6.3.1. 2. Дайте обоснование того, что ациклический автомат не може быть полностью определенным. 3. Постройте пример, который показывал бы, что алгоритм построения конгруэнтного замыкания тождественного отношения эквивалентности для заданного автомата и алгоритм минимизации этого автомата дают разные результаты. 4. Постройте приведенный автомат для автомата А9 изображенного на рис. 6.4.2. 5. Докажите, что алгоритм УАКЗ правильно вычисляет результат, то есть, что алгоритм УАКЗ строит разбиение множества состояний на классы, отвечающие отношению эквивалентности R .
Глава 7 Модели алгоритмов и программ В данном разделе рассматриваются как классические, так и современные математические модели алгоритмов и программ. Хотя эти модели и не совсем адекватно отображают все свойства алгоритмов и программ, поскольку строятся путем абстрагирования, но с их помощью можно установить много полезных свойств. 7.1. Машины Тьюринга 7.1.1. Определение и функционирование Рассмотрим более детально понятие машины Тьюринга. Пусть X = {*i, *2,. •., хп] — конечный алфавит и F(X)— свободный моноид всех слов в алфавите X. Функцию/: F(X)n —» F(X) называют п-арной словарной функцией. Машина Тьюринга задает словарную функцию над алфавитом X и представляет собой пятерку объектов (X, Q, q0, #, Р) и правило функционирования, общее для всех машин, где X—алфавит машины, <2— конечное непустое множество, элементы которого называются состояниями, <?о е Q — выделенное состояние, которое называют начальным, # — специальный "пустой" символ, # £ Xu Q, Р — программа машины. Программа машины— это конечное множество слов, которые имеют вид qxq'x'd и называются командами, где q,q£ Q, х, х е Хи {#}, a d= {/, s, r] — символы направления движения для управления поведением машины,
390 Часть II. Математические модели причем /, 5, г £ X u Q. Кроме того, считается, что в программе Р никакие две команды не могут иметь одинаковые пары первых двух элементов. Правило функционирования поясним неформально на хорошо известной физической модели машины Тьюринга. Машина состоит из потенциально бесконечной (в оба конца) ленты, управления и головки, которая может перемещаться вдоль ленты (см. рис. 3.1.1). Лента разбита на клеточки, в которых могут быть записаны символы из алфавита X или символ #— пустой символ. Управление на каждом шаге работы машины находится в одном из состояний множества Q, расшифровывает программу, которая однозначно определяет поведение машины и управляет головкой. Головка в каждый момент времени находится против некоторой клеточки ленты и может воспринимать (читать) символы с ленты, записывать их на ленту и перемещаться вдоль ленты. Машина функционирует таким образом. В начальный момент времени на ленте записано некоторое начальное слово р из F(X), а управление находится в начальном состоянии до- Начальное слово и те слова, которые появляются в процессе работы машины, ограничены с обеих сторон пустыми символами #. Головка находится против клеточки, где записан первый символ слова р. Работа машины состоит в повторении такого цикла элементарных действий. 1. Читается символ, записанный в клеточке против головки. 2. Выполняется поиск применимой команды, то есть такой команды qxq'x'd, в которой q— текущее состояние управления, ах — прочитанный символ. 3. Выполняется команда, вызывающая переход управления в состояние q и запись в клеточку, находящуюся против головки, символа х (символ jc стирается). После этого головка перемещается влево на одну клеточку, если d = /, либо вправо на одну клеточку, если d = г, либо остается на месте, если d = s. Машина останавливается только в том случае, если на очередном шаге работы ни одна из команд не применима. Слово, оставшееся на ленте, является результатом работы машины. Это слово называется заключительным. Машина Тьюринга, перерабатывая начальные слова в заключительные, определяет некоторую словарную функцию, для которой начальное слово является аргументом, а заключительное слово— значением этой функции. Ясно, что работа машины может закончиться через некоторое время, а может и никогда не закончиться. Если машина Тьюринга прекращает свою работу (с некоторым словом на ленте), то функция, вычисляемая этой машиной, считается определенной, а если машина не останавливается, то значение соответствующей функции считается неопределенным. При интерпретации заключительного слова как значения функции пустые символы # игнорируются.
Глава 7. Модели алгоритмов и программ 391 Таким образом, машина Тьюринга Т задает некоторую частичную функцию fr и способ ее вычисления. Функция / называется частично вычислимой по Тьюрингу, если существует такая машина Тьюринга Г, что f=fr- В этом случае также говорят, что для функции / существует (частичный) алгоритм вычисления ее значений, определяемый машиной Тьюринга Т. Машина Тьюринга представляет собой формальную модель алгоритма. Действительно, для нее характерны такие свойства, как дискретность, детерминированность, элементарность шагов, направленность и массовость (см. разд. 3.1). Отметим также, что для машин Тьюринга характерны: □ конструктивность—машина представляет собою конечный объект, построенный по полностью определенным правилам; □ конечность — процесс вычисления значений функции/7, для которых она определена, состоит из конечного числа шагов; □ однозначность— результат работы машины однозначно определяется начальным словом. Пример 7.1.1 Пусть X ={(,), 0, 1, *} и р е F(X), где F(X) составляют те и только те слова в алфавите X, которые построены из первых двух символов X. Правильными словами называются: О е — пустое слово; □ если а — правильное слово, то слова (а), ()а, а() — тоже правильные. Пусть М с F(X) означает множество правильных слов. Построим машину Г, на ленту которой записываются слова из F(X). Г останавливается с результатом 1 на ленте, если слово р е М, и с результатом 0 в противном случае. Другими словами, Г должна вычислять значение предиката я: F(X) —> {0, 1} такого, что Г1,если ре М, я(р) = [О, если pg M. Искомая машина Тьюринга имеет такой вид: Т- ({(, ), 0, 1, *}, {go, q\, Яг, Цъ, quh <7o, #, Р\ где программа Р имеет такие команды: 1. <?о(<7оО\ 2. <?о) Ч\ * /, 3. до * Яо * г,
392 Часть II. Математические модели 4. q0#qi#l, 5. <?о (<7о * г, 6. ф * Ц\ * /» 7. 9i # (?4 Or, 8. 92 (9з # /, 9. 92 * 9з # /, 10. 92 #92 Ь, 11. 9з(9з#/, 12. 9з*9з#/, 13. 9з#9з0$, 14. 94 (94 # г, 15. q4)q4#r, 16. 94 * 94 # >"• Рассмотрим работу машины 7 на словах/?i = (()),/?2 = ((). Имеем ДрО = ?о(()) = (?о( )) = (Ы) = М*) =? (**<7о) = (*9i** = = ****^0# = ***д2* = **g2* = *g2* = g2* = 92# = 921. К слову 1, записанному на ленте, ни одна из команд Т не применима, следовательно, слово 1 — результат работы машины Т над словом р\. Для слова рг имеем ТХрг) = 9о(() = Ы ) = ((9о) = (9i(* = (*<7о* = (**<7о* = = (**9о# = (*92* = (92* = Яг( = 9з# = <7зО. В данном случае результатом работы является слово 0. ^ Функционирование машины Тьюринга можно описать с помощью протокола работы над заданным начальным словом. Пусть #у\~.укУк+\---Ут#— слово, появляющееся в процессе работы машины на ленте после выполнения некоторой команды машины, в результате которой машина находится в состоянии 9, а головка стоит против клеточки ленты, где записан к-и символ слова. Слово #у\...укЧУк+\---Ут# называется конфигурацией машины Т. Последовательность конфигураций, записанных в том порядке, в котором они появляются в процессе работы машины, называется протоколом работы машины Т. В приведенном выше примере процесс работы машины Тьюринга описывался с помощью протоколов.
Глава 7. Модели алгоритмов и программ 393 7.1.2. Словарное представление машины Тьюринга Машина Тьюринга однозначно задается своей программой. Если упорядочить некоторым способом ее команды и применить описанный ниже способ кодирования последовательности команд словом в алфавите машины Тьюринга, то можно получить ее представление в собственном алфавите. Пусть X— алфавит машины Тьюринга Г, a Q— множество ее состояний. Упорядочим некоторым образом множество Q. Пусть K(q)— порядковый номер состояния q. Введем дополнительный символ *, не входящий в X, и сопоставим каждой команде qaq'a'd слово в алфавите W = X и {#, /, г, р, *}: *K(q)a*K(q')a'd. Упорядоченной последовательности команд соответствует последовательность слов в алфавите W. Результатом конкатенации слов последовательности является слово рт, которое однозначно описывает машину Т. Следующий этап кодирования — это переход от представления машины Г в алфавите W к представлению ее в алфавите X. Если алфавит X имеет п символов, то, упорядочив его некоторым образом, упорядочим алфавит W так, чтобы дополнительные символы, не входящие в X, получили такие номера: К'(#) = п+ 1, Г(*) = п + 2, К\1) = п + 3, К\г) = п + 4, К{s) = n + 5. Закодируем слова из F(X) и F(W) числами, используя лексикографический порядок (см. разд. 9.1.9). Найдем номер слова рт из F(W) и, выбрав слово из F(X) с тем же номером, получим словарное представление ат машины Тьюринга в ее алфавите. По слову ат можно однозначно (с точностью до н омеров состояний) восстановить программу машины Т. Следует отметить, что одной и той же машине Тьюринга могут соответствовать различные словарные представления в ее алфавите в зависимости от способа упорядочивания множеств 2, X и Р, но по любому из таких представлений программа машины восстанавливается однозначно. 7.1.3. Алгоритмически разрешимые и неразрешимые проблемы. Пусть X—алфавит, М с F(X) — некоторое множество слов в этом алфавите. Характеристической функцией множества М называется полностью определенный на F(X) предикат %:М->{0, 1},
394 Часть II. Математические модели который задается таким образом: |Хесли ре М, [О,если р£М. Частичной характеристической функцией множества М называется функция %: М —» {1}, задаваемая таким образом: [1, если ре М, [не определена, если р£М. Множество М называется разрешимым, если его характеристическая функция вычислима, т. е. частично рекурсивна, и перечислимым, если его частичная характеристическая функция вычислима. Разрешимость множества М означает, что существует такая машина Тьюринга, которая всегда останавливается и дает возможность за конечное количество шагов установить; принадлежит или нет слово р из F(X) множеству М. Для перечислимого множества существует такая машина Тьюринга, которая останавливается тогда и только тогда, когда слово р принадлежит множеству М. В случае перечислимого множества машина Тьюринга не дает возможности точно установить, принадлежит или нет заданное слово множеству М, поскольку отсутствие ответа к некоторому моменту времени не несет никакой информации о том, появится ли он позднее. Но если машина остановилась, мы точно знаем, что данное слово принадлежит множеству М. Связь между разрешимыми и перечислимыми множествами выявляет теорема Поста. Теорема Поста. Множество MqF(X) является разрешимым тогда и только тогда, когда Ми его дополнение М' = F(X) \ Mперечислимы. Доказательство. Из разрешимости М следует его перечислимость. Действительно, машину Тьюринга Тм, которая вычисляет характеристическую функцию множества М, легко превратить в машину Тьюринга 7V, добавив Ъ к программе машины Т команды, которые зацикливают ее, когда она останавливается с результатом 0. Новая машина задает частичную характеристическую функцию множества М. Пусть Тм и Тм машины Тьюринга, задающие частичные характеристические функции множеств М и М'. Алгоритм, распознающий, принадлежит или нет слово р множеству М, сводится к следующей процедуре. Выполняется по одной команде каждой машины Тьюринга с одним и тем же словом р на ленте. Если после выполнения команды останавливается машина Тм, то результат работы алгоритма—символ 1. Если останавливается машина 7V, то результат— символ 0. Если ни одна из машин не останавливается, то выполняется
Глава 7. Модели алгоритмов и программ 395 следующая пара команд, и т. д. Поскольку р — это элемент либо из М, либо из Л/', то через конечное количество шагов либо Тм, либо 7V остановится. Таким образом, алгоритм вычисляет значения характеристической функции множества Л/, и можно построить машину Тьюринга Тм, реализующую этот алгоритм. Следовательно, множество М разрешимо. Теорема доказана. Определение разрешимого и перечислимого множеств можно перенести и на числовые множества и множества, элементами которых являются объекты более сложной структуры. Примерами разрешимых могут служить такие множества: □ пустое множество; □ множество всех слов в некотором алфавите Х\ П множество всех словарных представлений машин Тьюринга над алфавитом X. Перейдем теперь к знакомству с множествами, которые не являются разрешимыми и перечислимыми. Проблема остановки. Машина Тьюринга, работая над некоторым словом р из F(X), может как завершить, так и не завершить свою работу. Полезно было бы иметь алгоритм, который для всякого слова р из F(X) выяснял бы, остановится или нет машина Тьюринга при работе со словом р. Проблему остановки можно сформулировать также в терминах множеств. Пусть М— множество всех пар слов в алфавите X, где в каждой паре первое слово— это словарное представление некоторой машины Тьюринга, а второе такое, на котором машина, начав работу над ним, остановится. Проблема остановки теперь имеет такой вид: является ли множество М разрешимым? Теорема Тьюринга. Проблема остановки машины Тьюринга не является алгоритмически разрешимой. Доказательство. Необходимо установить, является ли вычислимой характеристическая функция gM: F(X) —» {0, 1}. Допустим, что это так и 7^,— машина Тьюринга, вычисляющая эту функцию. Из вычислимости функции gM и разрешимости множества М словарных представлений машин Тьюринга в алфавите X следует вычислимость частичной унарной функции G: F(X) —> {О, 1}, задаваемой таким образом: ~, ч [#л/(^Р)Длявсех Р^М, [не определена для всех р £ М. Следовательно, функция G связывает машины Тьюринга со своими собственными словарными представлениями.
396 Часть II. Математические модели Введем еще одну унарную функцию К: F(X) —> {0}, где „, ч \G(plecnnG(p) = 0\ К(р) = \ [не определена в противном случае. Ясно, что функция К вычислима, если вычислима функция G. Действительно, машина Тьюринга Тк полностью совпадает с машиной Тьюринга TG за исключением того, что, когда машина TG останавливается с результатом 1, тогда машина Тк зацикливается. Пусть Рк— словарное представление машины Тк в алфавите X. Попробуем выяснить, определено или нет значение Кфк), то есть попробуем решить проблему остановки для пары: машина Тк и ее словарное представление. Допустим, что значение Кфк) не определено, то есть машина Тк не останавливается, если она начала работу над словом Р*-. Тогда #м(Ра> Ра-) = 0, G(Pa-) = О и Кфк) = 0, то есть значение Кфк) определено. А это противоречит предположению. Допустим теперь, что значение Кфк) определено, то есть машина Тк останавливается, начав работу над словом Р*-. Тогда #м(Рк, Рк) = 1» G($K) = 1 и Кфк) не определено, что также противоречит предположению. Оба предположения о функции К приводят к противоречию, что опровергает гипотезу о вычислимости функции gM и разрешимости множества М. Теорема доказана. Доказанная теорема устанавливает существование функций, которые не являются вычислимыми (характеристическая функция gM). Из тезиса Черча следует, что для такой функции не существует алгоритм вычисления ее значений. Однако эта теорема не исключает возможности, что проблема остановки может оказаться разрешимой для некоторого более узкого класса машин Тьюринга. Проблема пустой ленты. Рассмотрим отдельный случай проблемы остановки. Выясним, разрешима ли проблема остановки машины Тьюринга, применяемой к пустой ленте, то есть к ленте, включающей только пустой символ #. Другими словами, необходимо выяснить, разрешимо или нет множество М словарных представлений всех машин Тьюринга, которые останавливаются, начав работу при пустой ленте. Теорема 7.1.1. Проблема пустой ленты не является алгоритмически разрешимой. Доказательство. Каждой паре (Г, р), где Т— некоторая машина Тьюринга, а р—слово в ее алфавите, поставим в соответствие машину Тр, программа которой совпадает с программой машины Т кроме того, что начав работу,
Глава 7. Модели алгоритмов и программ 397 машина Тр стирает начальное слово на ленте и записывает вместо него слово р. Конструкция машины Тр очевидна: к программе машины Т необходимо добавить соответствующим образом команды машины из упр. 6 (см. разд. 7.1.5). Машина Тр, начав работу с пустой лентой, ведет себя после записи слова р так, как и машина Г, применяемая к слову р. В частности, машина Тр остановится в том и только в том случае, если остановится машина Т. Допустим, что проблема остановки машины Тьюринга с пустой лентой разрешима. Отсюда следовала бы разрешимость проблемы остановки в общем случае. Действительно, для того чтобы узнать, остановится или нет некоторая машина Г, применяемая к слову р, необходимо сконструировать машину Тр. Выяснив, остановится или нет Тр при пустой ленте, мы тем самым узнали бы, остановится или нет машина Т. А это противоречит теореме Тьюринга и опровергает предположение о разрешимости проблемы пустой ленты. Теорема доказана. Для доказательства этой теоремы использовалась такая схема: выполнив некоторые вспомогательные построения, мы предполагаем разрешимость исследуемой проблемы и получаем возможность решить другую проблему, о которой известно, что она неразрешима. Полученное противоречие доказывает неразрешимость исследуемой проблемы. Такой способ доказательства называется методом сведения: известная неразрешимая проблема сводится к интересующей нас проблеме, а последняя — неразрешима. Этот метод применяется и в случае, когда доказывается, что интересующая нас проблема не является частично разрешимой. Однако следует указать, что метод сведения не является универсальным: существуют неразрешимые проблемы, не сводящиеся одна к другой. Проблема зацикливания. Приведем теперь пример, который утверждает существование неперечислимых множеств и проблем, не являющихся частично разрешимыми. Проблема зацикливания состоит в том, существует ли алгоритм (хотя бы частичный), который заранее определяет для любой машины Тьюринга и произвольного слова р будет ли данная машина работать над словом р бесконечно долго. То есть необходимо установить, будет ли разрешимым либо перечислимым множество Мс = F(XY всех пар слов таких, что первое слово — словарное представление машины Тьюринга, а другое — слово, на котором эта машина зацикливается. Теорема 7.1.2. Проблема зацикливания машин Тьюринга не является частично разрешимой. Доказательство этой теоремы опускается.
398 Часть II. Математические модели 7.1.4. Контрольные вопросы □ Дайте определение машины Тьюринга. □ Какая разница между машинами Поста и машинами Тьюринга? □ Какая функция называется характеристической функцией множества М с F(X)? П Дайте определение частичной характеристической функции. □ Дайте определение разрешимого и перечислимого множества. 7.1.5. Задачи и упражнения 1. Постройте машину Тьюринга, выполняющую • сложение; • умножение; • деление; • вычисление модуля разности натуральных чисел. 2. Постройте машину Тьюринга, моделирующую работу заданной машины Поста. 3. Постройте машину Поста, моделирующую работу заданной машины Тьюринга. 4. Постройте машину Тьюринга, выполняющую конкатенацию двух слов из 5. Покажите, что проблема остановки алгоритмически разрешима для машин Тьюринга, программа которых состоит из одной команды. 6. Постройте машину Тьюринга, стирающую с ленты произвольное начальное слово и записывающую на ленту слово 11001 в алфавите {0, 1}. 7.2. Конечные автоматы с одной лентой 7.2.1. Определение автомата с одной лентой Машины Тьюринга возникли как модель вычислений в связи с необходимостью изучения самого понятия вычислимости и установления взаимосвязей с основами математики. При решении практических задач, связанных в первую очередь с разработкой ЭВМ, не всегда возникает потребность в применении наиболее общей модели алгоритмов, иногда можно обойтись менее общими и "более разрешимыми" моделями. Поэтому были введены менее
Глава 7. Модели алгоритмов и программ 399 общие модели, чем машины Тьюринга, решения задач для которых давали хорошие практические результаты. Одна из таких моделей— конечные автоматы с одной лентой. Определение 7.2.1. Конечным односторонним детерминированным автоматом с одной лентой над алфавитом X называется система А = (Л, X, F, яо, #* / X где А — конечное непустое множеств состояний, X—алфавит (Л пХ=0), Fez! — множество заключительных (выделенных) состояний, яо— выделенное начальное состояние, # — пустой символ, /— программа автомата, представляющая собой множество команд, где команда— это слово, имеющее вид ax—>b4 где я, b е Л, a xg X, и для каждой пары (а, х) существует единственная команда, начинающаяся этими символами. Неформально конечные автоматы с одной лентой можно рассматривать как специальную машину Тьюринга, в которой: □ выделены заключительные состояния; □ машина читает символы, записанные на ленте, но ничего не может писать на нее; □ на каждом шаге машина, прочитав символ с ленты и перейдя в новое состояние в соответствии с программой работы, обязательно перемещается вправо на одну клеточку; □ машина, останавливается тогда и только тогда, когда она достигла конца слова, то есть символа #. Заметим, что программу /автомата с одной лентой можно рассматривать как функцию переходов обычного конечного автомата /:-А хХ-> А. Обозначим через /(яо, р) G F тот факт, что автомат Д, начав работу в начальном состоянии ао со словом р на ленте, завершает ее в одном из заключительных состояний. Определение 7.2.2. Говорят, что автомат А допускает слово р, если /(а, р) G F. Множество всех слов из F(X), допускаемых автоматом Л, обозначим Т(А). В разд. 6 мы видели, что проблема эквивалентности для конечных автоматов алгоритмически разрешима. Рассмотрим еще некоторые полезные свойства конечных автоматов с одной лентой.
400 Часть II. Математические модели 7.2.2. Проблема пустоты Предположим, что есть некоторый автомат А = (А, X,/, F, ао), о котором ничего не известно. Сколько нужно проверить слов с помощью автомата А, чтобы убедиться что Т(А) = 0? Теорема 7.2.1. Пусть А — конечный автомат с одной лентой. В этом случае Т(А) Ф 0 тогда и только тогда, когда А допускает некоторое слово р длины 1(р) <\А\. Доказательство. Предположим, что Т(А) * 0 и р— слово из Т(А) минимальной длины. Пусть 1{р) > \А\ = п. Отсюда сразу следует, что в графе переходов автомата А путь из яо в а е F имеет цикл. Но тогда существует и простой путь (см. разд. 4.3.4) из а0 в а. Следовательно, в автомате А из а0 в а можно перейти с помощью некоторого слова, длина которого меньше длины слова р. А это противоречит тому, что р — слово минимальной длины. Таким образом, 1(р) < \А\. Теорема доказана. Следствие 7.2.1. Для любого конечного автомата А с одной лентой проблема пустоты множества Т(А) разрешима. Действительно, для решения этой проблемы для автомата А с п состояниями необходимо пересмотреть \Х\п~ 1 слов длины п - 1. 7.2.3. Проблема бесконечности Рассмотрим теперь вопрос о том, когда множество Т(А) бесконечно. Лемма 7.2.1. Пусть А — автомат с п состояниями up— слово длины г из Т(А). Если п<г, то существуют такие слова у\ z,w из F(X), что х = yzw, гФе и все слова, имеющие вид yzmw, принадлежат множеству Т(А), т = 0, 1,2, .... Доказательство. Как и при доказательстве теоремы 7.2.1, должны существовать целые числа к и /Д < I < г, такие что/(ао,/?о*) =/(flo, Род- Пусть g = /?оь z = Pkh и> = ры. Поскольку к < /, то ясно, что z * е. Понятно, что х = yzw и yz =/?о/. Значит/(я<>, у) =/(яо> yz). Отсюда по индукции следует, что /(flo, у) =/(я<>, yzm). Теперь имеем: /(«о, р) =/(я<ь yzw) =/(/(oo, yz)w) =/(я<ь yzm), w) =/(flo, yzmw). Таким образом, все слова yzmw также принадлежат множеству Т(А). Теорема 7.2.2. Пусть А — автомат с п состояниями. Множество Т(А) бесконечно тогда и только тогда, когда Т(А) включает слово р длины г, где п<г<2п.
Глава 7. Модели алгоритмов и программ 401 Доказательство. В одну сторону доказательство следует из леммы 7.2.1. Допустим, что Т(А) бесконечно, тогда, поскольку алфавит X конечный, Т(А) должно иметь слова, длина которых превышает произвольное целое число. Пусть р е Т(А) и 1(р) > п. Тогда существуют такие целые числа к и /, к<1< lip), что/(ао, Рок) =/(яо> Род- Возьмем теперь новое слово р— минимальное из всех слов множества Т(А\ для которых существуют целые числа к и /, к < /, удовлетворяющие приведенному выше уравнению. Допустим, что I— наименьшее такое число, длина которого не превышает 1{р). Теперь мы не уверены в том, что 1(р)>п. Таким образом, если i<j<l, то /(До, Род Ф/iao, Poj)- Это доказывает, что / < л, поскольку функция/должна принимать наибольшее из п значений. Если / < i <j < l(p)9 то f(a0y род */(яо» Pq/)> поскольку в противном случае слово р' = ро/Рр/ было бы короче, чем слово р, удовлетворяющее наложенным условиям. Подсчитывая количество индексов, лежащих между / и /(р), видим, что /(р) -1 + 1 < п. Прибавив к обеим частям число / и применив предыдущее неравенство, находим, что /(р) + 1 < Ъх либо в более удобном виде /(р) < 2л. Если бы имело место соотношение п < /(р), то все было бы доказано, но возможно, что это не так. Допустим, что /(р) < п. Пусть у = роь z = Pki,w = ptn>, где п = /(р). Имеем неравенство, z ФI Пусть все слова yzmw принадлежат множеству Г(Л), и m— наименьшее целое число, такое, что п < к + mil -к) + (п - /). Ясно, что m Ф 0, поскольку к + (п -1)< п < п. Если 2л < к + mil - к) + (п - /), то п <к + (ш- 1)(/-/:) + in - /), потому что / - к < п < п. Но это невозможно, потому что число m было выбрано как наименьшее такое целое число. Следовательно, к + ш(/ - к) + in - I) < 2п. Левая часть неравенства представляет собой длину слова yzmw. Этим доказывается, что в TiA) существует некоторое слово, имеющее необходимую длину. Теорема доказана. Следствие 7.2.2. Для всякого конечного автомата с п состояниями и одной лентой можно через конечное число шагов выяснить, бесконечно ли множества TiA). 7.3. Магазинные автоматы 7.3.1. Определение магазинного автомата Рассмотрим еще одну модель, более простую чем машина Тьюринга, но более сложную чем конечные автоматы. Она состоит из бесконечных автоматов специального вида. Автоматы этого класса называются магазинными или push-down автоматами. Магазинный автомат— это обычный конечный Х-К-автомат, который называют управляющим, и у которого, кроме входного
402 Часть II. Математические модели и выходного каналов, есть еще канал для работы с магазином. Магазин представляет собой память, называющуюся магазинной памятью, в которой может храниться одно слово в некотором алфавите Г. Этот алфавит называется магазинным алфавитом и может отличаться от входного и выходного алфавитов автомата. Магазин удобно представлять в виде последовательности ячеек памяти, перенумерованных числами натурального ряда и размещенных по вертикали таким образом, что первая ячейка всегда становится верхней. Слово из п символов магазинного алфавита .Г размещается в верхних п ячейках магазина, а остальные заполняются специальным пустым символом, отличным от символов алфавита Г. Магазин может работать в двух режимах: чтения и записи. При чтении воспринимается буква, находящаяся в верхней ячейке. При этом эта буква стирается из этой ячейки, а часть слова, оставшаяся в магазине, смещается на одну ячейку вверх. В режиме записи, наоборот, слово, хранящееся в магазине, смещается вниз на одну ячейку, а в ячейку, которая при этом освободилось, записывается соответствующий символ. Магазинным автоматом называется пятерка А = (А, X, Y, Г, 5), где А — конечное множество состояний, X ,К, Г— конечные входной, выходной и магазинный алфавиты, не пересекающиеся между собой, а 5— функция переходов и выходов, в общем случае многозначная, которая отображает элементы декартового произведения А х X х Г на элементы декартового произведения А х Ух F(P). Хотя магазинный автомат определяется как конечный, имеющий вспомогательный канал для работы с магазином, с точки зрения абстрактной теории автоматов состояниями магазинного автомата нужно было бы считать пары {а, /?), где a G А, р— слово, записанное в магазине. Поскольку множество слов в алфавите /"бесконечно, то и магазинные автоматы — тоже бесконечные. Далее состоянием магазинного автомата условимся считать состояние управляющего автомата, а слово р— состоянием магазина. Функция переходов и выходов 8 характеризует действия магазинного автомата при разных состояниях его управляющей части, магазина и входных символах. Эти, в принципе неоднозначные, действия можно свести к одновременному выполнению конечного числа элементарных действий пяти типов: □ чтение символа из входного канала и переход в следующее состояние, которое является функцией прочитанного символа и текущего состояния автомата; □ передача символа в выходной канал и переход в следующее состояние. Выходной символ и новое состояние являются функциями только текущего состояния автомата;
Глава 7. Модели алгоритмов и программ 403 О чтение верхнего символа из магазина и переход в следующее состояние, которое является функцией прочитанного символа и текущего состояния автомата; □ запись в магазин символа и переход в новое состояние. Записываемый символ и новое состояние автомата определяются его текущим состоянием; □ переход в новое состояние, которое являются функцией текущего состояния (так называемый спонтанный переход). При таком определении функции переходов и выходов функционирование магазинного автомата можно задать прямоугольной таблицей. Столбцы этой таблицы соответствуют состояниям автомата, а строки разбиты на три секции: □ секция чтения входных символов, состоит из строк, соответствующих символам входного алфавита Х\ П секция чтения символов из магазина, состоит из строк, соответствующих символам магазинного алфавита Г\ О секция записи, состоит из строки, в которой указаны те символы выходного или магазинного алфавита, которые передаются на запись в выходной канал либо канал магазина. Секция также включает состояния, в которые при этом переходит автомат. В этой же строке указываются состояния, в которые автомат может перейти спонтанно. Пример 7.3.1 Магазинный автомат, функции переходов и выходов которого заданы в табл. 7.3.1, работает таким образом. В состоянии 1 этот автомат либо воспринимает входной символ, либо записывает символ S в магазин. Если на его вход поступит символ jc, то автомат может остаться в том же состоянии либо перейти в состояние 4. В состоянии 2 автомат либо читает символ из магазина, либо выдает символ и в выходной канал. Таблица 7.3.1. Переходы и выходы магазинного автомата Входные символы Входные состояния 1 У Q S 1,4 5 2, S 3, Q"1 2, и 5 2,4 4,0 1,2 4.СГ1 1.S"1 3,4,5
404 Часть II. Математические модели A = ({l929394,5hX={x9y}9Y={u,vir={Q,S}) При чтении из магазина его верхний символ стирается (для этого символы Q и S записаны в отрицательной степени во второй секции таблицы). В состоянии 4 автомат либо выполняет спонтанный переход в одно из состояний: 1 или 2, либо воспринимает входной символ. При этом, если на его вход подается символ х, то переход автомата считается незавершенным, а состояние не определенным. То же будет и в случае, когда автомат читает из магазина пустой символ. * 7.3.2. Представление языков в магазинных автоматах Назовем переход магазинного автомата из состояния а в состояние Ъ правильным, если как в начальном, так и в заключительном состоянии этого перехода магазин автомата пустой. Другими словами, переход правильный, если все символы, записанные в процессе этого перехода в магазин, оказываются прочитанными из магазина и автомат никогда не пытается прочитать символы из магазина, которые он туда не записывал. Магазинный автомат называется настроенным^ если в нем выделены начальное состояние яо и множество заключительных состояний Fez Л. Будем говорить, что магазинный автомат воспринимает входное слово р, если возможен такой правильный переход из начального состояния в одно из заключительных состояний, при котором прочитанные по входному каналу символы в точности составляют слово р. Магазинный автомат порождает слово q, если возможен такой правильный переход из начального состояния в одно из заключительных состояний, при котором символы, поданные в выходной канал, в точности составляют слово q. Будем также говорить, что магазинный автомат воспринимает (порождает) некоторый язык L, если он воспринимает (порождает) все слова этого языка и только их. Теорема 7.3.1. Если язык L порождается некоторым магазинным автоматом А, то существует магазинный автомат Д воспринимающий этот язык. Доказательство. Переходы из первой секции, которые соответствуют чтению символов входного алфавита, перенесем в третью и будем их интерпретировать как переходы, сопровождающиеся передачей символов в выходной канал. И наоборот, переходы из третьей секции, сопровождающиеся передачей символов в выходной канал, перенесем в первую секцию. При этом, очевидно, правильный переход из начального состояния яо в заключительное состояние Ь, при котором воспринимается слово р и порождается слово q.
Глава 7. Модели алгоритмов и программ 405 также будет правильным, но при этом будет восприниматься слово q, а порождаться — слово р. Теорема доказана. Это простое утверждение дает возможность в дальнейшем ограничиваться магазинными автоматами без выходов, которые могут только воспринимать языки. 7.3.3. Анализ магазинных автоматов Алгоритм анализа магазинных автоматов строит по таблице переходов магазинного автомата систему уравнений, наименьшим решением которой является язык, воспринимаемый этим автоматом. Обозначим через Ху язык, воспринимаемый некоторым магазинным автоматом, если состояние / выбрать как начальное, а состояние j— как единственное заключительное состояние. Для обозначения множества состояний, в которые можно перейти за один такт работы из состояния / в результате элементарных переходов каждого из четырех типов, о которых шла речь выше (переход, при котором выполняется подача символа в выходной канал, не рассматривается), введем такие обозначения: □ Ni — для спонтанных переходов; □ KitX — для переходов, при которых читается входной символ х\ □ KitR — для переходов, при которых читается символ R из магазина; □ М;я — для переходов, при которых выполняется запись символа R в магазин. Обозначим AR множество всех состояний, в которых возможно чтение символа R из магазина, е,,-— события, которые состоят из одного пустого символа, если i=j9 и пустые, если i*j. По определению правильных переходов и элементарных действий, соответствующих одному такту работы данного автомата, язык Ху задается уравнением Xii=Euv v xuv v v xXuv v v v v XklXmj. J J leNj J xeXleKix J Re ГkeM, R leAR meKIR J Рассматривая систему таких уравнений для всех пар (/, j), можно получить ее наименьшее решение, которое и будет задавать совокупность языков Ху (ij E А). Если рассматривать автомат А как. настроенный с начальным состоянием 1 и множеством заключительных состояний F, то язык, воспринимающийся этим автоматом, будет задаваться соотношением ЦА)= v Xu. ieF
406 Часть II. Математические модели Пример 7.3.2 Пусть А = ({1, 2, 3, 4}, {х, у}у {/?},/) — магазинный автомат без выходов, в котором 1 — начальное состояние, состояние 3 — заключительное, а функция переходов задается табл. 7.3.2. Таблица 7.3.2 Входные символы Входные состояния X У 2 4 1.Я 3,/?1 Из таблицы переходов этого автомата легко найти, что Nx = N2 = N3 = /V4 =0, Ku = {2}, K3tX = KUy = {4}, &2, jc = ^2, у = ^3, у = ^4, x = ^4, у =0» Искомая система уравнений, определяющая язык, представленный в этом автомате, имеет такой вид: Хц=е v xX2\ vyX3i; Х3{ = хХ4\\ Х\2 = хХ22 v уХ32\ Х32 = хХ42\ Ххз = хХ23 v уХ33- X33 = ev хХЛЗ\ Хы = хХ24 v уХ34\ ^34 = хХи\ Х2Х=ХХАХЗХ\ Хц = 0; Х22 = ev хХХ4Х32\ Х*2 = 0 Х23 = Х^зз; ^43 = 0 ^24 = ^14^34» ^44 = £• Пользуясь общей рекурсивной схемой решения таких систем уравнений, приходим в результате к языку Х[3, который нас интересует: Xn = xXuvy\ Х14 = хХ\4Х v ух. Из второго уравнения следует, что Хи = {хпухп \ п > 0}, тогда Х13 = {хп + хухп + ' | п > 0} и {у} = {хпухп | лг > 0}. ^
Глава 7. Модели алгоритмов и программ 407 7.3.4. Синтез магазинных автоматов Приведем алгоритм синтеза, который по КС-грамматике G = (2, Г, Р, а) (см. разд. 8.2) строит магазинный автомат = (А, Ху Г, яо, #закл) с начальным состоянием а0 и единственным заключительным состоянием а2акл. Автомат AG воспринимает язык L(G), порождаемый грамматикой G. Входной алфавит X автомата Ас совпадает с терминальным алфавитом Т грамматики G. Магазинный алфавит Г состоит из символов нетерминального алфавита и символов, которые являются двойниками терминальных: Г= £ u [yt 11G Т). Двойники введены для того, чтобы выполнялось условие Гг\Х = 0. Множество А состояний автомата опишем в процессе задания функции переходов/. В начальном состоянии я0 автомат записывает символ а в магазин и переходит в состояние азакл— единственное заключительное состояние, находясь в котором автомат может читать символы из магазина. Когда автомат AG читает из магазина символ Y/ (двойник терминального символа), то при этому он переходит в состояние, которое обозначается at. Если после этого на вход автомата AG подается символ t, то он переходит в состояние Язакл, а в остальных случаях переход из состояния at не определен. Отметим, что множество {at \ t е Т) — это все состояния автомата, в которых он может читать символы из входного канала. Если в состоянии Язакл автомат читает из магазина символ £ е £, то он переходит в состояние а^. Из этого состояния автомат может спонтанно перейти в одно из состояний л(р1), а(Р2)у •••» а(рк)> гДеРь --чРк—все те и только те слова в алфавите 1иГ, для которых в грамматике G есть продукции £ —» р е. Если G включает продукцию £ —> е, то за состояние Я(е) выбирается состояние Язакл- Из состояния а^ (р Е {р\, ..., /?*}) автомат за несколько тактов работы (число этих тактов равно длине слова р) переходит в состояние азакл. При этому он записывает в магазин слово р и первая буква этого слова будет в магазине верхней. При переходе из состояния я^, где p = t\...tm, t\, ..., tmG Г, в состояние аъакл как промежуточные используются состояния a(t t ла(, t л и т. д. В состоянии a(t , ч автомат AG записывает в магазин символ tb если г* е £ либо его двойник, если h Е Г, и переходит в состояние a{tx..xkx) 9 если * > 1, либо Язакл, если k=l. Таким образом, состояния автомата Ас, обеспечивающие запись правых частей продукций в магазин, могут быть представлены в виде а^ где р— начальное подслово правой части некоторой продукции грамматики G. Отметим, что начальные подслова разных продукций могут совпадать. 14 3ак. 3427
408 Часть II. Математические модели Мы не даем детального доказательства того, что язык L(G) совпадает с языком, который воспринимается автоматом Ас- Отметим только, что оно выполняется путем доказательства включения одного множества в другое и наоборот. А доказательство каждого из таких включений использует связь между последовательностью применяемых продукций и последовательностью, в которой символы нетерминального алфавита читаются при выводе (в грамматике G) либо восприятии одного и того же слова р Е F(T). Оказывается, что нетерминальные символы читаются из магазина в последовательности, соответствующей левому выводу слова р в грамматике G (вывод ро, ри • • •, Ри Ро = <т, pi = р и pi ? +1 получаемый из р,- применением продукции к одному из нетерминальных символов, называется левым, если на каждом из I шагов вывода продукция применяется к самому левому нетерминальному символу). Пример 7.3.3 Будем синтезировать автомат, воспринимающий язык L(G), где G = ({x, у], {а, £}, {<т -> хсх, а -» £, £ -> yty, £ -» х), а). В соответствии с приведенным выше алгоритмом синтеза определим входной и магазинный алфавиты, а также множество состояний синтезируемого автомата AG: Х= {х, у), Г= {а, £, уХ9 уу], А = {а0, Озакл, я*. ty> <Wifc fl(«w). flW), Щхь а(*,ЪаШ>а(у&а(у)}- Теперь можно построить таблицу переходов автомата, состоящую из семи строк и тринадцати столбцов (табл. 7.3.3). Входные символы X У a 5 Y Y Таблица 7.3.3 Входные состояния а* с ^закл ЯЗмкл Яо а* ах ау за* ^закл аау ^закл «fe а* **»»> «to *Ь> Я(0 ^ а(хо) аМ Ззакл аа,д a*W> «to a^W 5 Yy S Язакл Щю) ^v) Эзакл <
Глава 7. Модели алгоритмов и программ 409 Следует отметить, что описанный алгоритм не наилучший, поскольку построенные по нему автоматы не всегда простые. Так, в случае праволиней- ных или леволинейных грамматик, языки, порождаемые этими грамматиками, будут регулярными, следовательно могут восприниматься конечными автоматами. Описанный же алгоритм синтеза строит магазинный автомат, в котором магазин используется всегда. В этом и состоит один из основных недостатков приведенного алгоритма синтеза. Способы повышения эффективности алгоритма синтеза можно найти в [55]. 7.3.5. Контрольные вопросы □ Дайте определение магазинной памяти. □ Дайте определение магазинного автомата. □ Почему магазинные автоматы можно рассматривать как бесконечные автоматы? □ Какие элементарные действия выполняются одновременно при работе магазинного автомата? 7.3.6. Задачи и упражнения 1. Используя алгоритм анализа магазинных автоматов, построить языки, которые: • представлены в таких автоматах, как табл. 7.3.4; • получены в результате выполнения алгоритма синтеза в упр. 2. Таблица 7.3.4 Входные символы Входные состояния 1 2 3 4 5 а 2 5 Ь 3 4 Р 2, Р"1 Q 1.СГ1 1,Р 4, Q 2. Используя алгоритм синтеза магазинных автоматов, построить магазинные автоматы, представляющие языки, заданные такими грамматиками: • G = ({a,M, {а,£},а,Р),где
410 Часть II. Математические модели Р = • G = ({a,b), {ст, £}, ст, Р), где Р = \ • G = ({x,y), {ст,^},а,Р),где Р = • G = ({a,b}, {ст^},ст,Р),где Р = а—>а, а—>е, а —> а£&, а—>л£; a-^aay а—>а, 7.4. Дискретные динамические системы Понятие дискретной динамической системы является обобщением понятия автомата, введенным как математическая модель замкнутых систем, то есть таких систем, в которых смена состояний происходит независимо от состояния окружающей среды. Пусть 5— некоторое множество, называемое пространством состояний. Процессом в пространстве состояний S называется любое конечное (либо
Глава 7. Модели алгоритмов и программ 411 бесконечное) слово (сверхслово) в алфавите S. Длительностью конечного процесса р = %?i...s„ называется число п на единицу меньше длины слова р. В частности, длительность процесса р = s будет считаться нулевой. Для заданного конечного процесса р = %*i...s„ будем говорить, что он начинается в состоянии so, заканчивается в состоянии sn и записывается с помощью р выражения s0 —> sn. Если p = soS\...sn и te {1, 2, ..., п- 1}, то говорят, что в момент времени t процесс р проходит через состояние st, которое обозначается p(i). Условимся обозначать множество всех процессов в пространстве S через Proc(S). На этом множестве определена частичная операция r = p*q последовательной композиции процессов р и q: если р— конечный процесс, заканчивающийся в том же состоянии, в каком начинается процесс q (возможно и бесконечный), то г является словом (либо сверхсловом), которое возникает вследствие операции конкатенации слова р без последнего символа и слова (либо сверхслова) q. Если процесс г представить в виде последовательной композиции двух процессов р и q (г = р * q), то р называют началом процесса г, q — его концом, а г— продолжением процесса р. Пространство состояний S, которое рассматривается вместе с некоторым множеством F допустимых процессов (F с Proc(S)), называется дискретной динамической системой, если F удовлетворяет таким условиям замкнутости: □ всякое начало допустимого процесса допустимо; □ если любое конечное начало бесконечного процесса р допустимо, то и сам процесс р также допустимый. Дискретную динамическую систему с пространством состояний S и множеством допустимых процессов F будем обозначать (5, F). Примерами дискретных динамических систем могут быть как детерминированные, так и недетерминированные автономные автоматы без выходов. В этом случае S представляет собой множество состояний автомата, а множество F определяется начальным состоянием и его функцией переходов. Для системы (5, F) определим функцию переходов 8 как отображение, при котором каждому процессу р из F сопоставляется множество 8(р) = {s\ps G F} всех тех состояний, которыми можно продолжить этот процесс. Таким образом, функция переходов в системе однозначно определяется множеством допустимых процессов. Легко понять, если известно множество допустимых процессов нулевой длительности, то функция переходов дает возможность определить и все множество допустимых процессов. Исходя из определения функции переходов дискретной динамической системы, можно выделить такие интересные подклассы. Система называется детерминированной, если для каждого конечного допустимого процесса р
412 Часть II. Математические модели множество 8(р) включает не более одного состояния. Для детерминированных систем заданием начального процесса определяется весь процесс. Система называется автоматной, если для любого конечного допустимого процесса soSi...s„ функция переходов удовлетворяет соотношению b(soS\...sn) = b(sn), то есть процесс, который предшествует попаданию в состояние sn, не влияет на дальнейший переход. Система называется свободной, если она автоматная и для всех s из S выполняется равенство b(s) = S и множество допустимых процессов нулевой длительности совпадает с 5. Для свободной системы, как легко понять, множество допустимых процессов совпадает с множеством Proc(S). Система S с множеством допустимых процессов F называется настроенной, если в ней выделены такие множества So и S начальных и заключительных состояний, что So n 5* = 0. Пара (So, S*) называется настройкой системы. В системе, где задана настройка, выделяют допустимые процессы, начинающиеся в состояниях из So и заканчивающиеся в состояниях из S . Такие процессы называются терминальными. Множество всех таких процессов обозначается Term(S). Иногда при определении терминальных процессов требуют, чтобы они не включали заключительные состояния как промежуточные. Рассмотрим примеры дискретных динамических систем, представляющие собой композицию автоматов. Дискретные преобразователи. Пусть А— конечный Х-У-автомат Мили; В— У-Х-автомат Мура (как правило бесконечный). Пространством состояний дискретной динамической системы является множество всех пар (а, Ь), где as A,be В. Функцию переходов этой системы задаем равенством 8(а,6) = (я',П где а = 8д(а, д:) и х— отметка состояния Ъ в автомате Мура В,Ъ- ЬВ(Ь, у) и у = ХА(а, х). Как правило, дискретные преобразователи являются настроенными, причем настройка (So, S ) имеет вид So = (a, b), S = (А , В), а е Л, Ъ е В, А с Л, то есть функционирование схемы начинается с установки обоих автоматов, входящих в систему, в некоторые фиксированные состояния, а заканчивается в тот момент, когда автомат А, управляющий системой, окажется в одном из заключительных состояний. Состояние автомата В, в котором он пребывает в момент остановки автомата А, трактуется как результат работы дискретного преобразователя. Автомат А в такой системе называется управляющим, а автомат В— операционным. Графически дискретный преобразователь можно изобразить в виде такой композиции автоматов А и В, в которой вход одного автомата соединен с выходом другого и наоборот (рис. 7.4.1).
Глава 7. Модели алгоритмов и программ 413 А У X В Рис. 7.4.1 Машины Тьюринга. Машина Тьюринга тоже может быть представлена в виде композиции двух автоматов. Один из них — конечный автомат Мили— называется управляющим, а другой — бесконечный автомат Мура — лентой. Входным алфавитом автомата Мили и выходным алфавитом автомата Мура служит алфавит X машины Тьюринга. Состояниями ленты являются пары (g, и), где g: Z—>X— отображение множества целых чисел в алфавит X, а п — номер клеточки ленты, на которую установлена головка машины Тьюринга. Настройка машины Тьюринга выполняется так, что управляющий автомат устанавливается в некоторое начальное состояние, фиксируется начальное заполнение ленты и головка машины устанавливается на клеточку с номером 0. Отметим, наконец, что магазинные автоматы тоже можно рассматривать как дискретные динамические системы. 7.4.1. Контрольные вопросы □ Дайте определение дискретной динамической системы. □ Приведите известные Вам примеры дискретных динамических систем. □ Дайте определение дискретного преобразователя. □ Будет ли конечный автомат с одною лентой дискретной динамической системой? 7.4.2. Задачи и упражнения 1. Дайте полную и строгую модели машины Тьюринга как дискретной динамической системы (более детальную, чем приведена выше). 2. Представьте машину Тьюринга в виде дискретного преобразователя. 3. Представьте дискретный преобразователь машиной Тьюринга, если это возможно.
414 Часть II. Математические модели 7.5. U-Y-схемы программ над памятью Рассмотрим одну из самых распространенных графовых моделей программы — fZ-K-схему программы над памятью. Пусть D—некоторое множество, на котором определены операции сигнатуры Q, предикаты сигнатуры П, и в котором принимают свои значения переменные из множества R = {гь г2, ..., rm) (память). Пара (Д Q) — это универсальная Q-алгебра, которую будем называть алгеброй данных, а частичное отображение £:/?—» D — состоянием памяти. Множество состояний памяти В будем называть информационной средой. Если T(Q, R) как и раньше означает Q-алгебру термов над /?, то отображение Ъ можно продолжить на все множество T(Q, /?), если положить b{t{ru ..., rm)) = t(b(nl ..., b(rm)). При этом, если b(ri) (/= 1, 2, ..., т) не определено, то левая и правая части считаются неопределенными, а равенство двух выражений имеет место тогда и только тогда, когда обе части принимают одинаковые значения либо обе не определены. Рассмотрим множество выражений вида u(t\, ..., f„), где и — символ и-арного предиката из П, a t\, ..., tn e T(Q, /?). Каждое такое выражение означает предикат на множестве В. Значение этого предиката при заданном состоянии памяти b E В определяется как u(tu...,tn)(b) = u(b(ti)9...9b(tn)y Пусть £/(/?, Q, П)— множество всех таких выражений, а О — множество пропозициональных булевых функций от выражений из U(R, £2, П). Элементы множества £/(/?, Q, П) будем называть базовыми условиями над памятью /?, а элементы множества О —элементарными условиями над памятью R. Оператором присваивания называется выражение, имеющее вид у = (г := t(r)) = (п := Г,(г), ..., rm := tm(r)\ где г = (ги ..., rm\ ti(r\ ..., tm(r)G T(Q, /?), ru ..., rm e R. Каждый оператор присваивания у задает некоторое преобразование на множестве В. Преобразование, выполняемое оператором у на В, определяется равенством [^),i;.e(r,,..,rj(i = l,2,...,m); Если g = у\У2--- Ук— произведение операторов присваивания, то ему соответствует преобразование yg9 равное последовательной суперпозиции преобразо-
Глава 7. Модели алгоритмов и программ 415 ваний, соответствующих операторам уиуг, • •, у к- Пусть Y(R, Q)— множество всех операторов присваивания. Элементы этого множества будем называть базовыми операторами. Пара (£/(/?, £2, П), Y(R, Q)) называется стандартным базисом над памятью R, определяемым сигнатурой (Q, П). Если U с U(R, Q, П), Y с Y(R, Q), то (стандартной) U-Y-схемой программы над памятью R (либо просто U-Y- схемой программы) называется множество состояний А схемы программы вместе с множеством переходов ScAxUxY*xAn двумя выделенными состояниями: начальным яо и заключительным а , где Y — множество всех слов в алфавите Y. Слова в алфавите Y, то есть последовательности базовых операторов, будем называть элементарными операторами. Пусть (а, и, у, b), (d, щ, у\, с) е S. Если a = d, a b* с либо у Ф у\, то состояние а называют ветвлением, если же Ь = с, a a*d либо уФуи то состояние Ъ называют слиянием. Если (а, и, у, Ь) е 5, то говорят, что данный переход ведет из состояния а в состояние Ъ. Выделенные состояния характеризуются тем, что в S нет ни одного перехода, который ведет в состояние ао, и ни одного перехода, который ведет из а . Путем I длины п, ведущим из состояния а в состояние Ъ (l(a, Ь)), называется последовательность состояний а\ = а, аг, ..., ап - Ь, связанных переходами (a,-, uh yh ai+\), i = 1, ..., n - 1. При этом путь / из состояния а в состояние Ъ называется линейным участком, если для всех /=1, ..., и-1 в множестве переходов S существует единственный переход, который ведет из состояния а, в а, + 1. Состояние а называют входом линейного участка, а состояние Ъ — выходом. С каждой fZ-K-схемой программы над памятью можно связать орграф G = (Л, Е), дуги которого помечены таким образом: если {а, и, у, Ь) е 5, то {a, b)e E и помечена парой и I у, а Рг(д0) = 0 и Ps(a*) = 0. Процесс выполнения U-Y-схемы программы при заданном начальном состоянии памяти bo е В—это последовательность пар (яь Ь\), («2, Ьг)9 ..., (ап, Ьп), ..., где а\ = а0, Ь\ = 60, щ е А, Ъ\ е В (i = 1, 2, ....), а для всякой пары (я,-, я/ + О состояний £/-У-схемы программы в множестве S существует переход (я,-, и,, у/, a/ + i), такой что м,(Ь,) = 1 и bM=yl{bi). Процесс выполнения £/-У-схемы программы называется терминальным, если он конечный и последняя пара имеет вид (а , Ь), где а —заключительное состояние. (7-К-схема программы вместе с заданным начальным состоянием памяти boG В будет называться U-Y-программой над памятью (либо просто U- Y-программой).
416 Часть II. Математические модели tZ-У-программы задаются разными способами. Наиболее распространенными являются такие три представления: текстовое, графовое и в виде составного объекта. Пример 7.5.1 (/-^-программу умножения целых положительных чисел х и у, которую будем обозначать УМН(л, у) с результатом z9 можно задать тремя способами. 1. Текстовое представление [/-У-программы УМН(*, у). Начало и := х; z := 0; Пока (и Ф 0) выполнить и := и - 1; z := z + у; КЦ; Конец. / 2. Графовое представление fA-K-программы УМН(*, у). Во 1i/:=x; I ► at ► а* (u*0)le I (^ = 0)/е y2 = (i/:=ty-1; *:=* + у;) Рис. 7.5.1 3. Представление fZ-У-программы УМЩх, у) составным объектом (символ * означает пустой составной объект).
Глава 7. Модели алгоритмов и программ 417 ►» ► : ►• —► * i i i i ^ у := := пока < 1 /\ /\ / \ и х z О Ш ; ^ . —I ТУТ А А Л u 0 u z + л л U 1 2 у Рис. 7.5.2 < Схемы программ над памятью можно представлять с помощью термов алгебры алгоритмов Глушкова Z. Действительно, если за базис множества ОП взять множество операторов присваивания, а за базис для УМ— множество элементарных условий, то между алгеброй Z и fZ-У-схемами программ над памятью устанавливается связь, которая выражается такой теоремой. Теорема 7.5.1. Всякому регулярному выражению из Z молено сопоставить U-Y-схему программы над памятью и, наоборот, всякой U-Y-схеме программы над памятью молено сопоставить регулярное выражение алгебры алгоритмов Z [15]. £/-У-схему программы, построенную по регулярному выражению, будем называть регулярной. Пример 7.5.2 Представление (7-К-программы УМН(*, у) регулярным выражением: t = (и := х\ z := 0;) {и := и - 1; z := z + y\) = PQR {ST}. < Как уже указывалось в разд. 2, возможность представления программы в виде выражения алгебры алгоритмов позволяет проводить над программами формальные преобразования. Эти преобразования основываются, прежде всего, на тождественных и квазитождественных соотношениях алгебры алгоритмов, а также на инвариантных соотношениях, о которых пойдет речь несколько позже. УМН \
418 Часть II. Математические модели 7.5.1. Контрольные вопросы □ Дайте определение £/-К-схемы программы над памятью. □ Какие операции алгебры алгоритмов Вы знаете? □ Какое различие между тождественностью и квазитождественностью? □ Какая £/-К-программа называется регулярной? □ Каким образом обозначаются вершины и дуги в графе переходов (/-^-программы? 7.5.2. Задачи и упражнения 1. Дайте доказательство теоремы 7.5.1. 2. Можно ли представить схему программы над памятью с помощью машины Тьюринга? 3. Какая программа соответствует схеме программы над памятью, граф которой ациклический?
Глава 8 Формальные грамматики и формальные языки Появление понятия формального языка связано, прежде всего, с поиском подходящей математической модели для естественных языков, таких как украинский, русский, английский, и т. д. В конце 1950-х годах появилось несколько работ, заложивших основы формальных языков и формальных грамматик. Значительный прогресс в этом направлении начался в 1960 году, когда было выявлено, что класс формальных языков типа Алгол-60 совпадает с классом контекстно-свободных языков. Большое участие в этом процессе приняли специалисты по применению ЭВМ для исследования естественных языков и специалисты по языкам программирования. При этом был получен ряд теоретических результатов, связанных с математическим обеспечением ЭВМ и, в частности, с методами программирования. В данном разделе рассматриваются основные понятия и методы теории формальных грамматик и языков, носящих название регулярных и контекстно- свободных. 8.1. Регулярные грамматики и их свойства 8.1.1. Определение формальной грамматики Любой формальный язык—это множество слов в некотором конечном алфавите. К таким языкам относятся, в частности, искусственные языки для общения человека с вычислительной системой, называемые языками программирования. Для того чтобы задать такой искусственный язык, необходимо: □ задать алфавит, то есть множество символов (или букв), каждый из которых можно размножать в неограниченном количестве экземпляров; □ описать формальную грамматику языка, то есть множество правил, по которым из символов алфавита строятся такие последовательности символов,
420 Часть II. Математические модели которые принадлежат данному языку и называются правильными словами. Слова отделяются одно от другого с помощью специального символа алфавита— пробела (промежутка стандартной длины) между символами алфавита, превышающего длину любого из промежутков, возможно, встречающихся в середине символов алфавита. Необходимо заметить, что правила формальной грамматики можно рассматривать как правша вывода—элементарные операции, применяемые в некоторой последовательности к начальному слову и порождающие только правильные слова. Сама последовательность правил, используемых в процессе порождения данного слова, называется выводом. Формальные грамматики по способу задания правильных слов делятся на грамматики, порождающие слова, и грамматики, распознающие слова. К грамматикам первого типа относят грамматики, дающие возможность строить произвольное правильное слово вместе с его структурой, и которые не строят ни одного неправильного слова. К грамматикам второго типа относят грамматики, которые для произвольного слова дают возможность установить, правильное ли это слово, и если оно правильное, то выяснить его строение. Перейдем к формальному понятию грамматики, которое впервые было сформулировано Хомским в 1967 году [74]. Определение 8.1.1. Порождающей грамматикой (или просто грамматикой), называется упорядоченная четверка объектов G = (VT,VH,a,/>), где Vt—конечный алфавит символов, элементы которого называются терминальными символами {основной терминальный алфавит), Vw— конечный вспомогательный алфавит, элементы которого называются нетерминальными символами и обозначаются малыми буквами греческого алфавита, ае Vh— начальный нетерминальный символ (аксиома), Р = {и,- —» v,-1 / = 1, 2, ..., к} — конечная система подстановок, левые и правые части которых являются словами в алфавите V= Vj u Vh- Символ —> не принадлежит алфавиту V. Символы алфавита Vt представляют собой элементарные единицы порождаемого языка. Символы алфавита Vh — метапеременные, используемые при выводе правильных слов (для естественных языков такими переменными являются грамматические классы: существительные, глаголы, причастия и т.д.). а— аксиома, из которой выводятся все правильные слова (в естественных языках аксиоме соответствует грамматический класс "предложение"). Р—схема грамматики. Она состоит из правил вывода, т. е. грамматических правил порождаемого языка.
Глава 8. Формальные грамматики и формальные языки 421 Пример 8.1.1 Пусть Go = (Vr={a, *Ь Ун={о, т}, о, Р={о->асЬ, а-» с, а-»тт, аса—»£}). Грамматика G0 является грамматикой, порождающей слова в алфавите V= {a, 6, а, т}. < Пусть jc, у е F(V) — произвольные слова свободной полугруппы слов над алфавитом V = Vj u Vh- Слово у называется словом, непосредственно выводимым из слова jc, если в грамматике G найдется такое правило (м-» v) е Р, такое что * = jtiwjt2, y = jciv;c2, jci, jc2g F(V), и слово у можно получить из слова х путем замены слова и в слове х на слово v (д: —» у). Транзитивное замыкание —» * отноше- G G ния непосредственного вывода называется отношением вывода. Другими словами, слово у называется словом, выводящимся из слова х, если слова х и у совпадают, либо когда существует последовательность слов zo, Zi, •••» Zu такая, что zo = х, z/ = у и для любого 1 < i < I имеет место z,- —» z,+i С* —» * у). с Последовательность слов zo, Zi, • • »Z/ называется выводом. Пример 8.1.2 Пусть Go— грамматика, приведенная в предыдущем примере. Тогда в этой грамматике Ьос —» * Ьттс и асаЪа —» * ЪЪа\ G G а —» * aba, поскольку последовательность а, аса, ааааа, aacaa, aba является G выводом слова aba из слова а. ^ Необходимо подчеркнуть, что применение правил грамматики при построении выводов не "жесткое", то есть на каждом шаге вывода можно выбирать произвольное правило из Р, применимое в данный момент. Это означает, что порядок применения правил в грамматике произвольный и любое правило можно применять после любого правила. Необходимо только, чтобы данное правило было применимым. Этим понятие формальной грамматики, порождающей слова в данном алфавите V, существенно отличается от понятия нормального алгорифма Маркова где подстановки выполняются в строго заданной последовательности. Вывод х —»* у называется полным, если у е F(VT), то есть когда слово у со- G стоит только из терминальных символов. Следовательно, любой полный вывод завершается применением правил, правые части которых являются словами в алфавите VT. Такие правила будем называть заключительными правилами подстановки, или заключительными подстановками данной грамматики.
422 Часть II. Математические модели Если х—>*>> и у g F(VT), причем в системе Р не существует правил, применимых к слову у, то вывод у из х в грамматике G называется тупиковым. Пример 8.1.3 Приведенный выше вывод слова aba в грамматике Go из слова с является полным, а правила а —»с и aca-^b— заключительными подстановками. Тогда как вывод а, аса, аасаа, аапаа является примером тупикового вывода. ^ Каждому способу вывода слова однозначно соответствует дерево вывода (рис. 8.1.1), называемое в лингвистике деревом синтаксического анализа. Вершины этого дерева обозначаются символами, которые входят в слова, порождаемые в процессе вывода. Корень дерева обозначается аксиомой а. Из каждой вершины дерева, обозначенной нетерминальным символом, вместо которого на следующем шаге вывода при соответствующем контексте вставляется некоторое слово, выходят дуги, ведущие к вершинам, обозначенным символами вставляемого слова. Например, полный вывод слова а3Ьа3, создающий последовательность (а, аса, а2са2, а3са3, aba ), имеет дерево вывода, изображенное на рис. 8.1.1. а а а а ^^ а а $ Рис 8.1.1. Дерево вывода слова а3Ьа3 Слово хе F(Vt) называется правильным в грамматике G, если существует хотя бы один полный вывод х из аксиомы с в грамматике G, то есть слово х правильное, если, во-первых, х е F(VT) и, во-вторых, с ->* х. G Множество L(G) всех правильных слов в грамматике G называется языком, порожденным грамматикой G. Таким образом, каждой грамматике G = (VT, VH, с, Р) однозначно соответствует язык L(G), порождаемый данной грамматикой. Однако это соответствие не взаимно однозначно: один и тот же язык может быть порожден разными
Глава 8. Формальные грамматики и формальные языки 423 грамматиками. Это дает основание ввести отношение эквивалентности на множестве грамматик: G и G' эквивалентны (G - G'), если L(G) = L(G'). Пример 8.1.4 Грамматика Go из предыдущих примеров порождает язык L(G0) = {anban и amcam | m, n = 0, 1, 2, ...}. Грамматика G\ = ({я, b, с}, {а}, а, Р), где Га —» аса Р = \о->Ь , [а-»с порождает язык L(G\)9 совпадающий со словом L(Go), поэтому Go - G\. * В классе эквивалентных грамматик, то есть грамматик, порождающих один и тот же язык, логично ввести нормальные формы — грамматики, удовлетворяют определенным ограничениям. Теорема 8.1.1. Для любой порождающей грамматики G = (Vj, VH, (J, P) существует эквивалентная ей грамматика G' = (Vj, VH', <т, Р*), левая часть каждого правила которой не включат символов алфавита Vj [19]. Доказательство. Действительно, пусть G = (VT, VH, a, P)— произвольная грамматика, порождающая слова в алфавите V= VTu VH. Каждому терминальному символу a е Vt сопоставим дополнительный нетерминальный символ а £ Vu так, чтобы различным символам алфавита Vt соответствовали разные нетерминальные символы. Пусть Uu= {a \aG Vj]— полученное множество дополнительных нетерминальных символов. Построим грамматику G' = (Vt, Vr\ о, Р*\ где VV = Ун ^ U\\. Множество правил Р* строится по правилам грамматики G так, что в каждой продукции схемы Р все терминальные символы заменяются соответствующими нетерминальными. Кроме того, в систему Р' для каждого а е Vj включаются правила вида а —> а, являющиеся заключительными правилами грамматики G'. Отсюда следует, что левая часть каждого правила схемы Р' не включает символов основного алфавита Vt- Докажем теперь эквивалентность грамматик G и G\ Если х = а^а^ • сцг е L(G) и W= (a, zi, ..., Zk) (x = Zk— некоторый полный вывод слова х в грамматике G), то по данному выводу нетрудно построить полный вывод W того же слова х в грамматике G'. Для этого достаточно на /-ом шаге вывода W' воспользоваться правилом р{ е Р\ соответствующим правилу р{ грамматики G
424 Часть II. Математические модели и примененным на /-ом шаге вывода W(i = 1, 2, ..., к). В результате получим вывод W" = (o,zx' zt\ гдег/ = an aa .. .air'. Применяя, наконец, заключительные правила подстановки грамматики С, получим полный вывод слова х в грамматике G'. Значит L(G) Q L(G'). Пусть теперь х = ai\aa...air е ЦС) и W = (a, zi, ..., z*) С* = Zk— некоторый полный вывод слова х в грамматике G). Поскольку символы основного алфавита не входят в левые части правил подстановки грамматики G', то вывод W можно перестроить так, чтобы применение правил вида a—>a использовалось только в самом конце— после применения всех других правил грамматики С. Перестроенный таким образом вывод W может быть разбит на две части: первая— W" не включает применение заключительных правил подстановки и заканчивается словом х - an aa'.. .а,*'', а вторая — состоит из последовательного применения заключительных правил грамматики G', переводящих слово *' в слово х. Если стереть все штрихи в первой части W", то получим вывод слова х в грамматике G. Следовательно, L(G') Q L(G). Таким образом, L(G) = L(G') и грамматики G и G' эквивалентны. Теорема доказана. Грамматика G', построенная в теореме, называется нормальной формой порождающей грамматики G. 8.1.2. Классификация грамматик Известно, что семейство языков, порождаемых грамматиками, совпадает с семейством рекурсивно перечислимых множеств [51, 13], то есть грамматики могут порождать множества достаточно общего вида. Для большей конкретизации таких множеств на правила подстановки грамматики налагают определенные ограничения. Каждое из таких ограничений приводит к возникновению некоторого специального семейства формальных языков. Рассмотрим некоторые из таких ограничений. Определение 8.1.1. Грамматика G = (VV» Vh, ct, P), порождающая слова в алфавите V-Vt^jVw, называется грамматикой непосредственных составляющих (НС-грамматикой), если каждое из ее правил подстановки имеет такой вид: w£v —> uyv\ где £ G V\u w, v, у G F(V). Слова и и v называются соответственно левыми и правым контекстом данного правила.
Глава 8. Формальные грамматики и формальные языки 425 Язык L(G)9 порожденный НС-грамматикой G, называется НС-языком. Таким образом, замена символа £ словом у возможна только в контексте, левой частью которого служит слово м, а правой — слово v. Следует заметить, что множество всех НС-грамматик является собственным подмножеством множества всех грамматик, порождающих слова в некотором алфавите, поскольку доказано, что не для всякой такой грамматики существует эквивалентная ей НС-грамматика [14]. Пусть G = (Vt, Vh, су, Р)— грамматика, порождающая слова в алфавите V= Vt u V\\. Грамматика G называется грамматикой, не укорачивающей слова, если для каждого правила у —> z грамматики G имеет место неравенство l(y) < l(z)9 где 1(р) означает долину слова р. Определение 8.1.2. Грамматика G = (Vj, Vh, <j, P\ порождающая слова в алфавите V=VtUVh, называется контекстно-свободной грамматикой (КС-грамматикой), если все ее правила подстановки имеют такой вид: где \ € VH, v e F(V). Язык Ц(7) называется контекстно-свободным словом {КС-языком), если он порождается некоторой КС-грамматикой G. Термин контекстно-свободная в названии грамматики означает тот факт, что замена нетерминального символа некоторым словом не зависит от контекста. Пример 8.1.5 Язык L(G) = {xbx | Vjc * e e F(VT), где VT = {au ..., am}} является НС-языком, порождаемым НС-грамматикой G, заданной такой схемой: [5-»т|/,а,, Ityx*->¥/*,-. pv,-->w,-, [а, -> щ для произвольных i,j = 1, 2, .... m.
426 Часть II. Математические модели Язык L(G)9 порождаемый грамматикой G = ({a, b], {o},g, P), где [с —> a&abb, является КС-языком. ^ Говорят, что КС-грамматика G = (VT, Vh, a, Р), порождающая слова в алфавите V = Vy u Vh, существенно зависит от нетерминального символа \|/, если выполняются такие условия: существует хотя бы одно слово z = w^v, выводимое из аксиомы а, то есть G существует хотя бы одно терминальное слово хе F(Vj)9 выводимое из \|/, то есть \|/ —> * jc. G В силу конечности алфавита Vh и множества Р для каждого \|/ е Vh можно установить, существенно зависит грамматика G = (Vr, Vh, ст, Р) от у или нет. Символ \|/е VH называется фиктивным, если грамматика G = (VT, Vh, a, Р) существенно не зависит от \|/. Ясно, что всякое правило подстановки грамматики G, включающее хотя бы один фиктивный символ, может быть исключено из системы Р, а все фиктивные символы — из алфавита VH. КС-грамматика G = (Ут, Ун, а, Р), существенно зависящая от каждого нетерминального символа, называется приведенной. С помощью НС- и КС-грамматик задаются некоторые из современных языков программирования, в частности, язык Паскаль [8]. В общем случае грамматика произвольного формального языка задается в виде правил, которые записываются в так называемой нормальной форме Бэкуса (БНФ). Проиллюстрируем этот метод заданием множества L идентификаторов языка Паскаль: <идентификатор> ::= <буква> | <идентификатор> <буква> | <идентификатор> <цифра>. Как видно из этого фрагмента, идентификаторы представляют собой различные последовательности, состоящие из букв и цифр 0, 1,2, ..., 9 и начинающиеся с буквы. Язык L, задаваемый приведенным фрагментом, порождается КС-грамматикой G = ({Л, В, С, ..., X, Y, Z, 0, 1, 2, ..., 9}, {а, |3, у), а, Р), где
Глава 8. Формальные грамматики и формальные языки 427 Р = <х—»сф, а—><ху, а->|3, 0->Л, Э-»я, P->z, Y->0, у->9. 8.1.3. Правоволинейные и леволинейные грамматики (регулярные грамматики) и конечные автоматы Определение 8.1.3. Правило подстановки \|/ —> z называется линейным, если z е F(Vj) или z = mtv, где и, v e F(Vt) и \j/, t e Vh. Другими словами, правая часть линейного правила—это либо слово в терминальном алфавите, либо слово, имеющее только один нетерминальный символ. Определение 8.1.4. Правило подстановки \|/ —> z называется праволинейным (леволинейным), если z Е F(VT) или z = их (тм), где и, v Е F(VT) и \|/, tg VH, то есть, если единственный нетерминальный символ входит в правые линейные части правил подстановки, то он всегда крайний справа (слева). Грамматика G = (Vj, Vh, с, Р) называется, соответственно, линейной, право- линейной, леволинейной, если ее правила подстановки линейные, праволи- нейные, леволинейные. Аналогично язык L{G) называется линейным, право- линейным, леволинейным, если грамматика G является линейной, праволинейной, леволинейной соответственно. Из приведенных определений следует, что множество Л всех линейных языков включает множество Лп всех праволинейных и множество Лл всех лево- линейных языков. Имеет место такая теорема. Теорема 8.1.2. Каждой праволинейной грамматике Gu соответствует эквивалентная ей леволинейная грамматика Gn так, что L(Gn) = L(Gj()t и наоборот. Доказательство. Опишем общий метод построения по приведенной форме праволинейной грамматики G = (Vt, Vh, о, Р) эквивалентной ей леволинейной
428 Часть II. Математические модели грамматики G = (Vt, V\\, <T', РО- Суть этого построения поясним на примере конкретной грамматики G = (Vt = {я, ft, с}, VH = {а, \|/, т}, а, Р), где Р включает такие правила: \\f->acx x-»ftr . x-»ft Эквивалентная ей леволинейная грамматика имеет такую систему правил: a-»mj/ a —»дет, \\\f—>a\\f a7-»xft x —> xft , x-»\|/ac \|/-»\|/a x—»ac \|/—>\|/ac Обе грамматики порождают множество слов L={awcftm},(m,n=l,2, ...) в алфавите Vt = {a, ft, с}. Выберем аксиомой грамматики G7 новый нетерминальный символ о7 £ Vh. Положим IV = ({о7} u VH) \ {ст}. В нашем примере G = (VT = {a, ft, с}, Vh' = {ст7, \|/, х}, а7, Р7), где Р7 строится по множеству Р следующим образом. Выделим сначала в Р все заключительные правила, имеющие вид s —> и. Каждому из них в Р7 соответствует правило а7 —> и, где w е P(Vr). После этого каждому заключительному правилу из Р, имеющему вид £ —> л, £ * а, сопоставим леволинейное правило а7 —> hju в Р7. В нашем примере есть только одно заключительное правило х —> ft, которому соответствует леволинейное правило & —»xft e Р7. Пусть Vi = {£ | £ * a} = VH— множество всех нетерминальных символов (отличных от аксиомы а), составляющих левые части заключительных правил грамматики G. Выберем множество правил {5->w,£|Vjte IMcP, где щ g P(Vt). В нашем примере V\ = {т}, так что к выбранным правилам относятся правила a —> ясх, \|/ —» аст, х —> ftx. Если среди указанных правил есть правила, имеющие вид a —» wi£, то в грамматике G им соответствуют заключительные правила £ —» иь Остальным правилам, имеющим вид 6->niS, (8.1.1) где 5 * а, сопоставляются правила:
Глава 8. Формальные грамматики и формальные языки 429 в множестве Р'. В данном примере правилу с —> асх соответствует правило т —> ас е Р\ которое является заключительным в грамматике G'. В то же время правилам \|/ —> асх и т —» Ьт сопоставляются леволинейные правила т —> \\fac и т —» т£, принадлежащие схеме Р'. Далее построим множество У г = {8 | 8 g Vi u {а}} с VH всех нетерминальных символов, составляющих левые части правил (8.1.1), отличных от а и не входящих в V\. Выделим совокупность правил {р—> м28|для всех 8е V2} cP, где иг е F(Vt). Выполним для них построение, аналогичное предыдущему, то есть каждому правилу, имеющему вид а —> м28, соответствует заключительное правило 8 —> м2 е f, а каждому правилу р —> м28 (где р * а) — лево- линейное правило 8 -» рм2 из Pf и т. д. В нашем примере V2 = {\|/} и правилам а —> \\fa, \|/ —> а\|/ в грамматике G' соответствует заключительное правило т-)аи правило \|/ —> \|/я. Вследствие конечности множества VH и того, что грамматика G приведенная, этот процесс закончится на некотором конечном шаге построения множества правил подстановки Р* леволинейной грамматики G'. Построенная этим методом для нашего примера грамматика G' была приведена выше. Таким образом, пользуясь множеством правил Р грамматики G, можно построить леволинейную грамматику G', причем каждому леволинейному выводу слова р е L(G) соответствует праволинейный вывод того же слова р в грамматике G' и наоборот. Значит Теорема доказана. Следовательно, в дальнейшем достаточно рассматривать только праволиней- ные грамматики, поскольку их основные свойства переносятся и на леволинейные грамматики. Пусть G = (Vt, Vh, ст, Р)— некоторая праволинейная грамматика с терминальным алфавитом VT= {аь я2, • •, ап}- Удалим из множества Р правила, имеющие вид \\f —> е и \|/-> т, где е — пустое слово, а т, \|/ е Vh (в следующем разделе будет подробно описана процедура такого удаления). Полученная в результате такого преобразования грамматика G порождает с точностью до пустого слова е тот же язык, что и грамматика G, то есть L(G ) = L(G) \ {e}. Сопоставим теперь каждому правилу \|// —> м/с,- , где и, = я/1Я,2. •.#/*£ Р(УтХ совокупность правил
430 Часть II. Математические модели /40 = ] (8.1.2) Vi(*-2) —> a/(A:-l)V/(A:-l) V/(*-l) "> *i*V/* путем введения множества дополнительных нетерминальных символов V(i) = {\|//Ь \|//2 \|f/*-ib Щ* Ун (/= 1, 2 *- l). Множество правил, соответствующее заключительной подстановке \|//—» и,-, может быть получено из (8.1.2), если заменить правило правилом \|/,*_1 —> я,*- При этом считается, что для разных правил системы Р множества дополнительных нетерминальных символов не пересекаются: V(OnV(/) = 0,i*j. Очевидно, что грамматика Ga = ( Vt, Ун» tf> £ X где Zn=Vilu(uV(i))fP(i) = uP(i)f / i эквивалентна грамматике G. Определение 8.1.5. Грамматика G°9 каждое правило которой имеет вид \|/ —> z, где z = я или z = ят, я е VT, т е VH, называется автоматной или г/кдо- матикой с конечным числом состояний. Грамматика, которая рассматривалась при доказательстве теоремы 8.1.2, не является автоматной грамматикой, но этой грамматике эквивалентна грамматика, включающая такие правила подстановки: а -> д\|/ \|/-> я\|/ \|/—>ст т—>&т т—> 6. Из приведенных выше соображений следует, что для произвольной праволи- нейной грамматики G найдется автоматная грамматика G", которая порождает с точностью до пустого слова е тот же язык, что и грамматика G, то есть L(Ga) = L(G)\{e]. Существует тесная связь между автоматными грамматиками и конечными автоматами, чем и объясняется термин автоматная грамматика или грамма-
Глава 8. Формальные грамматики и формальные языки 431 тика с конечным числом состояний. Действительно, с каждой автоматной грамматикой G1 = (VT, Vh, a, P) ассоциируется конечный автомат без выходов А = (А = Vh u {ф} (ф g VH), X = VT, Ф, {a0 = a}, F = {ф}), где функция переходов/задана графом переходов Г. Граф Г строится по таким правилам. Каждому нетерминальному символу \|/ из VH грамматики (У1 соответствует вершина графа Г, помеченная символом щ кроме того, есть еще одна вершина, помеченная символом заключительного состояния—ф. Единственному начальному состоянию а автомата А соответствует вершина, помеченная символом а. Наконец, для каждого незаключительного правила \|/ —> ах проводится ребро из вершины \|/ в вершину т, причем это ребро помечается терминальным символом а е VT. Для каждого заключительного правила подстановки \|/ —> а из вершины \|/ в вершину ф проводится ребро, помеченное символом а. Автомат функционирует обычным образом — так, как это было описано в гл. 6, но следует заметить, что построенный по этим правилам автомат будет в общем случае недетерминированным. По теореме о детерми- низации для данного конечного автомата можно построить эквивалентный ему детерминированный конечный автомат. Очевидно, что слово р принадлежит языку L{A\ представленному в автомате А заключительным состоянием ф, тогда и только тогда, когда слово р выводимо в грамматике G. Следовательно, L(A) = L(Ga). Учитывая полученный факт и по основной теореме теории конечных автоматов, нами доказана такая теорема. Теорема 8.1.3. Множество всех языков, порожденных автоматными грамматиками, совпадает с множеством всех регулярных языков, представляемых в детерминированных конечных автоматах. Из этой теоремы следует, что такие свойства, как эквивалентность леволи- нейных, праволинейных, а также автоматных грамматик, алгоритмически разрешимы, поскольку проблема сводится к проблеме эквивалентности конечных автоматов, которая алгоритмически разрешима. 8.1.4. Задачи и упражнения 1. Постройте в алфавите Х= {0, 1} грамматику, правильными словами которой являются четные числа, если слово в алфавите X рассматривать как натуральное число в двоичной системе.
432 Часть II. Математические модели 2. Приведите пример грамматики, порождающей слова в алфавите X = {a, b], которая является: • НС-грамматикой; • КС-грамматикой; • линейной грамматикой; • праволинейной грамматикой; • леволинейной грамматикой. 3. Какими грамматиками являются приведенные ниже грамматики, порождающие слова в алфавите X = {а, Ъ, ..., z} по таким схемам: Га —> aaz ст —> cb\ Р = а—> a\\fa а—>Ь а\|/->\|/а b\\f —> ab\ а—>a\\f а—>Ь \\f —>\\fa \\f->ab р = 4. Постройте конечный автомат, представляющий слова языка, порождаемые последней грамматикой из предыдущего примера. 5. Покажите, что проблема эквивалентности двух автоматных грамматик алгоритмически разрешима. 6. Постройте алгоритм, который по двум заданным автоматными грамматикам: GwG' строит грамматику G", порождающую слова языка L(G) n L{G'). 7. Постройте пример языка, который не может быть порожден ни одной автоматной грамматикой.
Глава 8. Формальные грамматики и формальные языки 433 8.2. Контекстно-свободные грамматики и их свойства 8.2.1. Контекстно-свободные грамматики и уравнения Из определения КС-грамматики (КС-языка) следует, что любая КС-грамматика (КС-язык) является НС-грамматикой (НС-языком), но обратное утверждение не имеет места. Известны примеры НС-языков, для которых не существует КС-грамматика, порождающая этот язык. В частности, такой язык приведен в примере 8.1.1. Пусть G = (VT, VH» s, Р)— произвольная КС-грамматика. Левым выводом слова р е L(G) в грамматике G называется вывод, в котором любое правило грамматики G, применяемое на /-ом шаге к слову ц = W/V|/v/5 применяется к самому левому нетерминальному символу в слове ц (/ = 1, 2, ..., п - 1). Аналогично определяется правый вывод слова р е L(G) в грамматике G, с той разницей, что на /-ом шаге вывода правило из Р применяется к самому правому нетерминальному символу в слове ц (i = 1,2, ..., п - 1). Очевидно, что каждому полному выводу слова р в КС-грамматике соответствует единственный левый (правый) вывод того же слова р. Пример 8.2.1 Пусть G = ({а, Ь], {а, т}, а, Р) — КС-грамматика, где Р состоит из таких правил: {а —> ат, т —> тт, а —> а, т —> Ь]. Тогда вывод (а, от, ах, ail, аЬтт, аЫп, аЪЪЪ) является левым выводом слова р = аЪЪЪ в грамматике G. Вывод (а, ат, атт, аттт, аттЬ, стЬЬ, abbb, аЪЪЪ) того же слова р = аЪЪЪ в грамматике G является правым выводом. ^ Каждый полный вывод слова р е F(G) в КС-грамматике G = (VT> VH, a, P) в результате некоторой перестановки правил, используемых в этом выводе, может быть преобразован в левый (правый) вывод. Левый (правый) вывод принимают за каноническую форму вывода в КС-грамматике. КС-грамматика G = (VT, VH> о. Р) называется определенной, если каждое правильное слово р е F(G) имеет единственный левый (правый) вывод. В противном случае грамматика G называется неопределенной.
434 Часть II. Математические модели Понятия определенности и неопределенности КС-грамматик играют важную роль в задаче автоматизации программирования. Если КС-грамматика неопределенная, то есть для некоторого слова р из L(G) существуют разные левые (правые) выводы, то возникает проблема: какой вывод следует рассматривать, чтобы правильно обработать данное слово р. Поэтому эти понятия относятся к основным понятиям теории КС-языков [13]. Обобщенной КС-грамматикой (ОКС-грамматикой) называется такая грамматика G = (Vt, Vh, (7, Р), каждое правило которой имеет вид \|/—> z, где zg F(VtvVu),\ve VH. Теорема 8.2.1. Для произвольной ОКС-грамматики G = (VT, VH, (J, P) молено построить КС-грамматику G' = (Vr, VH, GyP') такую, что L(G') = L(G) \ {e}, причем если е £ L(G), mo L(G) = L(G') (то есть в этом случае G ~ G'). Доказательство. Пусть G = (Vy, VHy a, P) — некоторая ОКС-грамматика. Построим индуктивно множество A/cVH таким образом, что \|/бМ, если в системе Р есть правило \|/ —> е. Если \|fi,\|/2 ^еЛ/ив систему Р входит правило подстановки \|/ —> \|/i\|/2...\|/*, то \|/ Е М Вследствие конечности алфавита VH и системы правил Р множество М может быть построено за конечное число шагов. Правила, которые использовались при построении множества М, назовем правилами, в которых исчезает правая часть. Теперь каждому правилу р: \|/ —> z из Р с непустой правой частью z поставим в соответствие систему S(p) всех правил \|/ —> z\ где слово z! * е w z получено из слова z в результате удаления некоторой (возможно пустой) совокупности символов из М. Рассмотрим КС-грамматику G' - (VT, Ун, <т, ?\ где Р' = u S(p) для всех пра- р вил р е Р с непустыми правыми частями. Покажем, что языки L(G) и L(G') совпадают с точностью до пустого слова. Действительно, применение каждого правила р Е S(p) такого, что р £ Р, можно заменить применением правила р и некоторой последовательности правил, в которых исчезает правая часть. Следовательно, имеет место включение L{G') с L(G). Покажем, что L(G') \ {е} с L(G). Пусть х— произвольное непустое слово из L(G) и W= {zo, Zu ...» zn] — левый вывод слова x = zn в ОКС-грамматике G, а Т— дерево, соответствующее выводу W. Допустим, что на некоторых шагах вывода W применяются правила, имеющие вид \|f->* (8.2.1) В противном случае W является полным выводом в грамматике G' и jce L(G'). Последовательно удаляя применение правил вида (8.2.1), можно преобразовать вывод W в вывод У/' того же слова х в грамматике G'.
Глава 8. Формальные грамматики и формальные языки 435 Действительно, пусть в выводе W правило типа (8.2.1) применяется на /-ом шаге (1 < / < п) к вхождению (\|/, q) символа \|/ в слово Zi-i=y\|Tyu где /Су) = q - 1. Очевидно, что i Ф 1, поскольку х— непустое слово. По этой же причине хотя бы на одном из шагов, предшествующий /-му шагу, применяется правило \|/->z, (8.2. Г) такое что l(z) > 1, в противном же случае z\ = х = е. Тогда можно указать наибольший номер m < i, такой что на m-ом шаге вывода W применяется правило рт типа (8.2.Г), Рт- т—>и\|Л>. При этом слово zm = /VvE W и в дереве Т существует путь из вершины s, обозначенной (\|/', q\ в вершину (\|/, q), где (\|/', q)— вхождение выделенного символа \|/' в слово z,„, (\|/, q)— вхождение \|/ в слово ц. Пусть V/ = Vo,Vb ...,V|/r = v|/ (8.2.1") последовательность нетерминальных символов, обозначающих вершины пути s. Из максимальности номера m следует, что из каждой вершины \|/, (у = 0, 1, ..., г- 1) выходит в точности одна дуга, и каждому такому переходу соответствует применение правила Щ->\|//+i (8.2.1а) на ту-ом шаге вывода W, m < rrtj < i. Учитывая применение правила \|/ —> е на /-ом шаге вывода W, имеем, что правила (8.2.1а) относятся к числу правил, в которых исчезает правая часть и все символы, входящие в последовательность (8.2. Г'), принадлежат множеству М. Это означает, в частности, что совокупность правил S(pm) с Р включает правило рт'\ т —> uv. Перестроим теперь вывод Wтаким образом: на m-ом шаге вместо правила рт применим правило рт' и удалим следующие т/-тые шаги вывода (/ = 0, 1, ..., г), связанные с преобразованием исчезнувшего символа х/, а также i-ый шаг вывода W. Очевидно, что такая перестройка не влияет на вывод конечного слова хе L(G), в то время как число применений правил (8.2.1) уменьшится на единицу в сравнении с выводом W. Продолжая описанный процесс, преобразуем вывод W слова х в ОКС-грамматике G в вывод W того же слова, на каждом шаге которого применяются правила из Р\ так, что применение правил, имеющих вид (8.2.1) полностью исключается. Таким образом, вывод V/ слова х является выводом в КС-грамматике G' и х G L(G'). Вследствие произвольности непустого слова х из L(G) следует справедливость включения (L(G) \ {е}) с L(G'). Теорема доказана.
436 Часть II. Математические модели Из доказанной теоремы следует, что любую ОКС-грамматику G = (Vj, VH, a, Р) можно свести к эквивалентной ей КС-грамматике G = (VT, VH, g, Р) такой, что для каждого нетерминального символа \|/е УнМп} схема Р не включает правил \|/ —> е и аксиома а не входит в правые части правил подстановки. Действительно, для грамматики G существует КС-грамматика G = (VT, VH, a, /*), удовлетворяющая условиям теоремы 8.2.1. Грамматика G строится по грамматике G' таким образом. Берется как аксиома новый нетерминальный символ g £ VH' так, что YH = Ун и {с}. Для системы правил Р выполняется включение Pf с Р. Кроме того, для каждого правила с —> z из Р' включается правило о —> z. Система Р включает правило о —» е, если е е L{G). Отметим, что аксиома g не входит в правые части правил системы Р. Отсюда, поскольку в Р для произвольного \|/ Ф g отсутствует правило \j/ —> е, слова z Ф е, порождаемые при любом выводе в грамматике G, не укорачиваются. Следовательно, грамматика G называется формой грамматики G, не укорачивающей слова. Пример 8.2.2 Пусть G = ({а, 6}, {а, \|/ь \|/2, \|/3}, а, Р), где —> aab Pi = \о->е \|/2->а\|/3 [\|/3->е Формой ОКС-грамматики G, не укорачивающей слова, является ОКС- грамматика Gi = ({а, &}, {т, a, \|/i, \|/2, \|/зЬ т, Pi), где fl: т —» ^ 2: а —> ааб 3: т -» ааб 4: а —> а& 5 : т —> аЪ 6:\|/,->\|/2\|/3 < 7:\|/,->\|/2 8: \|f, -> \|f з 9:\|/2 -> ау3 10: \|/2 -» а\|/3 11:\|/2 —>а £.=
Глава 8. Формальные грамматики и формальные языки 437 Следствие 8.2.1. Всякую ОКС-грамматику G можно преобразовать в эквивалентную ей ОКС-грамматику G, являющуюся формой грамматики G, не укорачивающей слова. Из теоремы 8.2.1 следует также, что отказ от требования непустоты правых частей правил подстановки КС-грамматики, в отличие от НС-грамматик, не приводит к существенному расширению класса языков, порождаемых ими. Поэтому понятие ОКС- и КС-грамматик часто не различаются и под КС- грамматикой следует понимать произвольную ОКС-грамматику, заданную в форме, не укорачивающей слова. Из множества правил подстановки Р грамматики G = (Vj, VH* й> Е) можно исключить все правила, имеющие вид \|/ -> т, (8.2.2) где, т, \|/ е Ун- Для этого достаточно построить все возможные выводы \|/ ->*т. (8.2.2') Вследствие конечности множеств Ун и Р, а также неукорачиваемости слов при выводе в грамматике G, построение всех выводов типа {$22*) выполняется за конечное число шагов. После этого для каждого из выводов \|/ —> * т и произвольного G правила т —> z из Р, где z £ Ун, присоединяется новое правило \|/ —> z, после чего все правила вида (&22*) могут быть исключены. В результате приходим к грамматике G, эквивалентной грамматике G и не имеющей правил вида (8.2.2). Пример 8.2.3 Рассмотрим грамматику G\ из предыдущего примера. По схеме правил Pi построим все выводы типа (8.2.2) в грамматике G\: Vi ->* 4/2, Vi ->* Жз, Vi ->* а, \|/2 ->* \|/з, Уз ->* ст. Для вывода V|/i —>* 4/2 и правила 9 \|/2 —» стц/з строим множество 5о= {\|/i -»стц/з}, для вывода \|/i —>* а и правил 2 и 4— множество S\ = {\|/i —» aafe, \|/i —> а&} и, наконец, для вывода \|/г -»* а и правил 2 и 4 — множество 5г = {\|/г —» яаЬ, \|/2 —» яЬ}. Теперь, объединив множество Р\ с множеством So u Si и 5г и исключив правила 7, 8, 10 и 11, строим множество правил Рх грамматики Gx = ({я, &}, {т, а, \|/ь \|/2, ¥зЬ т, Р,) < Из приведенных определений и теорем следует, что для любой КС- грамматики существует приведенная КС-грамматика, удовлетворяющая таким условиям: □ приведенная грамматика является грамматикой, не укорачивающей слова;
438 Часть II. Математические модели □ аксиома не входит в правые части правил подстановки; □ в множество правил грамматики не входят правила типа (8.2.2). Следовательно, имеет место такая теорема. Теорема 8.2.2. Для произвольной КС-грамматики G = (VT, VH, ст, Р) существует эквивалентная ей приведенная грамматика G =(VT, VH, a, Р), где V// = Ун — алфавит нетерминальных символов, полученный из Vu путем исключения всех фиктивных символов грамматики G, Р С Р— система правил подстановки грамматики G, не включающая фиктивных символов. Эта теорема дает возможность без ограничения общности рассматривать только приведенные КС-грамматики. 8.2.2. Уравнения, КС-языки и магазинные автоматы По КС-грамматике G = (VT, Vu, a, P), порождающей слова в алфавите V=VjuVh, можно построить систему уравнений, определяющих тот же язык L(G) [61]. Действительно, пусть VH = {^ь Щ* •••, Жл}, где ¥i = а — аксиома грамматики G. Каждому нетерминальному символу \|/, Е Vu поставим в соответствие уравнение \|*,::=Д\|/ь\|/2, ...,l|/„), где ft(\\f\, \|/2, ..., \|/я) = z,-i u z,-2 u ... и г,*— выражение, состоящее из всех правых частей правил подстановки вида \|ff-->Z(,-e P(/=l,2, ...,£,). Таким образом, грамматике G будет соответствовать система уравнений UG = (V,-:: =./)(Vi. V2, ■ ■., ¥,) I * = 1, 2, ..., п). (8.2.3) Рассмотрим процесс порождения языка L(G) по системе уравнений (8.2.3), соответствующей грамматике G. Пусть О = (0, 0, ..., 0)— нулевой вектор значений переменных \|/ь \|/2, ..., \|/„, в котором значения переменных \|/, = 0. На таком нулевом наборе функции /-(v|/i, \|/2, ..., Ч/Д являющиеся правыми частями системы уравнений (8.2.3), принимают значения ос, =/(0, 0, ..., 0) для каждого /= 1, 2, ..., п. Обозначим совокупность этих значений через Оо = (Ooi, Оо2, ..., (Хоп). Теперь рассмотрим значения otn =/i(ao), ..., а{п =/„(ао) функций/<\|/ь ^2, •., Жл) на наборе Оо, так что (Xi = (an, ..., OL\n). Продолжая рекурсивно этот процесс далее, получим a* = (oc*i, a*2, ..., ос*/,), где aki=fi(ak_i)=fi(ak.iu осЫ2, ..., осЫ;1) для произвольного *=1, 2, ... .
Глава 8. Формальные грамматики и формальные языки 439 Обозначим через ос°° множество (J ос^ для произвольного /=1, 2, ..., п\ к= 1 тогда набор ос°° = (ос~,..., ос~) называется решением системы уравнений (8.2.3), а каждый компонент а°° — языком, соответствующим переменной \|/, (или языком типа Алгол [13]). Язык ос~, соответствующий аксиоме \\f\ =a, называется языком, порожденным системой уравнений (8.2.3). Нетрудно показать, что язык ос~, порожденный системой (8.2.3), совпадает с языком L(G), порожденным грамматикой G, то есть ос~ = L(G) [61]. Кроме того, а~= (а~,...,а~) является минимальным решением системы (8.2.3), так что когда L = (L\, Li, ..., Ln)— произвольное решение этой же системы, то aj° с L, для произвольного / = 1,2, ..., п. Действительно, Оо/ с L, (/ =1,2,..., п). Пользуясь методом индукции для описанного выше процесса, получим ос~ с L,. Теорема 8.2.3. Язык L тогда и только тогда является КС-языком, когда существует система уравнений типа (8.2.3), имеющая минимальное решение а = (а\ , аг , ..., ап ) такое, что ах ах = L. Пример 8.2.4 Рассмотрим грамматику G = {{а, 6}, {s}, s, P\ где Р включает такие правила (а —> аса, а —> Ь). Этой грамматике соответствует система Ug, состоящая из одного уравнения UG= {s :: =aaavb]. Построим язык, порождаемый этой системой. Имеем Оо =/(0) = a0a vb = 0vb = b\ Od =/(Оо) = я(ао)я u fo = aba u b\ а2 =f(OL\) = а(а\)а и b = a(aba и b)au b = aba и aba и Ь; а3 =/(а2) = а(а2)а и 6 = а36а3 и а26а2 и аЬя и Ъ и так далее. Следовательно, решением системы является язык L={anban\n = 0, 1, ...}.< В предыдущем разделе при изучении магазинных автоматов мы рассматривали, как строить по КС-грамматике магазинный автомат, в котором представлен 15 3ак. 3427
440 Часть II. Математические модели язык, порожденный этой КС-грамматикой, и как строить по заданным магазинным автоматам систему уравнений, решением которой является язык, представленный в этом автомате. Следовательно, из алгоритмов анализа и синтеза магазинных автоматов, а также доказанной теоремы вытекает такое следствие Следствие 8.2.2. Язык L является КС-языком тогда и только тогда, когда он может быть представлен в некотором магазинном автомате. 8.2.3. Задачи и упражнения 1. Пользуясь методами, описанными при доказательстве теорем 8.2.1 и 8.2.2, постройте приведенные формы грамматик, не укорачивающие слова, для таких грамматик: • G = ({a, b}, {a, \|/i, \|/2, \|/зЬ ст. Р), где • G = ({я, 6}, {а, \|/}, а, Р), где Р1 = а-> aab o->e X)/, -> \|/2\|/3 \|/2->o\|/3 Уз-** • G = ({a,6, ...,z}, {a},G, P = fa —> aaz [a->c6 P), где • G = P = | a—> a\\fa a->6 а\|/-»\|/я = ({a, &}, {a, \|/},a,P), где P = [a—>a\\f \o<r-b |\|/->\|/д 2. Применив алгоритм синтеза к грамматикам, построенным в упражнении, найдите магазинные автоматы, представляющие языки, порожденные этими грамматиками.
ЧАСТЬ III ПРИЛОЖЕНИЯ Глава 9. Алгебры в компьютерных информационных технологиях Глава 10. Теория автоматов и графов в компьютерных информационных технологиях Глава 11. Методы поиска доказательств теорем в логике предикатов Глава 12. Основные понятия теории программных инвариантов
Глава 9 Алгебры в компьютерных информационных технологиях В этом разделе рассматриваются некоторые особенности применения основных понятий и методов общей алгебры в современных информационных технологиях. К таким технологиям относятся базы данных, базы знаний, системы компьютерной геометрии, графические системы и т. п. 9.1. Преобразования в векторных пространствах В этом параграфе рассматривается применение методов теории групп для обоснования так называемых геометрических преобразований линейных векторных пространств. Эти преобразования — одни из основных в графических компьютерных системах и входят как составные практически во все такие системы. Ниже будут в основном рассматриваться двумерное пространство L2 и трехмерное пространство L3, которые мы будем, соответственно, называть плоскостью и пространством. 9.1.1. Перемещения плоскости Сначала дадим некоторые необходимые определения из теории линейных векторных пространств. Отображение (оператор) Т: Ln —> Ln называется линейным, если для произвольных векторов и, v из Ln и произвольных чисел а, Ъ из основного поля Р линейного векторного пространства Ln имеет место равенство T(a-u + b-v) = a- Т(и) + Ъ • Т(у). Из линейной алгебры известно, что каждому линейному оператору Т в Ln соответствует матрица, называемая матрицей оператора Г, причем это соответствие взаимно однозначное.
444 Часть III. Приложения Линейный оператор Т в евклидовом линейном пространстве Ln называется ортогональным, если для произвольных векторов и, v из Ln имеет место равенство (T(u), T(v)) = (и, v), где (и, v) — скалярное произведение векторов и и v. Из гл. 2 мы знаем, что любая система из п линейно независимых векторов в и-мерном векторном пространстве составляет базис этого пространства. Если {vb v2, ..., v„} — базис и-мерного векторного пространства Ln над некоторым полем Р, то любой вектор v из Ln единственным способом можно записать в виде суммы п 1=1 где а,е Р. При этом и-ка чисел {аи ..., ап) отождествляется с вектором v и называется координатами данного вектора v в базисе {vb v2, ..., v„}. Когда базисные векторы v„ i = 1, 2, ..., и, таковы, что длина |v,-| вектора v,- равна 1, то базис называется ортонормированным, а соответствующие координаты вектора v в этом базисе — декартовыми координатами вектора v. В пространствах Li и L$ каждый вектор также разлагается по базисным векторам ей ег, ^з и задается в виде и = (jc, у, z\ где х,у, z — декартовы координаты. Эта запись означает, что и = х • е\ + у ег + z ' e^. Аналогично задаются и координаты точки А, отождествляемые с координатами вектора г, проведенного из начала координат 0 в точку А. Вектор г называется радиус- вектором точки А. Тот факт, что jc, у, z — координаты точки А, записывается так: А(х9 у, z). Перемещением пространства Ln называется такое отображение F: Ln -> U которое сохраняет расстояния между точками, то есть если F— перемещение и А, В— произвольные точки из L„, то \АВ\ = \А'&\9 где А' = F(A\ В* = F(fi), а \АВ\ — расстояние между точками А и В. Примеры перемещений плоскости хорошо известны: □ параллельный перенос на вектор г — Тг\ П поворот вокруг точки О на угол 0 — 77?0; □ симметрия относительно прямой / — 5/; □ скользящая симметрия — S[ . Рассмотрим каждое из этих преобразований отдельно. Отображение Tr: Ln —> Ln называется параллельным переносом, если Tr(v) = v + г, где г— некоторый фиксированный вектор, a v — произволь-
Глава 9. Алгебры в компьютерных информационных технологиях 445 ный вектор из Ln. В координатной форме это преобразование записывается так: Tr(v) = V = (X + Х0, у + )>о, ..., Z + Zo), где v = (x,;y, ...,z), г = Сх0,;Уо, ...,Zo). Непосредственно из определения Тг следуют такие его свойства. □ С1. Преобразование Тг не является линейным. Действительно, Tr(a •u + b-v) = a-u + b-v + r, a • Tr(u) + b • Tr(v) = a • (w + r) + b • (v + r) = a • u + fe • v + (a + fe) • r; □ C2. Гг * 7> = Гг + Г\ Действительно, Гг * 7>(v) = ГДГг(у)) = 7>(v + r) = v + r + / = r^(v) для произвольного v из Ln. Теорема 9.1.1. Множество всех параллельных переносов является абелевой группой относительно операции произведения отображений. Доказательство. Из С2 следует замкнутость операции произведения, а из С2 и аксиом линейного векторного пространства Ln — ассоциативность и коммутативность этой операции, а также существование переносов Tr(-v) и 7о, служащих обратным элементом для Tr(v) и нулем группы соответственно. Группу всех параллельных переносов Ln обозначают Т(п). Поворотом плоскости относительно некоторой точки О на угол 0 называется отображение 77?в: Ьг —> Li, переводящее точку А(х, у) в точку A'(jc', /) путем поворота Ьг относительно точки О на угол 0. Из линейной алгебры известно, что преобразование поворота является линейным преобразованием. Найдем его матрицу. Пусть точка О совпадает с началом координат, тогда, как видно из рис. 9.1.1, можно записать: х = \ОА\ • cos(0 + 0г), / = \ОА\ • sin(0 + 0х). 0| х' х Рис. 9.1.1. Поворот плоскости
446 Часть III. Приложения trq = Выполняя тождественные преобразования над полученными выражениями, имеем: х = \ОА\ • (cos 9 • cos 9' - sin 9 • sin 9') = \OA\ • cos 9 • cos 9' - - \OA\ • sin 9 • sin 9' = x • cos 9 - у • sin 9. Аналогично получаем / = x • sin 9 + у • cos 9. Следовательно, матрица преобразования поворота в Ьг имеет такой вид: Icos 9 - sin 9| |sin9 cos 9 I Пользуясь матрицей поворота, нетрудно установить такие свойства преобразования поворота. □ СП1. Преобразование поворота ортогонально. Действительно, если и = (х, у), v = (x\ у) и выполняется поворот на угол 9, то 7У?е(м) = Ос • cos 9 - у • sin 9, х • sin 9 + у • cos 9), 77?e<v) = (х • cos 9 - / • sin 9, х • sin 9 + / • cos 9). Тогда (77?е(м), 77?e-(v)) = (х • х • cos2 9 - х • у • cos 9 • sin 9 - х • / • cos 9 • sin 9 + + у • у • sin2 9 + х • х • sin2 9 + х • у • cos 9 • sin 9 + jc' • у • cos 9 • sin 9 + + у • у • cos2 9 = x • jcr(cos2 9 + sin2 9) + у • /(cos2 9 + sin2 9) = = x • x + у • у' = (и, v). Свойство доказано. Из этого свойства и того, что определитель матрицы поворота равен единице, следует: существует обратное преобразование TRq и матрица этого преобразования может быть получена из матрицы 77?е путем ее трансформирования, то есть ™е = cos 9 sin 9 -sin9 cos91 |cos(-9) -sin (-9)| sin (-9) cos (-9) и TRq1 = ГЯн». □ СП2. 77?e * TRQ> = 77?e + e'. Предлагается доказать читателю как простое упражнение. Очевидно, что Тг * 7У?в Ф TRQ * Тг.
Глава 9. Алгебры в компьютерных информационных технологиях 447 Теорема 9.1,2. Множество вех поворотов плоскости относительно некоторой фиксированной точки О в этой плоскости является абелевой группой. Доказательство предлагается как простое упражнение (см. упр. 4 в конце раздела). Предлагается также показать, что множество всех поворотов не будет абелевой группой. Точки А(х, у) и В(х\ у) плоскости Lq. называются симметричными относительно некоторой прямой / этой плоскости, если отрезок АВ перпендикулярен к прямой / и делится этой прямой в точке пересечения пополам. Преобразованием симметрии Si называется отображение 5/: L2 —> Li, переводящее каждую точку А(х, у) в симметричную ей точку В(х\ /) относительно прямой /. Прямая / называется осью симметрии. Найдем, чему равны координаты точки В(х\ /), если известны координаты точки А(хо, уо). Рассмотрим сначала случай, когда ось симметрии проходит через начало координат, то есть имеет вид у-ах. Пусть прямая Г, перпендикулярная /, тоже проходит через начало координат, то есть у = (-1 / а)х. Тогда, если А(хо, уо) лежит на прямой Г, то симметричная ей точка В(х\ /) имеет координаты х = —лг0, у = -уо. Если же точка А(хо, уо) лежит на прямой у = (-1 / а)х + Ь, то найдем координаты точки пересечения прямых / и Г. Они находятся из уравнения ax' = (-l/a)x' + b и, значит, *' = Ъа I {а2 + 1), У = Ъа I (а2 + 1), а В имеет координаты У = -jco + Ъа I {а2 + 1), / = -уо + Ъа21 {а2 + 1). (9.1.1) Наконец, рассмотрим случай, когда / имеет общий вид: у = ах + с. Пусть А(хо> Уо), тогда перенесем прямую / параллельно самой себе в начало координат. Новые координаты точки А будут иметь вид х\ = -хо + са/ (а + 1), У\ =-уо + са2/(а2+ 1). Теперь остается подставить полученные координаты в (9.1.1) вместо х0 и уо. Выполняя эту подстановку, получаем окончательные формулы: х = хо + {Ъа - са) I {а2 + 1), / = Уо + фа2 - са2) I {а2 + 1). (9.1.2)
448 Часть III. Приложения Из определения симметрии и формул (9.1.2) следуют такие свойства симметрии. □ СО. Преобразование симметрии нелинейное. □ СС2. 5/ * 5/ = е, где е — тождественное преобразование. Скользящей симметрией S[ называется произведение преобразований Тг * 5/, то есть 5/ : Z/2 —> Ьг, где S[ (v) = Tr * S/(v) = Si(T(v)) = S/(v + г) и Tr — параллельный перенос на вектор г, параллельный оси /. В этом случае Тг * 5/ = 5/ * Тг. Действительно, Tr * 5/(v) = S,(v + r) = S/C* + ло, у + уо) = = (jc + jco + (Jba - cd) I (a + 1), у + y0 + (ha - ca2) I (a2 + 1). 5/ * Tr(v) = rr(5/(v)) = Tr(jc + (ba - ca) I {a2 + 1), у + фа2 - ca2) / (a2 + 1)) = = (jc + xo + (fea - ca) I {a2 + 1), у + y0 + (ba2 - ca2) I (a2 + 1)). Полную характеристику перемещений плоскости дает теорема Шаля. Теорема Шаля. Всякое перемещение в плоскости — это одно из трех преобразований: 1. параллельный перенос; 2. поворот; 3. скользящая симметрия (в частности, при г = 0 и симметрия). Доказательство этой теоремы опускается, но при необходимости его можно найти в [2]. 9.1.2. Группы преобразований плоскости Перемещения плоскости разбиваются на две группы — перемещения первого рода, к которым относятся перенос и поворот, и перемещения второго рода, к которым относятся симметрия и скользящая симметрия. Обоснование такого разбиения дается утверждением. Утверждение 9.1.1. Произведение двух перемещений первого рода является перемещением первого рода, произведение перемещений первого и второго рода является перемещением второго рода и произведение перемещений второго рода является перемещением первого рода. Доказательство предлагается как простое упражнение (см. упр. 3 в конце раздела).
Глава 9. Алгебры в компьютерных информационных технологиях 449 Теорема 9.1.3. Множество всех перемещений плоскости является группой относительно операции произведения отображений. Доказательство. Очевидно, что когда преобразования F и G сохраняют расстояния между точками, то преобразование F* G также будет сохранять расстояние между точками. Ассоциативность следует из ассоциативности операции произведения отображений (см. разд. 1.1 и 4.9), а тождественное преобразование является перемещением. Наконец, как следует из СШ, СС2 и теоремы 9.1.1, преобразование, обратное преобразованию перемещения, тоже будет перемещением. Теорема доказана. Группу всех перемещений Li обозначают Е(2). Е(2) имеет бесконечное число подгрупп. Действительно, согласно утверждению 9.1.1, подгруппой будут все перемещения первого рода. Эту подгруппу обозначают Ео(2). Если F— перемещение первого рода, a G— перемещение второго рода, то согласно утверждению 9.1.1, перемещение G * F* G~] является перемещением первого рода, то есть подгруппа £о(2) является нормальным делителем или инвариантной подгруппой группы Е(2). Нетрудно заметить, что существует только два класса по этой подгруппе: она сама и класс перемещений второго рода. Следовательно, Е0(2) имеет индекс 2 в группе £(2) и фактор-группа Е(2) I £о(2) — конечная циклическая группа второго порядка. Рассмотрим теперь группу £о(2). Эта группа имеет бесконечное число подгрупп поворотов: совокупность всех поворотов относительно какой-нибудь фиксированной точки плоскости составляет группу. Все эти группы коммутативные. Совокупность всех поворотов подгруппой не будет. Действительно, поворот вокруг точки О на угол а, а потом поворот вокруг точки (У на угол 2я - ос будет параллельным переносом (см. упр. 8 в конце разд.). Теорема 9.1.4. Множество всех параллельных переносов будет подгруппой Ео(2). Поскольку произвольный перенос однозначно характеризуется длиной и направлением вектора переноса, то группа всех параллельных переносов относительно прямой / (это переносы, векторы которых параллельны прямой /) будет изоморфна группе всех действительных чисел относительно обычной операции сложения. Эту группу обозначают Д2). Теорема 9.1.5. Группа Т(2) — нормальный делитель группы Ео(2). Доказательство обеих теорем предлагается как простое упражнение.
450 Часть III. Приложения 9.1.3. Перемещения пространства Аналогично перемещению плоскости перемещение пространства определяется как отображение Т: Lz —> L3, сохраняющее расстояние между точками. Перемещения пространства тоже хорошо известны: □ параллельный перенос на вектор г— Тг\ П поворот вокруг оси / на угол 9 — 77?е; □ винтовое перемещение — S[Q; □ симметрия относительно плоскости Р — S/>; □ скользящая симметрия; □ поворотная симметрия. Параллельный перенос был определен ранее. Поворот 77?0 вокруг оси / на угол 9 — это преобразование, представляющее собой поворот на угол 9 каждой точки пространства в плоскости, которая проходит через эту точку и перпендикулярна прямой /, на угол 9 вокруг точки пересечения / с плоскостью. Ось / и угол поворота 9 задают поворот неоднозначно, потому что один и тот же результат может быть получен, если выполнить поворот вокруг I на угол 9 в одном направлении или на угол 2я-9 в другом. Для обеспечения однозначности на плоскости выбирают положительное направление поворота — поворот против часовой стрелки, и отрицательное— по часовой стрелке. В пространстве это выполняется так: выбирают на оси поворота некоторое направление и считают, что поворот положительный относительно данного направлении на оси, когда произвольна точка поворачивается в своей плоскости против часовой стрелки для наблюдателя, стоящего вдоль оси так, что направление от его ног к его голове совпадает с выбранным на оси направлением. Поворот TRln называется перебрасыванием. Очевидно, что TRn * TRn = e, где е — тождественное преобразование. Пусть ось поворота I задана некоторым единичным направляющим вектором п = (ль /i2, из) и 0 < 9 < 2я. Найдем матрицу преобразования TRlQ в Li. Пусть 77?q(v) = v' относительно оси п и v— вектор, конец которого находится в точке Р, v— вектор, конец которого находится в точке Р* (рис. 9.1.2).
Глава 9. Алгебры в компьютерных информационных технологиях 451 V V ► X Рис. 9.1.2 Для того чтобы найти матрицу TRlQ, выразим v через v,n, qw 0. Из аналитической геометрии известно, что когда вектор vN, конец которого находится в точке N, лежит на оси л, то vN = (л, v)n, где (л, v) — скалярное произведение векторов л и v. Пусть vNP— вектор, который соединяет точки N и Р, тогда vNP = v - vN = v - (v, n)n = [[л * v] * л], где [л * v] — векторное произведение. Посмотрим, какой вид имеет поворот, если смотреть из точки N в направлении начала координат 0 (см. рис. 9.1.3) [38]. В данном случае точка Q получена в результате поворота точки Р на угол я / 2 относительно оси л. Q Л/ Рис. 9.1.3 Следовательно, имеем \vnq\ = |vw| = КН. vNfy = vmq sin 0 + vnp cos 0, где vNQ — проекция вектора vNP> на ось NQ. Отсюда получаем, что vNQ = [л * vNP] = [л * [[л * v] * л] = [л * v] (см. упр. 9 в конце разд.). Следовательно, vNP> = [л * v] sin 0 + [[л * v] * л] cos 0 = = [л * v] sin 0 - [л * [л * v]]cos 0,
452 Часть III. Приложения по свойству антикоммутативности векторного произведения. Таким образом, TRlQ (v) = v# + v^p = v + [п * [п * v]](l - cos 0) + [п * v] sin 0. Если обозначить через Ап: Li —> Li преобразование, такое что Ап(у) = [п * v], то TRq = £ + (1 - cos 0) А„ + sin 0 А„, где £— единичная матрица. Таким образом, матрица Ап находится из уравнения An(v) = [п * v], где [п * v] — век- торное произведение векторов ииу,а А„ — из уравнения An(v) = [#i*[ii*v]]. Известно, что координаты векторного произведения векторов и и v, заданых своими координатами (щ, Л2, из) и (vj, V2, V3) соответственно находятся с помощью определителя 'i j k\ [п * v] = Щ п2 пъ v, v2 v3 Отсюда легко построить матрицы Ап и Ап. Действительно, |0 -л3 и2 Ап = л3 0 ^i \п2 щ О Например, если п = (1, 0, 1), то А2 = -("2+"3> И,И2 ЩпЪ щп2 п2п3 -(Щ+П%) -(п? + пН Л,= 0 -1 1 о о 1 о -II о В самом деле, A„-v = 0 -1 1 О Ю 1 о| -1 о| к v2 |v3 = v Аналогично находим матрицу Ап : j k\ [л*у'] = = -v2j + k(vl-v3)-jv2- ;(v,-v3) = 1 0 1 -V2 Vj -V3 V2\ = (~vl + v3,-2v2,v, - v3).
Глава 9. Алгебры в компьютерных информационных технологиях 453 Действительно, -1 0 0 -2 1 0 В результате получаем 1 0 0 0 1 0 0 0 1 + cos 9-1 А2 = -1 0 1 1 0 -1| ь Ь lV3 = ( 0 0 2cos8-2 l-cos9 = 0 cos 9 sin 9 1-« :os 9 0 1 -2 0 0 -] . l| -vi+v3,-2v2,v1-v3). 1 - cos 9| 0 cos 9 -1| + 0 -sinG sinG 0 0 sine -sin 9 l-cos9 2cos 9-1 - sin 9 sin 9 cose . 0 -sin0 0 = Рассмотрим, какой будет матрица поворота вокруг оси 0Z (из которой легко можно получить матрицу преобразования поворота на угол 6 в пространстве Li). В этом случае имеем п = (0, 0, 1), для которого к = 0 -1 d 1 о d Ю о (J л2п = l-i о о о d -1 а о а щ = 10 0 0 1 0 0 0 1 + cosO- 0 1 О С1 (J + О sinG О -sin 9 О О 01 а= о cos9-l О 01 Icos 9 - sin 9 01 = sin9 cos 9 d | 0 0 l|. Удаляя в полученной матрице последние строку и столбец, получаем матрицу преобразования для поворота на угол 9 в пространстве La, построенную нами ранее: Icos 9 -sin9 sin 9 cos 9 7тгА =
454 Часть III. Приложения В общем случае преобразования TRq относительно оси п и TRq1 относительно оси п\ не коммутативны. Однако, если повороты TRlQ и 77?^ выполняются относительно одной и той же оси, то имеет место Теорема 9.1.6. Преобразование поворота в пространстве линейное и ортогональное. Множество всех поворотов относительно одной и той эюе оси является абелевой группой относительно операции умножения поворотов. Доказательство. Действительно, из линейной алгебры следует справедливость первой части теоремы. Кроме того, очевидно, что поворот относительно оси п на угол 0, а после этого поворот относительно этой же оси на угол 0i будет поворотом относительно этой оси на угол 0 + 0ь Значит, множество таких поворотов замкнуто относительно операции умножения. Коммутативность и ассоциативность операции умножения для таких поворотов достаточно очевидна и предлагается как упражнение. Роль единицы играет поворот 7У?о на угол 0 = 0, а обратным преобразованием к TRlQ будет поворот на угол (-0) относительно той же оси п. Практическая ценность этой теоремы состоит в том, что из свойства ортогональности преобразования TRlQ следует, что, для того чтобы найти матрицу обратного преобразования, необходимо только трансформировать матрицу преобразования TRlQ . Кроме того, если к объекту применить несколько поворотов вокруг одной и той же оси, то порядок их применения может быть произвольным. В общем случае порядок применения не может быть произвольным. Хотя группы переносов и поворотов вокруг одной и той же оси коммутативны, сами элементы этих групп не всегда можно переставлять между собой (см. упр. 5). С практической точки зрения это означает, что выполнять данные преобразования необходимо при строгом соблюдении порядка. Группы переносов и поворотов можно объединять в одну группу с помощью операции умножения, если положить TUr(v) = TRlQ(v) + r = (TRlQ,r)(v) для всех v е L3, где г е L3, a TRlQ — поворот на угол 0 относительно некоторой оси /, заданной вектором п. Умножение задается так: (TRl^r2)HTRlQ,rO = (TRl^TRlQ9TRlQrl^r2).
Глава 9. Алгебры в компьютерных информационных технологиях 455 Теорема 9.1.7. Множество всех преобразований fTUJ в пространстве L-$ составляет группу. Для доказательства некоммутативности этой группы заметим, что (TRin)*(TRir2) = (TRlQ *TRlQ,TRlQr2 + n) и (77?£, г2) * (77?£, г,) = (TRlQ * 77?£, 77?£г, + г2) не всегда равны между собой (поскольку матрицы не всегда можно переставлять). Остальные выкладки достаточно просты. Винтовым перемещением S[Q называется произведение преобразований поворота 77?0, и параллельного переноса 7V, при котором вектор г параллелен оси I (в этом случае 77?q * Тг = Тг * 77?0). Следовательно, частным случаем винтового перемещения являются поворот 77?0 и параллельный перенос Тг. Кроме того, если задано некоторое винтовое перемещение, то задано и направление на оси поворота — это направление вектора г. Симметрия Sp относительно плоскости Р— перемещение, которое не сдвигает точки плоскости, а любою другую точку А переводит в точку А' такую, что прямая, проходящая через точки А и А\ перпендикулярна плоскости Р и точка пересечения Оделит отрезок у4Л' пополам. Скользящая симметрия — это произведение Tr * Sp = Sp * ТГ9 где вектор г параллелен плоскости Р (благодаря этому порядок операций несущественен). Поворотная симметрия— это произведение TRn *5/> = 5/>* TRn, где ось I перпендикулярна плоскости Р (что также дает коммутативность операции произведения). Оказывается, что этими примерами преобразований исчерпываются все перемещения пространства, поскольку справедлива такая теорема. Теорема 9.1.8. Всякое перемещение пространства— это или параллельный перенос, или поворот вокруг оси, или винтовое перемещение, или симметрия относительно плоскости, или скользящая симметрия, или поворотная. Доказательство этой теоремы при необходимости можно найти в [2].
456 Часть III. Приложения 9.1.4. Группы преобразований пространства Перемещения пространства, как и перемещения плоскости, разбиваются на перемещения первого и второго рода. Параллельный перенос, поворот и винтовое перемещение называются перемещениями первого рода, а симметрия относительно плоскости, скользящая симметрия и поворотная — перемещениями второго рода. Как для перемещений плоскости, так и для перемещений пространства справедливо такое утверждение. Теорема 9.1.9. Произведение двух перемещений первого рода является перемещением первого рода, произведение перемещений первого и второго рода является перемещением второго рода и произведение двух перемещений второго рода является перемещением первого рода. Доказательство предлагается как упражнение. Теорема 9.1.10. Множество всех перемещений пространства является группой относительно операции произведения отображений. Доказательство почти дословно повторяет доказательство теоремы 9.1.3. Группа всех перемещений пространства обозначается £(3). Множество всех преобразований первого рода Е0(3) является подгруппой группы £(3), и эта подгруппа будет инвариантной подгруппой в группе Е(3). Последнее следует из теоремы 9.1.10, поскольку преобразование G*F*G~l — преобразования первого рода. Аналогично в случае плоскости существует ровно два класса по этой подгруппе: она сама и класс преобразований второго рода. Следовательно, Е(3)/ Е0(3) имеет порядок 2 и является циклической группой. Рассмотрим подгруппы группы £о(3). Эта группа имеет подгруппу Г(3) — группу всех параллельных переносов пространства. Теорема 9.1.11. Группа Т(3) — инвариантная подгруппа группы Е^З). Доказательство аналогично доказательству теоремы 9.1.5. £о(3) имеет бесконечное число подгрупп поворота вокруг фиксированных осей. Пусть А — некоторая точка пространства и F е Ео(3) — некоторое преобразование первого рода. Точка А называется неподвижной точкой преобразования F, если F(A) = A. Теорема 9.1.12. Множество всех преобразований из Ео(3), имеющих неподвижную точку А, является подгруппой группы Е^З). Доказательство. Возьмем произведение двух преобразований F\ и F2, имеющих неподвижную точку А. Тогда F\ * F2(A) = F2(F\(A)) = Fi(A) =A.
Глава 9. Алгебры в компьютерных информационных технологиях 457 Следовательно, множество всех таких преобразований замкнуто относительно произведения отображений. Очевидно, что е(А)=А, где е—тождественное преобразование. Далее, если F(A) = Л, то F~l(A) = Л, поскольку А = F * F~\A) = е(Л) = F~\F(A)) = Г1(А). Теорема доказана. Подгруппу всех преобразований, имеющих неподвижную точку А, обозначают 50(3) или 50^(3), если необходимо указать точку А. Очевидно, что 50^(3) и 50^(3) изоморфны. Группа S0A(3) включает все группы поворотов относительно осей, проходящих через точку А. Теорема 9.1.13. Всякий элемент F e S0A(3) имеет вид F=TRlQ*TR^r где I и I] — некоторые прямые, проходящие через точку А. Доказательство. Пусть В— произвольная точка пространства, ВфА и B' = F(B). Поскольку Fe 50^(3), то \АВ\ = \АВ'\. Следовательно, точку В' можно совместить с точкой В с помощью поворота TR£ вокруг оси 1\9 проходящей через точку А и перпендикулярной плоскости Р (плоскость Р содержит точки А, В, В'), на угол 0, равный углу В'АВ. Таким образом, произведение Г/у * F оставляет неподвижными точки А и В, следовательно, и любую точку прямой U (проходящей через точки А и В). Значит Г/у * F представляет собой поворот вокруг оси 1\ на некоторый угол а, то есть TRlJ* F = TR^ . Положим Г/у = Г/?_!е , тогда TRJj * Г/?£ = 77?ile * Г/?£ = Г/^е * rflj = TRl^_Q * F = F. Теорема доказана. Пусть F, G е Е0(3) и Я = G * F * G~\ Тогда Я определяется формулой Я * СКВ) = G * F(5), где В— некоторая точка пространства £з. Действительно, поскольку G — взаимно однозначное отображение, то Я будет полностью определенным, если будет известно, куда переходит точка G(B). Другими словами, отображение Я
458 Часть III. Приложения будет определенным для произвольной точки В, если известно, куда оно переводит точку G(B). Поэтому Н * G(B) = G*F*G* G~l(B) = G * F(B). Теорема 9.1.14. Если F e SOA(3), /wo#=G*F*G~le SOA(3). Доказательство. Поскольку F(A) = А, то H * G(A) = G * F(A) = G(A), то есть G(A) — неподвижная точка для H. Следовательно, Н е SOA(3). Следствие 9.1.1. Никакая из групп S0A(3) не является инвариантной подгруппой в группе £о(3). Приведенные ниже преобразования не является перемещениями, но они тоже играют важную роль при преобразованиях линейных векторных пространств. 9.1.5. Масштаб Преобразованием масштаба в пространстве L3 называется отображение, имеющее вид ТМ(х, y,z) = (a-x,b-y,c- z\ где a,byc>0, a,b,c e P. В матричной форме это преобразование имеет вид TM(x,y,z) = Умножение таких преобразований выполняется обычным образом: (Щ * ТМ2)(х, у, z) = ТМ{(ТМ2(х, у, z)) или в матричной форме a 0 d о ь a 0 0 c\ \x \y \z о о 0 \a2 0 0 0 0 ol 0 C2\ \x \y \z = a, • a-, 0 0 brb2 0 0 0 0 crc: Отсюда следует, что когда пространство L3 рассматривается над некоторым полем Р, то операция умножения преобразований масштаба коммутативна и ассоциативна, а само преобразование линейное. Теорема 9.1.15. Множество всех преобразований масштаба в Ьз составляет абелеву группу. Доказательство следует из вида матрицы преобразования.
Глава 9. Алгебры в компьютерных информационных технологиях 459 Преобразование масштаба не коммутативно относительно преобразования переноса. Действительно, если Т— перенос на вектор r0 = (jco, уо, Zo), a TM — преобразование масштаба такое, что TM(v) = ТМ(х, у, z) = (a • х, Ъ • у, с • z), то TM(T(v)) = ТМ(х + х0,у + уо, z + zo) = (а(* + *о), b(y + y0), c(z + Zo)) Г(ГМ(у)) = T(a • х, b • у, с • z) = {a • х + *0, Ъ • у + у0, с • z + Zo). Этим некоммутативность в общем случае установлена. Аналогично можно показать, что преобразование масштаба не коммутативно относительно преобразования поворота. Пример 9.1.1 Дано две фигуры: "звезда" и лежащая "башня". Необходимо переместить башню в начало координат и на ее шпиль прикрепить звезду. Очевидно, что данная задача решается с помощью таких преобразований: □ перенос башни параллельно оси Ох в точку (0, 0); □ поворот на -90° относительно точки (0, 0); □ перенос башни параллельно оси Ох на вектор (-1/2, 0); □ поворот звезды на угол -36°; □ перенос звезды на вектор (-1, 0). ку кУ ЬУ 3 4 1/2 Рис. 9.1.4. Преобразования поворота ^ 9.1.6. Проекции Преобразования, приведенные ниже, не относятся к геометрическим преобразованиям, но они дают возможность получать изображение объекта на экране дисплея ЭВМ. С математической точки зрения необходимо построить преобразование пространства Ьъ на подпространство L2, дающее необходимое графическое изображение данного объекта. Проекцией векторного пространства L$ на подпространство Li называется такое преобразование ПР, что ПР2(у) = ПР(у) для каждого v e L3.
460 Часть III. Приложения Проекции бывают различными. Простейшей проекцией является параллельная ортогональная проекция. Это преобразование задается так. Пусть объект описывается в декартовой системе координат (jc, у, z\ и в этой системе координат экран графического дисплея соответствует прямоугольнику {(х, у) | 0 < х < а, О < у < Ь) на плоскости (jc, у). Простейший метод получения образа объекта на экране — это применение к множеству точек объекта в £з преобразования ПР(у) = v', где v = (jc, у, z\ av' = (x, у, 0). Если все точки образа находятся внутри экрана, то мы получили изображение объекта, если же не все точки лежат внутри экрана, то применяем преобразование масштаба, а потом преобразование ПР. Преобразование ПР можно записать в матричном виде: ПР = где v = (х, у, z). Очевидно, что ПР2(у) = ПР(у) для любого v e L\ и ПР"1 не существует, поскольку det(nP) = 0. Геометрическое построение ПР выполняется так. Проведем линию проекции из точки Q, задающей положение вектора v в пространстве L3, в точку &9 задающую положение вектора V в плоскости (jc, у), так, чтобы QQ была ортогональна плоскости (jc, у) (рис. 9.1.5). Ясно, что v' = v + (z • k) = (x, у, z)-(0, 0, z) = = С*,у,0) = ПР(у). 1 0 0| о i a о о o| r \y \z Рис. 9.1.5. Построение проекции Недостатком ортогональной проекции является то, что при таком преобразовании не отражается глубина объекта; высота полученного образа остается одной и той же независимо от расстояния объекта до плоскости (х, у). Для того чтобы преодолеть приведенные недостатки, вместо линий параллельной проекции будем строить линии, выходящие из одной точки. Найдем, чему в этом случае равна ПР(у) = V. Допустим, что фиксированной точкой на оси z является точка -zp (рис. 9.1.6, 9.1.7).
Глава 9. Алгебры в компьютерных информационных технологиях 461 Q(x, у, V* Q'(x. /. z)/ 2 z) ^ Vj / Рис. 9.1.6 Рис. 9.1.7 Из приведенных рисунков получаем, что У У У -£—=. ± ИЛИ у = — zp zp- z 1~z/zp Аналогично получаем х = - l-z/zf Следовательно, ПР1 имеет вид 1 ПР1(у) = - — (х,у,0) 1 - z/Zp или ПР1(у) = 1 l-z/z. -nP(v). Характеристику преобразований ПР и ПР1 дает такое утверждение. Утверждение 9.1.2. Преобразование ПР— линейное, а ПР1 — нелинейное и ПР12 = ПР1. Доказательство. То, что ПР — линейное, видно из матрицы этого преобразования. Покажем свойства ПР1: □ ПР1(а • v) = ПР1(ох, ay, az) = 1 1 - az/z, ■{ах, ay, О), а * ПР1(у) = — (ах, ау, 0) = ПР1(у): l-z/zp
462 Часть III. Приложения □ пр1(пр1(у))==пр1(—^—,—^—,о) 1-z/z, l-z/z, 1-0 l-z/zp l-z/^p что и требовалось доказать. 9.2. Реляционная алгебра и понятие реляционной базы данных 9.2.1. Определение реляционной алгебры При рассмотрении отношений, заданных на некоторых множествах, мы не принимали во внимание природу этих множеств и они выступали как абстрактные математические объекты. При переходе к базам данных необходимо учитывать их специфику и свойства. Прежде всего, отметим такие факты. Отношение R задается только на конечных множествах Ль А2, ..., Ап, следовательно, R тоже конечное. Отсюда сразу следует, что для каждого отношения /?, заданного на множествах Ли Аг, • •., Ап, и произвольной n-ки (аь аг, ..., ап) из А\ хАг х ... хАп можно определить: ложно или истинно отношение R для этой и-ки. (Это можно сделать хотя бы простым перебором всех элементов из R и А\ хА2х ... хАп). При задании отношения R пересчетом его элементов будем предполагать, что в этом перечислении нет одинаковых элементов. Такое задание отношения называется неизбыточным. Отсюда следует необходимость чистить результат операции над отношениями (например, при операции объединения отношений) с тем, чтобы удалить одинаковые элементы из полученного отношения. При реализации отношений на ЭВМ необходимо дать каждому отношению имя. Условимся считать, что имя отношения R отождествляется с буквой, какой оно обозначено. Введем понятия, которые будут использоваться далее. Если множество Л/ входит в произведение А\ х Аг х ... х Ат то оно называется доменом, а его индекс i — типом или именем этого домена. Если (а\ ,а2, ..., ап) Е R с А\ х А2 х ... х АП9 то элемент (а\, а^ ..., ап) называется записью, а его компоненты а,— полями или атрибутами. Число атрибутов
Глава 9. Алгебры в компьютерных информационных технологиях 463 называется степенью отношения R. Атрибут называется атомарным (или простым), если он состоит из одного неделимого значения. Заметим, что, поскольку множества А{ могут совпадать, то некоторые домены могут иметь один и тот же тип. Отношение R, заданное на множествах Ли Аг> ..., АП9 называется нормализованным, если любой атрибут его записи атомарный. Всякое нормализованное отношение R будем представлять в виде таблицы с именем R размером тхп, где т— мощность отношения /J, an— его арность. Строки этой таблицы представляют собой записи отношения R, а столбцы — имена атрибутов данных. Определение 9.2.1. Совокупность записей, удовлетворяющих некоторым нормализованным отношениям, называется (реляционной) базой данных (БД). Определение 9.2.2. Пусть {/?} — совокупность всех нормализованных отношений, составляющих БД. Алгебра G = ({/?}, W) называется реляционной алгеброй, если сигнатура Q включает бинарные операции объединения, пересечения, разности, декартового произведения, объединения отношений и две унарные операции: проекции и селекции. Перечисленные операции задаются таким образом. Проекция. Если R— n-арное отношение БД, то P(R(i,j)) означает выбор из отношения R совокупности атрибутов с именами i и у. Аналогично определяются проекции P(R(i)), P(R(iJ, k) и т. д. Иначе говоря, P(R(iJ))={r(iJ)\rER), то есть по записям г отношения R формируются новые записи, имеющие только атрибуты i и у. Пример 9.2.1 Пусть R задано таблицей: А1 А2 А3 А4 х 100 5 а у 105 3 а z 501 9 а iv 50 1 Ь iv 10 2 Ь IV 301 4 Ь
464 Часть III. Приложения Тогда /WU)) = a a a b \b \b •— a b — после чистки, P(R(AUA,)) = X У W W w a a a b b b = X У z w a b\ P(R(A2,A3,A*)) = 100 105 501 50 10 301 5 3 9 1 2 4 a a a b b b Селекция. Пусть Uj— некоторые атрибуты записей отношения /?, с— константа и 0 — один из символов <, <, 0, =, Ф, >, >. Селекция 5(Л(/9с)) или S(R(iQj)) отношения R по компоненте / и константе с или по компонентам / и j означает выборку элементов отношения /?, для которых истинно отношение /6с или /6/. Иначе говоря S(/?(/6c))={r|re Л&К06с}, 5(/г(/e/•)) = {r|rE^г&r(/)eк/,)}, где & — операция булевой алгебры. Пример 9.2.2 Пусть R — отношение, которое рассматривалось и примере 9.2.1, тогда
Глава 9. Алгебры в компьютерных информационных технологиях 465 S(tf(A4 = a)) = х 100 5 a у 105 3 a г 501 9 а S(R(A2<A3)) = 0.< Объединение. Операция объединения отношений R и Q определяется как и раньше, но с требованием совместимости операндов по атрибутам, то есть атрибуты отношений R и Q должны быть определены над совместимыми (одного и того же типа) доменами. Другими словами, RvQ= {t\te Rvte Q], где v — операция булевой алгебры. Пример 9.2.3 Пусть R— отношение, приведенное в примере 9.2.1, а б— отношение, заданное приведенной ниже таблицей Q. /1 5 10 15 2 6 1 k а а с d а b P(R(A3,A4))uQ = 5 10 15 2 6 1 a a с d a b u 5 3 9 1 2 4 a a с b b b = 5 10 15 2 6 1 3 9 2 4 a a с d\ a a a b b
466 Часть III. Приложения Пересечение. Пересечение отношений R и Q определяется как теоретико- множественное пересечение множеств R и Q, операнды которых совместимы по атрибутам. Иначе говоря, RnQ={t\te R&te Q]. Пример 9.2.4 Вычислим P(R(A^ А4)) п б, где R и Q взяты из примеров 9.2.1 и 9.2.3. P(R(A3iAA))nQ = 5 a 3 a 9 a 1 & 2 fc 4 fc n 5 10 15 2 6 1 a a с d a b = 5 1 a b Разность. Разность двух отношений R и <2, операнды которых совместимы по атрибутам, определяется как и ранее, то есть R\Q={t\te R&t£ Q). Пример 9.2.5 Пусть R и Q — те же, что и в примере 9.2.4. Тогда P(R(A39AA))\Q = 5 a 3 a 9 a 1 b 2 b 4 b \ 5 10 15 2 6 1 a a с d a b = 3 a 9 a\ 2 b\ 4 fc Декартово произведение. Декартово произведение отношений R и Q — это отношение RxQ, то есть обычное декартово произведение множеств R и Q. Другими словами, RxQ= {rs\re R&se Q], где rs — конкатенация записей г и s. Отсюда следует, что степень отношения RxQ равна сумме степеней отношений R и <2, а мощность Л х Q равна |Л| • |Q|. Это свидетельствует о том, что полученное отношение может иметь большие размеры и с этой операцией необходимо быть осторожными (особенно в условиях ограниченных разме-
Глава 9. Алгебры в компьютерных информационных технологиях 467 ров памяти ЭВМ). На практике используют ограниченные варианты этой операции — разного рода операции объединения. Пример 9.2.6 Найдем, чему равно декартово произведение отношений P(R(A\y Л4)) и P(/?G43, АА)) n Q (см. примеры 9.2.1, 9.2.4). P(R(AU Лд)) х (Р(/?043, A,)) п 0 = X У Z W a a b b X 5 1 a b\ X У z w X У z w a a a b a a a b 5 5 5 5 1 1 1 1 a a a a b b b b Степень полученного отношения равна 2 + 2 = 4, мощность этого отношения равна 2-4 = 8. < Объединение или тета-объединение. Операция объединения двух отношений: R и Q — это декартово произведение отношений R и Q, на атрибуты которых А и В наложено условие А 6 В, (R [А 6 В] 0, где 0 — это один из символов <, <, =, Ф, >, >. Иначе говоря, R[AQB]Q={rs\re R&se Q & r{A) 9 s(B)}. Таким образом, в получаемое отношение попадают не все элементы декартового произведения, а только те, которые удовлетворяют отношению А 0 В между атрибутами А и В. Из этого определения следует, что атрибуты А и В должны быть совместимыми. Есть несколько вариантов операции объединения. Экви-объединение — это объединение отношений R и Q при А = В, то есть объединение с проверкой на равенство. Натуральное объединение—это объединение, при котором атрибуты объединения имеют одинаковые (общие) домены. После объединения один из этих атрибутов отбрасывается. Следовательно, степень полученного отношения на единицу меньше суммы степеней отношений операндов. Произведение или композиция—это натуральное объединение, при котором отбрасываются оба атрибута объединения.
468 Часть III. Приложения Пример 9.2.7 Пусть R и Q — те же, что и в примере 9.2.4. Тогда получаем следующие объединения. Объединение Tet: Tet(R(Ay>il)Q)=\ jc 100 x 100 у 105 у 105 z 501 z 501 z 501 z 501 w 10 w 301 w 301 Эквиобъединение Eq: Eq(R(A3 = i,)0 = 1* IOC \w 50 J w 10 Композиция К: K(R(A3 = i,)0 5 5 3 3 9 9 9 9 2 4 4 a 2 d a 1 b a 2 d a 1 b a 5 a a 2 d aba a 1 b b 1 b b 2 d b 1 6 1 a 5 я 1 & 1 b\ b 2 d\ 1 jc 100 = L 50 \w 10 a a b b b d Последнее отношение получается из Eq(R(Ai = i\)Q) отбрасыванием четвертого атрибута. ^ 9.2.2. Некоторые свойства операций реляционной алгебры Кроме свойств операций пересечения, объединения и разности, о которых шла речь выше, операции проекции, селекции и объединения тоже имеют некоторые полезные свойства, а именно: их можно успешно использовать для оптимизации запросов к реляционной базе данных. Например, переставляя
Глава 9. Алгебры в компьютерных информационных технологиях 469 операции селекции так, чтобы они выполнялись перед операциями объединения, а не после них, можно ответить на запрос быстрее. Причина в том, что операции типа объединения и декартового произведения работают как генераторы, вырабатывая большое количество записей. Если некоторые операции селекции можно выполнять раньше, то число сгенерированных записей можно уменьшить. Следует придерживаться такого принципа: уменьшать информацию на входе генератора записей до минимальных размеров. Теорема 9.2.1. Для любых отношений R и Q, совместимых по атрибутам, справедливы равенства: 1. S((R и Q) (AQB)) = S(R(AQB)) u S(Q(AQB)); 1. S((R n Q) (AQB)) = S(R(AQB)) n S(Q(AQB)); 2. S((R \ Q) (AQB)) = S(R(AQB)) \ S(Q(AQB)). Доказательство. 1. S((RuQ)(AQB))={t\tGRuQ&t{AmB)} = {t\(tGRvtGQ)&tiA)QKB)}. Используя дистрибутивный закон ЬЪ (см. разд. 2.2.9), можно записать: {t | (t G R v t E 0 & t(A)Qt(B)} = = {t\(te R& t(A)Qt(B)) v(tsQ)& t(A)Qt(B)} = = {t \t G S(R(AQB)) v t G S(Q(AQB))} = = S(R(AQB)) u S(Q(AQB)). 2. Второе свойство доказывается аналогично. Его доказательство предлагается в качестве упражнения. 3. S(R(AQB)) \ S(Q(AQB)) ={t\(te R& t(A)Qt(B)) & -i((f G Q) & t(A) 9 t(B))}. Используя законы де Моргана, а потом — дистрибутивный закон, имеем {t | (t G R & t(A)Qt(B)) & (-4/ e0v ^(КАЖВ)))} = = {/1 (t G R & t(A)Qt(B) & -.(f e 0) v (t G R &t(A)Qt(B) & ->№)Qt(B)))} = = {t\(te R&^(tG Q)&t(A)Qt(B))v(te Л)&0)} = = {t\ it G R & ->(t G 0 & KA)Qt(B)) v 0} = = {t | (t G R & -i(r G 0 & t(A)Qt(B)} = S((R \ 0 (AQB)). Теорема 9.2.2. Для любых отношений R и Q, совместимых по атрибутам, справедливы равенства: 7. P((RvQ)(A)) = P(R(A))uP(Q(A); 2 P((RnQ)(A)) = P(R(A))vP(Q(A)); 3. P((R \ Q)(A)) = P(R(A)) \ P(Q(A)).
470 Часть III. Приложения Доказательство этой теоремы проводится тем же способом, что и доказательство теоремы 9.2.1. Теорема 9.2.3. Для произвольных отношений R и Q, совместимых по атрибутам, имеют место равенства: 1. S((R[AQB] Q) (CQD)) = (S(R(CQD))) [AQB] Q, если CuD — атрибуты отношения R и неатрибуты отношения Q\ 2. S(S(R(AQB)) (CQD)) = S(S(R(CQD)) (AQB)) = = S(R(CQD) & (AQB)) = R(AQB) n R(CQD)\ 3. S(P(R(A}, A2, ..., Ak)) (AtQAj)) = P(S(R(AiQAj)) (A,, A2, ..., Ak)), edeijG {1,2, ...,k}. Доказательство. Докажем свойство 1. S(R[AQB]Q) (CQD)) = {rs\rE R &s e Q & r(A)Qs(B) & rs(QQrs(D)} = = {rs | r G R & r(Q Q r(D) & s E Q & r(A)Qs(B)} = = {rs I rE S(R(CQD)) &seQ& r(A)Qs(B)} = S(R(CQD) [AQB] Q) в силу коммутативности булевой операции & и независимости отношения Q от атрибутов С и D. Доказательство свойств 2 и 3 предлагается в качестве упражнения. В конце параграфа заметим, что перечислены далеко не все свойства операций, и в связи с важностью оптимизации запросов к БД возникает вопрос о существовании канонической формы элемента реляционной алгебры. Данному вопросу уделяется большое внимание [55], но его обсуждение выходит за рамки этой книги. Более детально проблематика баз данных изложена в [24, 55, 58]. 9.2.3. Контрольные вопросы □ Какое преобразование называется перемещением? □ Дайте определение преобразований в плоскости: параллельного переноса, поворота, симметрии, скользящей симметрии. □ Дайте определение преобразований в пространстве: параллельного переноса, поворота, симметрии, скользящей симметрии, винтовой симметрии. □ Будет ли группой множество всех параллельных переносов плоскости, пространства? □ Сколько подгрупп имеют группы £(2), Е(Ъ)1
Глава 9. Алгебры в компьютерных информационных технологиях 471 П Охарактеризуйте группы Д2), Ео(2). □ Какие Вы знаете свойства преобразования масштаба? □ Какие Вы знаете свойства проекций? □ Дайте определение реляционной алгебры. □ Дайте определение операций проекции, селекции, объединения в реляционной алгебре. 9.2.4. Задачи и упражнения 1. Докажите свойства СП2 и Тг * 7У?е = 77?е * Тг. 2. Докажите свойства СО и СС2. 3. Докажите утверждение 9.1.1. 4. Докажите теорему 9.1.2. 5. Докажите, что множество всех поворотов не будет подгруппой Е0(2). Покажите, что преобразования переносов и поворотов не всегда можно переставлять местами. 6. Докажите теоремы 9.1.4 и 9.1.5. 7. Покажите, что поворот на угол и вокруг оси п = (щ, п2, л3), а потом поворот на угол t>i вокруг той же оси п будет поворотом на угол \) + х>\ вокруг оси п. 8. Докажите, что совокупность всех поворотов не будет подгруппой Е0(2). 9. Дайте полное доказательство теорем 9.1.6 и 9.1.7. 10. Докажите, что в случае преобразований скользящей симметрии и поворотной симметрии Tr* Sp = Sp* Tn TRQ * Sp = Sp* 77?0. 11. Докажите теоремы 9.1.9, 9.1.10 и 9.1.11. 12. Докажите коммутативность операции произведения двух поворотов относительно одной и той же оси. 13. Дайте геометрическую интерпретацию некоммутативности преобразований поворотов и переносов. 14. Дайте полное доказательство теоремы 9.1.12. 15. Покажите, что преобразование масштаба не всегда можно переставлять с преобразованиями поворота. 16. Дайте полные доказательства теорем 9.2.1, 9.2.2 и 9.2.3. 17. Докажите, что для единичного вектора п и произвольного вектора v имеет место тождество [п * [и * v] * п] = [n * v]. 16 3ак. 3427
472 Часть III. Приложения 18. Нетрудно заметить, что сигнатура операций реляционной алгебры может быть сокращена, поскольку, например, операцию пересечения отношений можно выразить через операции объединения и разности. Какие еще из операций реляционной алгебры можно выразить через другие операции? Постройте сигнатуру реляционной алгебры с минимальным числом основных операций. 9.3. Алгебраическая система списковых структур 9.3.1. Списки. Операции над списками Пусть F(X)— свободная полугруппа с единицей над некоторым конечным алфавитом Х = {х\, JC2, ..., хп}. Роль единицы играет пустое слово е. Напомним, что словом в алфавите X называется произвольная конечная последовательность символов этого алфавита. Произвольное слово/? = у\уг.. .ут из F(X) будем называть списком элементов у{у2...ytTh а сами элементы y,eX,i=l,2, ..., m, — составляющими этого списка. При этом элемент у\ называется началом, а элемент ут — концом списка. Если р е F(X), то число составляющих списка р называется его длиной и обозначается 1(р). Если р, q— два списка, то список (слово) q называется началом (концом) списка (слова) р, если существует такое слово р\ что p-qp (p= pq). Два списка р = s\S2. ..skuq = t\h.. Л\ равные между собою, если / = к (то есть l(p) = l(q)) и st? = th и = 1, 2,... Д. Из гл. 2 нам известно, что F(X) является алгеброй с одной бинарной операцией конкатенации (cone) и одной нульарной операцией (пустое слово е). Рассмотрим еще несколько функций и операций над списками, то есть над элементами множества F(X). Пусть N— множество натуральных чисел и р = у\У2---Ут— произвольное слово из F(X), тогда имеют место следующие функции. 1. head (р) = y,(head: F(X) -> F(X)). Другими словами, функция head(p) дает первый символ слова/?. Непосредственно из определения этой функции вытекают такие ее свойства: • head(e) = e\ • headOO = у, если уеХ\ • head(head(p)) = head(p).
Глава 9. Алгебры в компьютерных информационных технологиях 473 2. tail (р) = у2.. .ym(tail: F(X) -> F(X)). Очевидно, что tail^ = e, tail(y) = е, если у G X. Смысл приведенных ниже функций вытекает из их определения: 3. add(p, i,x) = yl...yixyi + ]...ym,0<u<l(p). 4. sub(pj) = yi...yimlyn.{...ym 1 <i<l(p). 5. dist(p, i) = (pi,p2), raepi = yi...y/»/>2 = yi + i...yin. 1 <*^/(p). 6. hl(p,0 = yi...^,0</</(p). 7. tr(p, 0 = ^ + 1...yw0<i</(p). 8. push (p, *) = px = add(p, /(p), x). 9. pop(p) = yi...ym.1 = sub(p,/(p)). Базовыми операциями, то есть такими, через которые выражаются все другие из перечисленных функций, являются операции е, cone, head и tail. Другими словами, имеет место такое простое утверждение. Теорема 9.3.1. Функции 3-9 представляются в виде термов с помощью операций е, cone, head и tail Доказательство. Рассмотрим последовательно случаи: 1. add(p, U х) = hl(p, /)jctr(p, 0- 2. sub(p, i) = hl(p, i - l)tr(p, i). 3. dist(p, i) = (hl(p, i), tr(p, 0). 4. hl(p, i) = head(p)head(tail(p))...head(tail(...(tail(p)...))). ч v / i раз 5. tr(p,0 = tail(tail(...(tail(p)))).. v v ' / раз Из представления функций hi и tr вытекает представление функций add и sub, а, значит, и функций push и pop. Теорема доказана. Пример 9.3.1 Пусть X = {х, у, z, и, v, w} ир = xyzuv. Тогда имеем 1. add(p, 3, jc) = head(jcyzwv)head(tail(jryzwv)) head(tail(tail(jcyzwv)))jctail(tail(tail(jcyzwv))) =
474 Часть III. Приложения = xht2id(yzuv)hedid(t3i\(yzuv))xtdi\\(tai\(yzuv)) = ху\ head(zwv)xtail(zwv) = jryhead(zwv)xtail(zwv) = xyzxuv. 2. sub(p, 3) = head(jryzwv)head(tail(xyzMv))tail(tail(tail(jryzwv))) = = xhead(yzwv)tail(tail(j>zwv)) = xytail(zwv) = xyuv. 3. hl(p,4) = = head(jcyzwv)head(tail(jcyzwv))head(tail(tail(jcyzMv)))head(tail(tail(tail(^ = ^head(^zwv)head(tail(^zwv))head(tail(tail(yzwv)))= = jryhead(zwv)head(tail(zwv)) = jryzhead(wv) = xyzu. 4. tr(p, 3) = tail(tail(tail(;ryzwv))) = tail(tail(yzMv)) = tail(zwv) = uv. 5. dist(p, 2) = (hl(p, 2), tr(p, 2))=(head(xyzMv)head(tail(jryzMv)); (tail(tail(xyzwv))) = (jthead(yzwv), (tail(yzwv))) = (xy, zuv). 6. push(p, jc) = add(p, /(p), jc) = add(xyzwv, 5, x) = xyzwvjc. 7. pop(p) = sub(p, Z(p)) = sub(xyzuv, 5) = xyzu. * Следует отметить, что функции head и tail (push и pop) действительно операции, в то время как функции 3-7 операциями не являются. Это разрешает ввести такое определение. Определение 9.3.1. Универсальная алгебра G = (F(X), W = {е, cone, head, tail}) называется алгеброй списковых структур (АСС). В этой алгебре легко установить справедливость таких тождеств: □ sub(p, 1) = tailO) = tr(p, 1); □ sub(add(p, i, x), i + 1) = p\ □ Ы(р,0) = еиЫ(р,/(р))=р; □ tr(p, lip)) = еи tr(p, 0) = p\ □ pop(push(p, x)) = p. Иногда наряду с функциями 3-9 рассматриваются и другие полезные функции, такие как 1. substr(p, i,j) = xt.. .jc/+7_i, то есть это подслово словар, которое начинается с /-го символа и имеет длину/ 2. conv(p) = х1Пхт-\.. jt2*i, то есть это перестановка символов, который составляет список р в обратном порядке. Построение представления функций substr и conv в виде термов алгебры списковых структур предлагается как упражнение. Пользуясь операциями и функциями 1-11 можно вводить другие функции. Рассмотрим некоторые такие функции.
Глава 9. Алгебры в компьютерных информационных технологиях 475 Пусть алфавит Х= {х\, х2, ..., хп) — множество, линейно упорядоченное отношением линейного порядка < (дс, < я;;- <=> и < Д p = s\s2. ..$*,<? = t\t2. ..tt. Лексикографическим порядком на множестве F(X) называется отношение <, при котором р < q, если выполнено одно из таких условий: □ слово р является началом слова q (в частности, совпадает с ним); □ существует такое натуральное число./, что Sj < tj и для всех i <j имеет место Si = tf. Примером такого порядка может служить размещение слов в словарях, если на соответствующем алфавите рассматривать обычный порядок букв как отношения линейного порядка. Относительно лексикографического порядка множество F(X)— полностью упорядоченное множество, минимальным элементом которого является пустое слово е. Пользуясь этим порядком, определим по индукции такие функции. 1. l(p): F(X) —> N— функция длины слова. Индуктивное определение этой функции такое: /(e) = О, lip) = 1 + /(tail(p)). 2. subword(p, q): F(X) x F(X) —> {0, 1}. Эта функция равняется 1, если слово q— подслово слова р, и равняется 0 в противном случае. Индуктивное определение этой функции такое: для любого слова q, отличного от пустого слова е, subword(e, q) = 0, subword(p, q) = если hl(p, l(q)) = q, то 1, иначе subword(tail(p), q). Непосредственно из определения вытекают такие простые свойства: поскольку пустое слово— подслово любого слова и всякое непустое слово — подслово самого себя, то subword(p, e)= 1, subword(p, р) = 1, subword(p, q) = 0, если 1{р) < l{q). 3. substit(p, q, r): F(X) x F(X) x F(X) —» F(X). Результатом этой функции является подстановка слова г вместо первого вхождения слова q в слово р. Определение этой функции такое: для всякого слова q9 отличного от пустого слова е, и произвольного слова г substit(e, q, r) = е, substit(p, q, r) = если hl(p, (l(q)) = q то г • tr(p, l(q)) иначе head(p) • substit(tail(p), q, r).
476 Часть III. Приложения Непосредственно из определения вытекают такие очевидные свойства: substit(p, е, г) = гр, substit(p, q, q) = p. Пример 9.3.2 Найти 1. s\\bword(abbcda, cd). 2. subv/ord(abbc, ax). 3. subst\t(abbcda, cd, a). 4. substituted, xa, da). Решение 1. subword(abbcda, cd) = s\\bv/ord(bbcda, cd) = = subword(£cda, cd) = subword(a/a, cd) = 1. 2. subword(ab£c, or) = subword(£fec, ax) = subword(fec, ax) = = subword(c, ax) = subwordO, ax) = 0. 3. s\\bs\\l(abbcda, a/, a) = a- substit(W>a/a, a/, a) = = a- b • subst\t(bcda, cd, a) = a • b • b • substit(afa, cd, a) = abbaa. 4. substit(a£a/, jca, da) = a • substit(6a/, xa, da) = = ab- substit(a/, xa, da) = a- be - substit(d, xa, da) = = a- b • с • d - substit(e, xa, da) = abed. * Расширим АСС предикатом равенства =. Расширенную таким образом АСС будем называть алгебраической системой списковых структур (АССС). Для этой алгебраической системы справедлива следующая теорема. Теорема 93.2. АССС является алгоритмически полной системой, то есть системой, в которой можно вычислить произвольную частично рекурсивную функцию. Доказательство. В соответствии с теоремой 3.1.3 для доказательства необходимо показать, что всякий нормальный алгорифм Маркова можно представить в этой системе. Пусть Ф— некоторый нормальный алгорифм Маркова, заданный системой формул подстановки R в алфавите X: Р\ -> [ • ]Я\' Рг ->{ЛЧг кРт -» [-КЛ \Р\ )Рг < \Рт -»[-]<7l ->[.]ft -> [•]<?« или <
Глава 9. Алгебры в компьютерных информационных технологиях 477 где ql = ,qi9 если формула подстановки заключительная и ql = qh если формула подстановки простая. Дале, пусть р е F(X) и G = (F(X'\ {e, cone, head, tail}, { = }) — АССС над алфавитом Х' = Хи{.}. Тогда, используя операции и предикаты АССС, а также функции subword, substit u функцию длины, можем записать для произвольного р из F(X): Ф(р) = если subword(р, pi) = 1 то если head(gi') = "." то substit (р, pi, tail(gi')) иначе 0(substit(p/ pi, gi') иначе если subword(p, рг) = 1 то если head(g2') = "." то substit (р, pz, tail(g2')) иначе 0(substit(p/ pz, qi) /03 n иначе иначе если subword (p, Pm) = 1 то если head(g^O = "." то substit (р, Pm, tail (gin')) иначе <P(substit(p, Pm, дь.') иначе р. Покажем индукцией по числу п примененных к слову р подстановок, что функция Др), полученная с помощью системы /?, и функция/(р), полученная с помощью системы (9.3.1), совпадают. При п = О имеем ftp) =p, поскольку ни одна из подстановок системы R не применимая к слову р. Из (9.3.1) вытекает, что/(р) =р, поскольку subword(p, pi) = 0. Итак, в этом случае Др) =f'(p)- Предположим, что равенство выполняется для всех m<n, и пусть п-ой формулой подстановки является формула р,- —> ql. Возможны такие случаи: формула pi —» ql заключительная и формула pi —» qi не заключительная. Рассмотрим оба случая. Пусть в первом случае m = n - 1, и после выполнения w-ой подстановки получено слово р. По предположению индукции ftp') =f'(p'). Из того, что Pi —> ql применима к р\ вытекает, что ни одна из подстановок, которые ей предшествуют в системе Л, не применима к р\ или, что то же самое, что subword(p', pj) = 0 для всех) < w, a subword(//, pi) = 1 и head(g//) = "Л Отсюда следует: Л//) = substit(p', ph tailfa,-')) = substit(//, ph qi) =/"(?')•
478 Часть III. Приложения Второй случай аналогичен первому, с той лишь разницей, что в первом случае вычисления останавливаются, а в втором — продолжаются. Теорема доказана. Для иллюстрации работы системы (9.3.1) рассмотрим некоторые примеры (см. разд. 3.1). Пример 9.3.3 1. Х= {я, b}y R имеет вид Га->.*(=9Г) \b->b (=<у2'). Подставив данные формулы в систему (9.3.1), получим Ф(р) = если subword(p, а) = 1 то substit (р, а, е) иначе если subword(p, Ь) = 1 то Ф{р) иначе р. Из данного выражения следует, что (9.3.1) не прекращает вычислений, если непустое слово р не имеет вхождений буквы я, то есть результат применения (9.3.1) не будет определен. 2. Х- {х\,хг, ...,*„}, R имеет вид х2 Тогда Ф(р) = если subword(p/ xi) = 1 то Ф(substit(р, х\, е) иначе если subword(p, рг) = 1 то Ф(substit(p/ х2/ е) иначе иначе если subword(p, хп) = 1 то <£(substit(p, хп, е) иначе р. 3. Х= {1, *}, Y= {1,*, а}, а/? имеет вид od 1 -» al al->.l e->a.
Глава 9. Алгебры в компьютерных информационных технологиях 479 Тогда имеем Ф{р) = если subword(p, *) = 1 то Ф(р) иначе если subword(p, all) = 1 то Ф (subs tit (p, all, al) иначе если subword(p/ al) = 1 то substit (p, al, 1)' иначе Ф(ар) . i 9.3.2. Реализация списков в памяти ЭВМ Из теоремы 9.3.2 следуют по меньшей мере два важных вывода. Во-первых, для реализации введенных операций и предикатов над списками в ЭВМ необходимо реализовать только базовые операции и предикаты: сопс, head, tail и =. Во-вторых, если время, необходимое для вычисления значений базовых операций, обозначить соответственно t, t\ и ti, то получим некоторую меру временной сложности вычисления других функций на ЭВМ. Действительно, такой мерой может служить сумма временных затрат на вычисление данной функции по числу базовых операций, то есть если m — число операций сопс, которые используются при вычислении данной функции, ш\ — число операций head, m2— число операций tail, то временная сложность вычисления всей функции в целом будет суммой m • t + пц • t\ + m2 • h. Пример 9.3.4 Пусть р = xyzuv. Тогда имеем 1. add(p, 3, х) = head(Ayzwv)head(tail(jtyzwv^^ значит, временная сложность вычисления функции add(p, 3, х) равняется 4 • t + 3 • t\ + 6 • t2. 2. sub(p,3) = head(xyzwv)head(tail(xyzMv))tail(tail(tail(xyzwv))), значит, временная сложность вычисления функции sub(p, 3) равняется 2 • t + 2 • t\ + 4 • t2. < Пусть имеем список: р = элем1 элем2 элемЗ элем4, тогда его можно представить таким образом: |элем1|след| —> |элем2|след| —> |элемЗ|след| —> |элем4|0| Реализация этого списка в памяти ЭВМ выполняется с помощью двух массивов: ЭЛЕМЕНТ и СЛЕДУЮЩИЙ (рис. 9.3.1, 9.3.2). Массив—это структура данных прямого доступа, то есть такая структура, доступ к элементам которой выполняется за ограниченное параметрами ЭВМ время, если известен индекс (номер) элемента.
480 Часть III. Приложения ЭЛЕМЕНТ - элем1 элем4 элем2 элемЗ СЛЕДУЮЩИЙ 1 3 0 4 2 Рис. 9.3.1 ПРЕДЫДУЩИЙ - 0 4 1 3 ЭЛЕМЕНТ - элем1 элем4 элем2 элемЗ СЛЕДУЮЩИЙ ] 1 3 0 4 2 Рис. 9.3.2 Заметим, что элементы списка могут идти не подряд в массиве, который представляет этот список, а произвольно. Например, в массиве на рис. 9.3.1 элемент 2 имеет индекс 4, а элемент 4— индекс 2 и т. д. Такое заполнение массива имеет как свои преимущества, так и недостатки. 9.3.3. Сложность выполнения операций над списками Как уже говорилось, для реализации операций над списками необходимо сначала реализовать операции cone, head и tail. Из представления списка в машине вытекает, что операции head и tail естественно реализуются с помощью соответствующих указателей. Рассмотрим другие операции. Если элементы списка размещены в массиве, который его представляет, подряд, то такие операции, как add и sub реализуются, очевидно, за ограниченное время. Если же они размещены не подряд, то необходимо еще найти индекс нужного элемента в массиве. Например, при вычислении функций add(/?, i, x)
Глава 9. Алгебры в компьютерных информационных технологиях 481 и sub(p, 0 необходимо затратить еще i единиц времени для поиска /-го элемента в массиве. Таким образом, имеет место такое утверждение Утверждение 9.3.1. Операции add и sub выполняются за ограниченное время, если известно местонахождение элемента в списке. Аналогично можно убедиться в справедливости такого утверждения. Утверждение 9.3.2. Операции сопс и dist выполняются за ограниченное время, если известен индекс последнего компонента и индекс компонента, ко- торый непосредственно предшествует месту расщепления списка, соответственно. 9.3.4. Разновидности списков Выделяют некоторые виды списков, которые различаются операциями, которые выполняются над ними. Стеком, или магазином называется список, в котором элементы добавляются и удаляются лишь в конце этого списка. Стек— это список, который реализуется одним массивом ЭЛЕМЕНТ (см. рис. 9.3.1) и одним указателем, который указывает на последний элемент списка. Для стека имеет место правило: "последним пришел —первым вышел". Операции над стеком: □ занести элемент в стек (push); □ забрать элемент из стека (pop). Очевидно, что операции push и pop не зависят от числа элементов в стеке и поэтому выполняются за ограниченное время. Очередь — это список, в котором элементы прибавляются с одного (переднего) конца, а удаляются из другого. Очередь реализуется одним массивом ЭЛЕМЕНТ и двумя указателями на первый и последний элементы в этом списке. Для очереди выполняется такое правило: "первым пришел — первым вышел". Двусторонний список— это список, у которого каждый компонент связан с предыдущим и следующим. Такой список реализуется с помощью трех массивов: ЭЛЕМЕНТ, СЛЕДУЮЩИЙ и ПРЕДЫДУЩИЙ (см. рис. 9.3.2).
482 Часть III. Приложения элем! элем2 элемЗ элем/: первый в очереди последней в очереди Рис. 9.3.3. Очередь Утверждение 9.3.3 (о свойствах двусторонних списков). Выполнение операций add и sub над элементами двусторонних списков не зависит от местонахождения предшествующего элемента и реализуется за ограниченное время. 9.3.5. Задание графов с помощью списков Как видно из предшествующего рассмотрения, матрицы смежности— довольно естественный способ задания графа в памяти ЭВМ. Если граф имеет п вершин, то для его задания необходимо иметь массив размера п • п, то есть для задания матрицы смежности графа необходимо п элементов памяти. В том случае, если матрица симметричная или симметричная и главная ее диагональ нулевая, то это сокращает необходимый объем памяти до 1 / 2 • п • (п - 1) элементов. Часто бывает так, что многие элементы матрицы смежности нулевые, и большая часть занятой памяти становится лишней. Несмотря на это, многие задачи на графах при таком задании решаются довольно просто и эффективно. Но существует целый ряд задач, которые решаются более эффективно, если задавать графы в памяти ЭВМ другими способами, например списками. Задание графа в виде списков можно выполнить разными способами. Один из них— задание графа списками смежности. В этом случае с каждой вершиной графа i связывается список вершин ДО, смежных с этой вершиной (рис. 9.3.4, в).
Глава 9. Алгебры в компьютерных информационных технологиях 483 Второй способ Списочного задания графа— таблица списков смежности (рис. 9.3.4 г). Выбор того или иного способа задания графа зависит от алгоритма решения задачи и потому каждое задание имеет свои преимущества и свои недостатки. Пример 9.3.5 1 2 3 4 5 6 7 8 9 / \ 2 М 4 \ / 3 1 0 0 0 0 2 1 0 0 1 3 0 1 0 1 4 1 0 0 0 1=> 2=> 3=> 4=> 2 3 0 2 0 0 4 О 3 О 2 4 3 2 3 5 7 0 8 6 0 0 9 0 Рис. 9.3.4 Ориентированный граф G (см. рис 9.3.4, а)) и его задание в виде б) матрицы смежности, в) списка смежности, г) таблицы списков смежности. ^ Задание графов матрицами смежности имеет свои преимущества и недостатки. Преимущества. □ Если граф G представляется матрицей смежности, то наличие или отсутствие ребра (w, v) в графе G определяется за ограниченное время. □ Память, которую занимает граф G, пропорциональна |V|2, даже если G имеет только 0(|V|) ребер. Часто строки и (или) столбцы матрицы смежности изображаются двоичными векторами. Это представление может значительно повысить эффективность алгоритмов на графах. Недостатки. Память, которую занимает граф G, пропорциональна |V| + |£|. Это представление часто используется, если |£| « |V|. 9.3.6. Задание множеств и термов с помощью списков Множества большей частью задаются списками, характеристическими векторами, графами, ациклическими графами, деревьями.
484 Часть III. Приложения Утверждение 9.3.4. Если множества А и В не пересекаются, то операция объединения этих множеств выполняется за ограниченное время, то есть не зависит от их размеров. Доказательство. Представим множества А и В в виде списков. Тогда можно сказать, что объединение этих множеств сводится к операции конкатенации этих двух списков. По утверждению 9.3.2 наше утверждение справедливо. Списочное задание множеств имеет следующие недостатки: □ операции пересечения и объединение множеств А и В требуют времени, пропорционального сумме размеров множестве и В; □ поиск элемента в множестве А требует времени, пропорционального размеру множества А. Альтернативой к списочному заданию множеств есть задание множеств характеристическими векторами. Утверждение 9.3.5. Если U—универсальное множество (то есть все множества, которые рассматриваются, являются подмножествами множества U), такое что \U\ = n, и его подмножества А и В задаются характеристическими векторами, то операции объединения и пересечения требуют п битовых операций, а операция НАЙТЩа, А) не зависит от размеров множества А. Доказательство. Задавая множества А и В характеристическими векторами длины и, сводим операции Аи В v\ A n В к операциям конъюнкции и дизъюнкции над соответствующими характеристическими векторами этих множеств, а операция НАЙТИ(я, А) состоит в том, чтобы убедиться, что v(a) равняется 1 или 0. Задания множеств характеристическими векторами имеет следующие недостатки: □ все операции A\J В и А пВ требуют времени, пропорционального п = Ц/|, а не \А\ и \В\\ П память, необходимая для задания множеств Aw В, тоже пропорциональна и, а не \А\ и \В\. Выбор того ли другого представления множества зависит от конкретной задачи. В завершение данного раздела сделаем еще некоторые замечания относительно временной сложности алгоритмов и программ, поскольку это одна из основных характеристик при оценке их качества. В теории сложности вычислений [4] с каждой конкретной задачей (а точнее, с алгоритмом решения данной задачи) связывают некоторое число, которое
Глава 9. Алгебры в компьютерных информационных технологиях 485 называется ее размерностью и которое выражает меру количества входных данных. Например, размерностью задачи умножения двух целых чисел может служить количество разрядов в двоичной записи этих чисел, размерностью задачи на графе может служить число ребер или число вершин в данном графе и т. д. Время, которое расходуется алгоритмом на вычисление результата, как функция от размерности задачи называется временной сложностью алгоритма. Если эта функция является константой (не зависит от размерности задачи), то говорят, что алгоритм выполняется за постоянное время или за константу. Если эта функция выражается полиномом, то говорят, что алгоритм имеет полиномиальную оценку временной сложности. Если функция показательная, то говорят, что алгоритм имеет экспоненциальную оценку временной сложности и т. д. Если алгоритм реализуется программой в некотором языке программирования, то его временную сложность можно определить более точно, поскольку более точно можно измерить сложность выполнения каждого оператора этого языка. Существует несколько критериев оценки операторов языка программирования, но наиболее распространенным является равномерный весовой критерий. По этому критерию на выполнение каждого оператора затрачивается одна единица времени. Пример 9.3.6 Алгоритм умножения целых неотрицательных чисел х и у, jc, у е N. Пока и * 0 выполнить (и: = и - 1; z : = z + v) ; Напечатать (z) ; Остановиться; Конец. Если за размерность задачи взять число единиц, которые составляют число jc, то число выполненных операций сложения и вычитания, необходимых для вычисления произведения чисел х и у, может служить временной мерой сложности алгоритма МН, которое выражается функцией 3 + 3 • х + 2 = 0(х). *
486 Часть III. Приложения 9.3.7. Контрольные вопросы □ Что называется списком? □ Какие операции над списками выполняются в АСС? □ Дайте определения АСС. □ Дайте определения АССС. □ Какие преимущества и недостатки существуют при задании множеств, термов, графов с помощью списков? □ Что называется матрицей смежности графа? □ Что называется характеристическим вектором конечного множества? □ Какие вы знаете разновидности списков? 9.3.8. Задачи и упражнения 1. Постройте термы для функций substr и conv в алгебре списковых структур. 2. Докажите утверждения 9.3.1 и 9.3.2. 3. Постройте алгоритм обхода составленного объекта для внутреннего порядка. 4. Постройте алгоритм обхода составленного объекта для обратного порядка. 5. Постройте матрицу смежностей, списки смежности и таблицу списков смежностей для графа. Рис. 9.3.5 6. Докажите, что множество слов F(X) в некотором конечном алфавите X будет полностью упорядоченным относительно лексикографического порядка. к 7. Дайте индуктивное определение функции L(P)-^ '(Р;) —суммарной i = i длины слов множества Р= {pi,p2, --^Рк}-
Глава 10 Теория автоматов и графов в компьютерных информационных технологиях В данной главе описываются применения теории автоматов, отличающиеся от тех, о которых шла речь в гл. 6, 7. Теория автоматов широко используется в современных информационных технологиях, таких как системы подготовки и редакции текстов, системы компьютерной алгебры, системы искусственного интеллекта и др. Освещаются основные моменты этих применений и приводятся соответствующие примеры, демонстрирующие принципы построения тех или иных систем. 10.1. Универсальный программный автомат Одно из весомых достижений современной техники — это построение универсальных программных автоматов, то есть таких автоматических преобразований информации, которые дают возможность реализовать произвольные алгоритмы. Такими автоматами являются современные универсальные электронные вычислительные машины (ЭВМ). Термин универсальные применительно к этим машинам понимают как универсальность по отношению к вычислительным алгоритмам. Поскольку всякий алгоритм может быть сведен, как об этом говорилось выше, к вычислению значения некоторой частично рекурсивной функции, то универсальность по отношению к вычислительным алгоритмам есть универсальность вообще. Проясним, что должна уметь делать система обеспечения работы ЭВМ, чтобы гарантировать эту универсальность. Принцип управления, обеспечивающий алгоритмическую универсальность ЭВМ, представляет собой развитие и обобщение принципа, положенного в основу алгоритмической системы Поста. Как и в схеме Поста, информация в ЭВМ сохраняется в памяти, разбитой на ячейки. Правда, в отличие от машин
488 Часть III. Приложения Поста в каждой ячейке памяти может храниться не одно из чисел 0 или 1, а целое слово в алфавите {0, 1}, которое может состоять из значительного (как правило, 30-40) количества двоичных цифр 0 и 1. В связи с этим рассматривают содержимое каждой ячейки памяти не как одну букву алфавита, а как слово (информационное слово) в двоичном алфавите {0, 1}. Двоичные цифры, входящие в запись слова, называются двоичными разрядами, а само слово — двоичным кодом или просто двоичным числом. Кроме замены двоичных цифр многоразрядными двоичными кодами, имеется еще одно существенное отличие в организации памяти универсальной ЭВМ (УЭВМ) и памяти для алгоритмов Поста. Как абстрактная алгоритмическая схема, машина Поста является схемой с неограниченным объемом памяти, в то время как реальные технические устройства, такие как УЭВМ, имеют ограниченные объемы памяти. Имея в виду то, что бесконечную память невозможно реализовать ни в одном техническом устройстве, принято называть машину универсальной, если организация ее управления и набор операций дают возможность реализовать любой алгоритм при условии неограниченного объема памяти. Универсальность современных ЭВМ на практике обеспечивается тем, что кроме быстродействующей (оперативной) памяти, ЭВМ оснащается относительно медленными (внешними) устройствами памяти, которые могут обмениваться информацией с оперативным запоминающим устройством. Объем внешней памяти можно считать почти неограниченным, что и обеспечивает (при наличии средств обмена кодами с оперативной памятью) практическую возможность реализации любого алгоритма. Последовательность операций, которые выполняет УЭВМ, задается с помощью программы, которая закладывается в память ЭВМ и представляет собой упорядоченное конечное множество приказов (команд). Эти приказы можно рассматривать как обобщение приказов, используемых при построении алгоритмической системы Поста. В отличие от схемы Поста, в которой при выполнении каждого следующего приказа активная ячейка смещается не более чем на один шаг влево или вправо, в УЭВМ предусмотрена возможность произвольного изменения положения активной ячейки от приказа к приказу. Для этого в каждый приказ вводится номер одной или нескольких ячеек памяти, которые становятся активными при выполнении данного приказа. Эти номера ячеек памяти в ЭВМ называют адресами. Число адресов, которые можно использовать в приказах современных ЭВМ, как правило, лежит в пределах от 1 до 4. В соответствии с этим различаются одно-, двух-, трех- и четырехадресные приказы. Рассмотрим сначала ЭВМ с четырехадресной системой организации приказов, то есть ЭВМ, в которых максимальное число адресов в приказе равно четырем.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 489 Разные типы приказов соответствуют разным операциям, выполняемым в ЭВМ. Приказы в ЭВМ записываются в виде двоичных чисел (как правило), которые могут храниться как в оперативной, так и во внешней памяти ЭВМ. Будем считать, что в каждой ячейке памяти может храниться или командное слово (приказ), или информационное слово. Командное слово разделяется на операционную часть и адресную часть. В первой части стоит код операции, которая выполняется во время действия приказа, изображаемого этим командным словом. Во второй части размещаются адреса ячеек, активных во время действия приказа. Операции, выполняемые ЭВМ, делятся на несколько классов. К первому классу относятся арифметические операции — сложение, вычитание, умножение и деление. Четырехадресные приказы для арифметических операций имеют, как правило, такую структуру: в операционной части приказа стоит код операции — ее условный номер, определяющий то или иное действие (например, 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление). Первые два адреса в адресной части приказа используются для задания адресов аргументов операции, указанной в приказе. Третий адрес в приказе служит для хранения результата выполнения данной арифметической операции. Наконец, четвертый используется для задания адреса ячейки памяти, хранящей приказ, который должен выполняться после действующего приказа. Аналогично строятся приказы для выполнения логических операций. Логические операции в большинстве своем бинарные и выполняются поразрядно, то есть отдельно для каждой пары соответствующих двоичных разрядов аргументов операции. К таким операциям принадлежат поразрядная конъюнкция и поразрядная дизъюнкция. Существуют также и унарные логические операции. К ним относят левые и правые сдвиги, которые превращают данный двоичный код xy...z в код ху...zO и Оху...z соответственно. Особую роль играют так называемые операции передачи управления, которые служат для изменения порядка выполнения приказов программы в зависимости от результатов, получаемых в процессе ее выполнения. Типичной операцией передачи управления (которую обычно называют операцией условного перехода) является операция условного перехода по точному совпадению слов. Первые два адреса в приказе, реализующем данную операцию, используются для ячеек памяти, из которых выбираются сравниваемые слова. Если слова совпадают (равны между собой), то следующий приказ берется из ячейки, размещенной в третьем адресе, если же слова не совпадают, приказ берется из ячейки, размещенной в четвертом адресе приказа условного перехода. Возможны и другие условные переходы, например условный переход в зависимости от знака разности двух слов или в зависимости от знака одного
490 Часть III. Приложения любого слова (в последнем случае очевидно, что в приказе условного перехода достаточно иметь место для трех, а не для четырех адресов). Память ЭВМ устроена таким образом, что при чтении слова из произвольной ячейки памяти для выполнения той или иной операции возникает копия этого слова, которая поступает в соответствующее устройство для выполнения операции, а само слово остается в ячейке, с которой оно было прочитано (скопировано). Если выполняется запись нового слова в ту или иную ячейку памяти, то информация, которая была в этой ячейке до записи, автоматически уничтожается (стирается). Принимая во внимание все эти свойства памяти, нетрудно заметить, что для выполнения произвольного.алгоритма Поста достаточно пользоваться лишь операцией (алгебраического) сложения, одной из операций условного перехода по точному совпадению слов и операцией остановки машины. Действительно, условимся оперировать лишь двумя произвольными информационными словами — р и q, первое из которых отождествим с нулем, а второе — с единицей двоичного алфавита произвольного заданного алгоритма Поста А Память УЭВМ М разделим на три части. Первая состоит всего лишь из пяти ячеек: я_ь яо, аь ^о и bu в которых размещены числа: 1,0, \9p,q\ в ячейках второй части разместим программу алгоритма А; наконец, третья часть имитирует информационную ленту алгоритма Л. Перейдем к непосредственному моделированию приказов алгоритма Поста А приказами машины М Как нам известно из разд. 3.1, алгоритмы Поста могут использовать шесть разных типов приказов. Приказ шестого типа непосредственно моделируется соответственным приказом машины М Приказы первых двух типов (запись в ячейку числа 0 или 1) моделируются приказами машины М, которые выполняют пересылку информации из ячеек bo или Ъ\ в активную ячейку, указанную, например, в третьем адресе машинного приказа. Понятно, что такую пересылку можно выполнить приказом сложения, в первых двух адресах которого стоит пара адресов ячеек д0 и bo или ао и Ь\9 а в третьем — адрес активной ячейки (четвертый адрес, как и в машине Поста, используется для размещения адреса приказа, который должен выполняться следующим после действующего). Нетрудно заметить, что постовский приказ пятого типа моделируется машинным приказом условного перехода по точному совпадению слов. Для этого достаточно сравнить слово в ячейке Ь\ со словом в активной ячейке и перейти в зависимости от результата этого сравнения к одному из двух приказов. Наконец, всякий постовский приказ третьего или четвертого типов моделируется с помощью группы машинных приказов, число которых равно числу
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 491 приказов первого, второго и пятого типов в заданной программе алгоритма Постав. Действительно, пусть / — произвольный приказ первого, второго или пятого типа алгоритма А. Согласно сказанному выше он моделируется одним машинным приказом, который обозначим г. Пусть постовский приказ q смещает активную ячейку на одну единицу вправо. Для машинной программы такое смещение может быть выполнено лишь за счет изменения на +1 всех адресов активных ячеек. Такие ячейки встречаются лишь в приказах машины, которая моделирует приказы первого, второго и пятого типов. За счет подходящей нумерации адресов, не ограничивая общности, можно допустить, что адреса активных постовских ячеек записываются в произвольно заданном, например последнем, адресе в приказе. Если считать адреса целыми двоичными числами, то приходим к выводу, что для изменения адреса активной ячейки в приказе г на +1 достаточно прибавить к ее адресу в команде г число 1, размещенное в соответствующем адресе ячейки а\. Аналогично выполняется смещение влево. Из сказанного ясно, что алгоритмическая универсальность произвольного цифрового автомата, работающего под управлением программы, будет обеспечена, если с помощью операций, выполняемых этим автоматом, можно выполнить такие четыре операции: П операцию пересылки содержимого любой ячейки памяти в любую другую ячейку памяти; □ операцию сложения констант с командным словом (приказом), размещенным в произвольной ячейке памяти, с целью изменения величины заданного адреса в приказе на 1 или -1; □ операцию условного перехода по точному совпадению слов; □ операцию (безусловной) остановки машины. Очевидно, что, кроме перечисленных операций, в наборе каждой ЭВМ должны быть также операции ввода (вывода) информации в машину (из машины). Отсюда вытекают условия функциональной полноты, которым должен удовлетворять универсальный язык программирования. Рассмотрим теперь вопрос о способах уменьшения количества адресов в приказах. Прежде всего, нетрудно понять, что четвертый адрес в приказе/? может быть удален за счет такого следования приказов в памяти ЭВМ, чтобы адрес приказа в /?, который должен выполняться следующим, был всегда на единицу больше адреса самого приказа р. Другими словами, использование четвертого адреса становится ненужным при условии, что порядок следования приказов в ячейках памяти соответствует порядку их выполнения машиной.
492 Часть III. Приложения Изменение последовательного порядка выполнения приказов может случиться в результате выполнения приказа условного перехода. Как указывалось выше, в четырехадресной системе условных приказов один из адресов используется для задания следующего приказа при невыполнении заданного условия, а другой — для задания следующего приказа при выполнении этого условия. При замене четырехадресной системы приказов трехадресной принимают решение, что в первом случае (при невыполнении условия) после приказа условного перехода выполняется приказ, записанный в следующей по порядку ячейке памяти, и только во втором случае, то есть при выполнении условия, один из адресов в условном приказе используется для задания адреса приказа, который должен выполняться следующим. Из сказанного следует, что четвертый адрес в приказе может стать лишним не только в обычных приказах, которые не меняют дальнейшего порядка выполнения приказов, но и в приказах условных переходов. Следовательно, мы приходим к трехадресной системе приказов. Дальнейшее уменьшение числа адресов в приказах может быть достигнуто за счет фиксации некоторой вспомогательной ячейки памяти, конструктивно отделенной от других ячеек ЭВМ. После фиксации такой ячейки открывается простой путь, дающий возможность уменьшить число адресов в приказе до минимума, то есть до одного адреса. Поясним это на примере операции сложения, которая требует три адреса: для первого аргумента а, второго аргумент Ъ и адреса с для хранения суммы. С помощью фиксированной ячейки d эту трехад- ресную операцию можно выполнить путем последовательного выполнения трех одноадресных операций — пересылки числа из а в фиксированную ячейку d, сложения числа, размещенного в ячейке Ь, с числом в ячейке d и, наконец, пересылки числа из ячейки d в ячейку с адресом с. Поскольку при этом могут меняться лишь адреса а, Ъ, с, а адрес d раз и навсегда фиксирован, то все три указанные операции реализуются с помощью одноадресных приказов. Описанный способ приводит нас к одноадресной системе приказов. Имея одноадресную систему приказов, нетрудно построить также двухадресную систему приказов. Второй адрес при этом может использоваться как для задания адреса следующего приказа, так и для задания числовых кодов (информационных слов), над которыми выполняются операции. Всякое устройство, которое имеет разбитую на отдельные ячейки дискретную память и работой которого можно управлять с помощью последовательности командных слов— приказов, размещенных в этих ячейках, называется программным автоматом, а сама последовательность приказов— программой работы такого автомата. Если набор операций (типов приказов) программного автомата функционально полный для реализации произвольного алгоритма, то такой автомат называется универсальным программным автоматом.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 493 Мы рассмотрели одно достаточно важное теоретическое применение бесконечных автоматов для установления функциональной полноты набора операций программного автомата, а теперь перейдем к рассмотрению некоторых практических применений конечных автоматов. 10.2. Применение в системах подготовки и редакции текстов 10.2.1. Идентификация слов при построении текстовых редакторов Рассмотрим свободную полугруппу F(X) над некоторым конечным алфавитом Х={х\> Х2, ..., хт). Пусть р, q е F{X)— произвольные слова, где l(p) < Kq)- Необходимо найти одно (первое) вхождение слова р в слово q или все вхождения слова р в слово q. Задачи такого типа носят название задач идентификации (в данном случае задачи идентификации слов). Задачи идентификации— составная часть проблем, связанных с редактированием текстов, поиском данных в базах данных и символьными вычислениями. Рассмотрим проблему поиска слова р в слове q, одну из основных при решении перечисленных задач. Поскольку слово р задано, а слово q может быть произвольным, то задача идентификации слова/? в слове q сводится к построению конечного автомата А, который представляет регулярный язык, имеющий вид L- {X} • р = {х\ vX2 v ... vхт) р. Очевидно, что данный язык регулярен, и тогда^ в силу теоремы синтеза существует автомат А, который представляет этот язык некоторым множеством состояний F. Заметим, что р е L, поскольку е е [X]. Более того, слово р — самое короткое слово из L, которое необходимо найти в слове q. Построение автомата А за словом р выполняется с помощью функции "отказов" g [4]. Эта функция определяется так. Пусть р = Ъ\Ъг..Ък и bj—у-ый символ слова р. Тогда g(j)— наибольшее целое число s <j, для которого Ьфг...bs = bj-s + \... bj. Если такое s не существует, то g(j) = 0. Пример 10.2.1 Пусть X = {а, Ь) и р = аЪаЪЪа. Функция g принимает такие значения: / ф) 1 0 2 0 3 1 4 2 5 0 6 1
494 Часть III. Приложений Например, g(4) = 2, потому что ab— наибольшее начальное слово, совпадающее с концевым словом слова abab (l(abab) = 4). * Напомним, что когда слово р представляется в виде произведения р = xyzy где х, у, z — некоторые подходящие слова, то слово х называется началом слова р, или префиксом, слово у — подсловом слова р, а слово z — суффиксом. Алгоритм вычисления значений функции отказов g для заданного слова р имеет такой вид. ~щщшщ ОТКАЗ(р). Начало. 1. gd) := 0; 2. Для j = 2 до 1(р) выполнить 3. i := g(j - 1); 4. Пока ({Xj Ф Xi + i) & (i > 0)) выполнить 5. i := g(i); КЦ; 6. Если ({Xj Ф х± + i) & (i = 0)) то g(j) := 0 Иначе g(j) := i + 1; КЦ; Конец. Характеристику алгоритма ОТКАЗ дают такие утверждения. Теорема 10.2.1. Алгоритм ОТКАЗ правильно вычисляет значения функции g. Доказательство ведется индукцией по числу j. Покажем, что g(j) — такое наибольшее целое число i<j, что *iJt2...*/ = *,_/+ix7_/ + 2....x/. Если такого i нет, то g(j) = 0. По определению функции отказов g(l) = 0. Пусть предположение индукции имеет место для всех k <j. При вычислении g(j) алгоритм ОТКАЗ, выполняя оператор 4, сравнивает Xj и %,--i) +1. Случай 1. Пусть Xj = xg(j-\) + \. Поскольку g(j- 1)— это такое наибольшее /, что x\...Xi = Xj-i...Xj-\, то равенство g(j) = i + 1 выполняется. Таким образом, операторы 5 и 6 функцию g(j) вычисляют правильно. Случай 2. Пусть Xj ^xg(j.\) + \. Тогда необходимо найти наибольшее значение I, для которого jci...jcl- = jcy_/...JCy_i и Jtj + i=JC/9 если такое число существует. Если такого / нет, то очевидно, что g(j) = 0, и g(j) правильно вычисляется оператором 5. Пусть ii, /г, ... — наибольшее, второе по величине и т. д. значения /,
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 495 для которых x\...Xi? = jt/_/..jty_i. С помощью индукции убеждаемся, что h =g(j- 1). *2 = s0'i), .-., ik = g(ik-\) = g(j- 0> поскольку /*_i — это (Л- 1)-е по величине значение /, для которого Х\.. ,Х( = Xj-j.. .Xj_ |, a ik — наибольшее значение i < /*_ ь для которого х\—х\ = Xik.i-i+\—Xik.i =Xj-\—xj-\- Оператор 4 рассматривает по очереди ilf i2, ... до тех пор, пока не найдет такое I, что jci...jc,- = jcy_/...xy.i и л:, +1 =Xj9 если такое i существует. После окончания выполнения оператора "Пока" i = im если такое im существует, и, значит, g(j) правильно вычисляется оператором 5. Теорема доказана. Теорема 10.2.2. Алгоритм ОТКАЗ вычисляет значения функции g за время 0(1(р)). Доказательство. Операторы 1 и 3 имеют сложность константы. Число выполнений оператора "Пока" пропорционально числу уменьшения значения i оператором 3 (i :=#(/- 1)). Поскольку сначала / = 0, а оператор 6 выполняется не более /(р)- 1 раз, то оператор "Пока" выполняется не более 1(р) раз. Следовательно, общая сложность алгоритма пропорциональна величине 0(1(р)). Теорема доказана. Алгоритм задания автомата А, о котором шла речь выше, теперь можно построить, используя значения функции g. Сначала строится так называемый скелетный автомат с 1(р) + 1 состоянием, для которого функция переходов / определяется так: автомат переходит из состояния i - 1 в состояние i под действием лишь символа*, словар (см. пример 10.2.2), а потом функция переходов скелетного автомата доопределяется с помощью функции отказов. Этот алгоритм имеет такой вид. шрш^:' ■' ••■■•" : . ._„_] /* переменная j — это номер символа в слове р */ Начало. 1. Для j = 1 до 1(р) выполнить f(j - 1, Xj) := j; КЦ; 2. Для всех х из X таких что х Ф х\ выполнить f(0, х) := 0; КЦ;
496 Часть III. Приложения 3. Для j = 1 до 1(р) выполнить Для всех х из X таких что х Ф Xj ♦ i выполнить f(j, x) := f(g(j), x); КЦ; КЦ; Конец. Теорема 10.2.3. Алгоритм АВТОМАТстроит автомат А, такой, что f(a0, bIb2...bk)=j тогда и только тогда, когда х\...Xj — суффикс слова bfc.. b^u xj...дс, не является суффиксом слова bfa.. .bk при i > j. Доказательство этой теоремы почти дословно повторяет доказательство теоремы 10.2.1. Заметим, что, для того чтобы проверить, является ли слово q подсловом слова р, можно и не строить полностью автомат. Для этого достаточно лишь построить функцию отказов. Поскольку по теореме 10.2.2 функция отказов вычисляется за время 0(l(q)\ то определить вхождения q вр можно за время 0(l(q) + l(p)). Задача распознавания того, входят ли слова qu qi, ..-, qk в словор, сводится к предыдущей задаче. Для ее решения сначала строится скелетный автомат для слов q\, <72, .., q^ Граф переходов скелетного автомата будет, очевидно, деревом. Для этого дерева найдем функцию отказов (это можно выполнить за время 0(1) = 0(l(q\) + l(qi) + ... + Kqk)))- После этого описанным выше способом доопределяем автомат, который необходимо было построить. Тогда за время 0(1 + 1(р)) можно определить, является ли слово qt подсловом слова/?. Пример 10.2.2 Построим автомат А для слова р = ababba, которое рассматривалось в предыдущем примере 10.2.1. После выполнения первого цикла (оператор 1) в алгоритме АВТОМАТ получаем такой граф переходов (скелетный автомат) искомого автомата: aba b b a 0 ► 1 ► 2 ► 3 ► 4 ► 5 ► 6. Рис. 10.2.1 После выполнения второго цикла (оператор 2) алгоритма АВТОМАТ получаем такой граф переходов искомого автомата: Ga b a b b a 3 ► 1 ► 2 ► 3 ► 4 ► 5 ► 6. Рис. 10.2.2
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 497 После выполнения третьего цикла (оператора 3) алгоритма АВТОМАТ получаем окончательный вид графа переходов автомата Л: и vj: Следовательно, автомат, который строится алгоритмом АВТОМАТ по слову р, представляет язык, имеющий вид {X} • р. Пользуясь данным методом решения задачи идентификации слов, можно выполнять поиск и замену сразу нескольких слов, то есть построить автомат, представляющий язык [X} • (р\ v p2 v ... v pk). Некоторые системы подготовки и редактирования текстов используют так называемые spell-cheking подсистемы (подсистемы проверки правописания). Опишем кратко принцип построения и работу такой подсистемы. Если произвольное конечное множество слов 5 входной полугруппы F(X) представляется конечным автоматом, то этот факт можно применить для проверки правописания слов. Действительно, пусть множество S соответствует множеству слов словаря (например, английского языка). Тогда, если имеется сомнение относительно правильности написания некоторого слова р из 5, то достаточно слово р подать на вход автомата Л, который представляет множество слов S некоторым множеством состояний F. Если автомате под действием слова/? достигает одно из состояний множества F, то слово р написано правильно, а если нет, то в слове есть ошибка. Заметим, что такая проверка слова р требует времени, пропорционального длине 1{р) слова/?. Рассмотрим на примере работу такого автомата. Пример 10.2.3 Пусть S= {abase, abash, abate, abbey)— подмножество слов английского языка (словарь). Соответствующий автомат, представляющий слова из 5, показан на рис. 10.2.4. В этом автомате 0— начальное состояние, а 6, 7, 10 — заключительные состояния. Для того чтобы применить автомат А для проверки правописания слов из множества S и идентификации ошибок в словах, введем еще одно состояние — состояние 11 — и переходы (показаны пунктирами) в это состояние из каждого другого состояния, за исключением состояний из F, под действием букв английского алфавита, для которых нет переходов в А.
498 Часть III. Приложения О 6" 7" 10 ' Рис. 10.2.4 Теперь для проверки правильности написания конкретного слова, например abbei, подаем его на вход автомата А. Под действием этого слова попадаем в состояние И, которое не принадлежит множеству заключительных состояний F, следовательно, слово abbei написано неправильно. Переход в состояние 11 был выполнен из состояния 9 под действием входного символа /, поэтому этот символ идентифицируется как ошибочный. ^ Заметим, что задание словаря с помощью конечного автомата дает значительную экономию памяти ЭВМ, что положительно сказывается на всем процессе работы с таким словарем. Как замечает автор работы [82], словарь, включающий 300 тыс. слов английского языка, требует 5,2 МБайт памяти в текстовом формате, в то время как соответствующий конечный автомат требует лишь 0,3 МБайт памяти. 10.2.2. Понятие гипертекста Системы подготовки и редакции текстов нашли дальнейшее развитие в системах работы с гипертекстами. Гипертекстом называется текст, в котором заданы связи между выделенными в нем элементами. Как объект, гипертекст можно изображать в виде графа, вершинам которого соответствуют некоторые самостоятельные фрагменты информации (тексты, формулы, графическая, звуковая информация и пр.), а ребрам — связи между этими фрагментами. Следовательно, в отличие от баз данных элементы гипертекста могут быть неоднородными объектами, не требующими форматизации. Доступ к отдельным фрагментам гипертекста выполняют системы навигации по гипертексту, с помощью которых проводится обход вершин графа гипертекста. При этом системы работы с гипертекстами дают в распоряжение пользователя такой системы дружеский интерфейс. Детали технологии работы с гипертекстами можно найти в [23].
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 499 10.2.3. Контрольные вопросы □ Какой автомат называется универсальным программным автоматом? □ Что означает универсальность программного автомата? Приведите функционально полный набор операций, которые должен выполнять автомат для обеспечения этой полноты. □ Дайте определение префикса, подслова, суффикса слова. □ Дайте определение функции отказов. □ Какой теоретический факт положен в основу алгоритма идентификации слов? □ Что называется гипертекстом? 10.2.4. Задачи и упражнения 1. Постройте spell-cheking подсистему для словаря S= {идентификация, идентификатор, идентичный, идентифицировать, идеал}. 2. Постройте функцию отказов для слова р = aabbaab. 3. Постройте автомат, который выполняет идентификацию слова р из предыдущего упражнения 2. 4. Постройте автомат, который выполняет идентификацию слов из множества 5, данного в упражнении 1. 10.3. Компьютерная алгебра Компьютерная алгебра — это достаточно развитая область знаний, имеющая свои собственные методы исследований [6, 26, 76]. Понятно, что детальное изложение этих методов в таком коротком подразделе невозможно, поэтому ограничимся лишь рассмотрением некоторых задач компьютерной алгебры. 10.3.1. Задача упрощения алгебраических выражений Одной из основных задач компьютерной алгебры является задача упрощения алгебраических выражений и уравнений. Задача упрощения алгебраических выражений и уравнений имеет две разновидности: □ построение по данному объекту более простого объекта, эквивалентного данному; □ нахождение единого представления для эквивалентных объектов.
500 Часть III. Приложения Более того, пусть Т— некоторое множество алгебраических выражений, например, конечных термов в языке первого порядка, конечных классов логических формул или конечных классов программ, и пусть символ ~ означает отношение эквивалентности на множестве Т. Задача построения эквивалентного заданному более простого объекта состоит в том, чтобы найти эффективную процедуру S: Г—> Г, такую что для произвольного t из Г справедливы свойства S(t) ~ U (SE) S(t)<t9 (SS) где < — некоторое отношение упрощения, которое может означать, например, что для некоторого s = S(t) неравенство "s < t" справедливо тогда и только тогда, когда "s не длиннее чем г" или "для представленная s в ЭВМ необходимо не больше памяти, чем для Л Конечно, s короче, чем t, если S(t) < t. Задача вычисления единого представления для эквивалентных объектов (задача канонического упрощения) состоит в том, чтобы найти эффективную процедуру S: Т—> Г для отношения ~, такую, что для произвольных s, t из Т справедливы такие свойства: S(t)~t, (SE) s~t=>S(s) = S(t\ (SQ то есть S указывает на единого представителя в каждом классе эквивалентности, и этот элемент S(t) называется канонической формой объекта t. Для формулировки приведенного ниже утверждения, характеризующего понятие канонической формы, напомним, что подмножество А множества натуральных чисел N называется рекурсивным, если его характеристическая функция является вычислимой функцией. Пусть Т— некоторое множество алгебраических выражений и Л: Т—> N, где N — множество натуральных чисел. Множество выражений Т называется разрешимым, если множество значений функции h рекурсивно, то есть множество номеров выражений из S имеет вычислимую характеристическую функцию. Теорема 10.3.1 (каноническое упрощение и распознавание эквивалентности). Пусть Т— множество объектов, алгоритмически разрешимое, и символ ~ означает отношение эквивалентности на Т. Отношение - алгоритмически разрешимо на Т тогда и только тогда, когда существует канонизация S для отношения ~. Доказательство. С одной стороны, справедливость этой теоремы вытекает из свойств (SE) и (SQ. Действительно, согласно свойствам (SE) и (SC) имеем s ~ t <=» S(s) = S(t).
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 501 С другой стороны, пусть g — вычислимая функция, отображающая N на Т. Положим S(s) = g(n), где л — наименьшее натуральное число, для которого g(n) ~ s. Функция S вычислима, так как g вычислима. Справедливость свойств (SE) и (SC) очевидна. Теорема 10.3.2 (каноническое упрощение и вычислимость). Пусть Т— разрешимое мноэюество выражений, (о — вычислимая бинарная операция на Т, и символ ~ означает некоторое отношение эквивалентности, являющееся отношением конгруэнтности относительно (О. Предположим, что задана канонизация S для отношения ~ Введем мноэюество "канонических представителей" (достаточное мноэюество) Rep(T) = {t e T\ S(t) = t) и определим (o'(s, t) = S((o(s, t)) для всех s, t e Rep(T). Тогда алгебра (Rep(T), £1') изоморфна фактор-алгебре (ТI ~, О.) и со' вычислима (здесь операция со(Сд, Ct) = С^, /> где С/ — класс эквивалентности относительно ~, который включает t). Эта теорема показывает, что при наличии канонизации для отношения эквивалентности, которое является отношением конгруэнтности относительно некоторой вычислимой операции, должен существовать алгоритм для выполнения операции в фактор-алгебре. Но оказывается, что канонизация для отношения эквивалентности на заданном множестве выражений не всегда возможна. Это обстоятельство является теоретическим предусловием рассмотрения неканонического упрощения. Для некоторых достаточно простых классов выражений задача функциональной эквивалентности алгоритмически не решается, то есть для них не существует какой-то канонизации. Двумя самыми распространенными являются упрощения типа О-эквивалентность (или нормальное) и регулярное упрощение. Упрощение типа О-эквивалентность может быть выполнено в случае, когда данное множество выражений содержит элемент, который играет роль нулевого. Вычислимое отображение S: T-+T называется отображением типа ^-эквивалентности для отношения ~ на множестве Г, если для всех элементов t из Т выполнено S(t) ~ U (SE) t~0=> S(t) = 5(0). (SZ) Очевидно, канонизация является нормальным упрощением. С другой стороны, если существует такая вычислимая операция со на Г, что для произвольного 5, t e Г справедливо отношение s ~ t <=» 0(5, i) ~ 0, {ME) то наличие нормального упрощения влечет существование канонизации для отношения ~.
502 Часть III. Приложения Понятие регулярного упрощения используется в ситуациях, когда среди выражений есть трансцендентные функции (например, exp, log и др.). Регулярное упрощение гарантирует, что все нерациональные термы в упрощенных выражениях алгебраически независимы. 10.3.2. Важные упрощения Упрощение алгебраических выражений включает упрощение логических формул и "оптимизацию" программ. Обе задачи важны для автоматического проектирования и контроля математического обеспечения ЭВМ. Важную практическую роль в системах компьютерной алгебры играют процедуры упрощения алгебраических выражений, предназначенные не столько для канонизации, сколько для фактического "упрощения" выражений относительно различных интуитивных критериев простоты (другими словами, неканоническое упрощение). Упрощение термов. Пусть Т(£1, X) — Q-алгебра термов над алфавитом X сигнатуры О.. Гомоморфизм (эндоморфизм) a: T(Q,, X) —> Т(£1, X), удовлетворяющий условию а(х) = х для всех * е X, кроме конечного их числа, называется подстановкой. Присваиванием (интерпретацией) называется гомоморфизм V: T(Q, X)—>Д, где А — некоторая фиксированная Q-алгебра. V(t) называется значением терма t относительно присваивания V. Термы t и t' называются функционально эквивалентными, если V(t) = V(t'). Пусть Е с T(Q, X) х Т(0,, X). Пара (a, b) e E будет представляться, как левая и правая части уравнения. Следующие два отношения эквивалентности на T(Q X), связанные с множеством £, являются основными для всех алгебраических теорий: Е |= s = t (s и t семантически равные в теории Е) Е \- s = t(s = t доказывается как следствие в теории Е). Определение 10.3.1. (E\=s = t). Если А— Q-алгебра, то формула s = t истинна в Л, (Е |= s = t тогда и только тогда, когда s = t истинна во всех Q-алгебрах, которые определяются множеством Е). Определение 10.3.2. (Е \- s = t). Отношение Е [■ s = t истинно, если формула s = t может быть выведена за конечное число шагов в таком исчислении (исчисление равенств). 1. а = Ъ для произвольных (а, Ь) е Е (элементы Е — это аксиомы);
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 503 2. a = а (рефлексивность), • a = b=> b = a (симметричность), • a = b,b = c=>a = c (транзитивность); 3. a = b=> a{a) = G(b) для произвольной подстановки а (правило подстановки); 4. a\ = b\, ..., an = bn => ш(яь ..., an) = co(£i, • •, Ь«) для произвольной операции сое й арностип (п = 1,2, ...) (правилозамены). Исчисление равенств является полным и правильным относительно определенного выше отношения |- в связи с такой теоремой. ТеоремаБиркгофа. Е \-s = t<=>E\=s = t. В силу этой теоремы отношение семантического равенства является рекурсивно перечислимым, если Е— рекурсивно перечислимое множество [6]. Далее для фиксированного Е, отношение =Е означает такое отношение эквивалентности: s=Et <=» Е \-s = t. 10.3.3. Полные системы редукций, критические пары, алгоритм пополнения В классах Г алгебраических объектов с отношением эквивалентности ~ часто можно естественным путем определить отношение редукции —», которое описывает, как "можно перейти за один шаг от объекта s к более простому эквивалентному объекту t". Итерация этой редукции представляет собой канонизацию для отношения ~, если выполнены такие условия: □ отношение —> может быть реализовано алгоритмически и, кроме того, рефлексивное, симметричное, транзитивное замыкание отношения редукции —> совпадает с отношением ~. □ отношение —> полное, то есть: • итерация процесса редукции, которая начинается с одного и того же объекта, всегда завершается получением одного и того же объекта, который не редуцируется дальше {единственность)', • итерация процесса редукции всегда завершается после конечного числа шагов объектом, который дальше не редуцируется {завершение). Для конкретного отношения редукции —> доказательство свойства заверши- мости иногда требует специальной техники. 17 3ак. 3427
504 Часть III. Приложения Проверка свойства единственности может быть алгоритмизирована с использованием двух таких важных идей: □ локализация (используется в общем случае); □ метод критических пар (используется для отношений редукции, "которые порождаются" конечным числом схем редукций). Конечнопорожденные отношения редукции, которые не являются полными, могут быть пополнены путем добавления схем редукции, возникающих при анализе критических пар. Этот метод пополнения вместе с локализацией и методом анализа критических пар составляет третью основную идею. Эти идеи имеют широкое применение методологического характера для построения канонизаций. Более формально, пусть ТФ0— произвольное множество алгебраических выражений. В контексте данного раздела произвольное бинарное отношение ->сГх Г будет называться отношением редукции. Обратное отношение <■—, транзитивное замыкание —»+, рефлексивно-транзитивное замыкание —> и, наконец, рефлексивно-транзитивно-симметричное замыкание <->* отношения —> имеют приведенные обозначения. Отношение —»° означает отношение тождества и ->л +' = —» • —>л. Определение 10.3.3 1. Отношение —> называется нетеровым, если оно удовлетворяет свойству завершимости. 2. Если отношение —> понятно из контекста, то через х обозначается нормальная форма элемента jc из Г относительно —>, то есть не существует такого у е Г, что jc —> у. 3. Элемент z е T называется общим потомком элементов х, у е Г, если х —» z <— у (это обозначается х 1 у). Пусть символ ~ означает отношение эквивалентности на Г, а символ —> означает некоторую нетерову редукцию, такую, что <-»=-. Допустим, что задана такая функция "выбора" Sel: Г—> Г, что jc—> Sel(jc) для произвольного хе Т, который не находится в нормальной форме. Рассмотрим вычислимую функцию 5, определяемую рекурсивно: !jc, если jc в нормальной форме, 5(Sel(jc)) в противном случае. Назовем S такого типа алгоритмом нормальной формы для редукции ->. Наша цель — найти алгоритмический тест для определения того, является ли
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 505 S канонизацией. Заметим, что S удовлетворяет аксиоме (SE), то есть S(x) <-» х. К тому же справедливо утверждение для произвольного х Е Т (х —>* S(x)). (SE") Ниже доказан ряд лемм, которые показывают, что тест для (5С), то есть для свойства х <-> у => S(x) = S(y\ может быть приведен интуитивно к более простым тестам и, в конце концов, может быть "локализован". А метод критических пар позволяет сделать тест эффективным. Пусть —>— нетерово отношение редукции и S— алгоритм приведения к нормальной форме для —>. Справедливы такие утверждения. Лемма 10.3.1 (сведение каноничности к условию Черча-Россера). Алгоритм S является канонизацией для отношения <-> в том и только в том случае, когда —> имеет свойство Черча-Россера, то есть для произвольных х, у Е Тизх <->* у имеем х >1 у. Доказательство. Из свойства канонизации отношения <->* очевидным образом вытекает свойство Черча-Россера. Наоборот, пусть х <-» у, тогда для некоторого z имеем S(x) <— х —> i <— у —> S(v) вследствие свойства Черча- Россера. Повторно применяя свойство Черча-Россера к S(x) и £, S(v) и z, получаем равенство S(x) = z и z = S(y), что и требовалось доказать. Лемма 10.3.2 (сведение условия Черча-Россера к условию слияния). Отношение —> имеет свойство Черча-Россера тогда и только тогда, когда оно удовлетворяет условию слияния, то есть для произвольных х, у, z E Т, если х <— z —> у, то х •i у. Доказательство. Из свойства Черча-Россера очевидным образом вытекает справедливость условия слияния. Наоборот, поскольку отношение <->* представляет собой объединение всех <-»", то можно воспользоваться индукцией по числу п. Базис индукции для п = 0 выполняется очевидным образом. Если х <->" +! у, то или jc —> z «->" у, или jc <— г *->" у для определенного z. В обоих случаях из предположения индукции следует справедливость z —> и <— у для некоторого и. В первом случае имеем х —> и <— * у и, следовательно, х i у, во втором случае на основе свойства слияния имеем х —> v <— ми для некоторого v, поэтому х —>* v <—* и <—* у, то есть снова д: •i у. Лемма 10.3.3 (сведение условия слияния к условию локального слияния). Отношение —> удовлетворяет условию слияния тогда и только тогда, когда —> удовлетворяет условию локального слияния, то есть для произвольных х, у, z Е Т, если x<r- z-*y, moxiy. Доказательство. Из второго условия, то есть условия локального слияния, очевидным образом вытекает первое условие. Наоборот, пусть zo е Т— произвольный
506 Часть III. Приложения фиксированный элемент. Пользуясь методом трансфинитной индукции относительно отношения порядка —», докажем такое утверждение: для всех z, таких, что zo —>* z, и для произвольных х, у, если х <— z —>* у, то я: X у. Покажем, что для всех х, у, если х <—* z —»* у, то х >1 у. Случаи, когда х = zo и zo = у, очевидны. В противном случае jc<— jci <— го —> ^i —> У для некоторых х\, У\- Тогда согласно условию локального слияния и предположению индукции существуют элементы и, v, и>, удовлетворяющие таким условиям: Х\ <r~*Z0->*y\, Х<г-*Х\-^\, u <— у\-+ у, v —> w, у —> w, что и следовало доказать. Из доказанных выше лемм вытекает такой критерий для проверки каноничности отображения S. Лемма 10.3.4 (локальный критерий каноничности). Отображение S является канонизацией для отношения <-»* тогда и только тогда, когда для произвольных х, у, z изх <r~ z-*y следует S(x) = S(y). Этот критерий все еще не является эффективным, поскольку для его проверки в общем случае необходимо рассмотреть бесконечно много х, у, z. Однако этот критерий становится эффективным в случае конечного числа схем редукций. 10.3.4. Алгоритм Кнута-Бендикса критической пары Алгоритм Кнута-Бендикса критической пары используется для нахождения решения задачи упрощения для отношений эквивалентности =Fj на множествах термов, где Е — система равенств алгебры T(Q, X). Будем изображать термы из T(Q, X) в виде деревьев. Например, t = gfxygxy3x имеет изображение в виде дерева на рис. 10.3.1. Будем говорить, что подтерм fxy входит в t на месте (1), подтерм gxy3 входит в г на месте (2), подтерм у входит в t на месте (1, 2) и т. д. Обозначим это так: 11 (1) = fxy, 11 (2) = gxy3, 11 (1, 2) = у и т. д. 11 e = t, где e — пустая последовательность мест. Множеством всех мест Oc(t) терма t в данном примере является множество {*, (1), (2), (3), (1, 1), (1, 2), (2, 1), (2, 2), (2, 3)}. 9 \yS 2 \з f 9 * 1/ \2 1/21 \3 х у х у з Рис. 10.3.1. Дерево терма t
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 507 Обозначим символом "•" конкатенацию на множестве F(N) всех мест. Префиксное упорядочение на F(N) определяется таким образом (F(N) — свободная полугруппа слов над алфавитом N={1,2, ...}: w<v<=>wvv = v, где w — соответствующее слово. Положим и I v = w, если и • и> = v, h«\v(mhv называются дизъюнктными), если не выполняется ни и < v, ни v < и. Наконец, для s, t e T(Q, X) и места и обозначим t[u <— s] терм, полученный из t заменой подтерма, который стоит на месте и, термом s. Например, в приведенном выше примере /[2 <— ffxx2] = gfxyffxxlx. Пусть Е— система равенств из 7\Q, X). Отношение редукции —>/; на T(Q, X) можно определить обычным способом так, что s -*E U если t получается из s применением одного из равенств из Е как "правила преобразования" (слева направо). Определение 10.3.4. Говорят, что s редуцируется к г с помощью Е (это обозначается s —>я г), если найдется такое правило (а, 6)е£,а также подстановка а и такое место и е Oc(s), что s I и = а(а) и t -j[u <— а(£)]. Пример 10.3.1 Пусть Е— система аксиом для групп, то есть Е= {(1) 1 • х = jc, (2)х • хЛ = 1, (3) (xy)z = *0>z)}. Тогда (xx~x)z -*£ 1 • z-^eZ.4 В дальнейшем допускаются только такие системы Е, которые имеют свойство: для произвольных (я, b)e E var(a) z) var(fo), где var(0 — множество переменных терма t. Определение 10.3.5. Говорят, что термы pwq образуют критическую пару в £, если найдутся такие правила (#ь ^i), (^2, b2) e £ и такое место и е 0с(аО, что □ й\ I и не является переменной; □ а\ / ии а2 унифицируемые термы; П p = G(a\) [u<— G2(b2)] и q = G\(bi), где аь а2— подстановки, причем G\(a\ I u) = а2(а2), которые представляют собой НЗУ термов а\ I и и я2, то есть ри q получаются путем применения правил {аи Ь\) и (а2, £2) к НЗУ(аь а2). Пример 10.3.2 Если T(Q, X) является свободной группой, то положим ах = (xy)z, Ъ\ = x(yz), а2 = хх~\ Ъ2 = 1, и = (1). Тогда jcx"1 является самым общим унификатором термов а\/и=ху и a2 = jcjc_1 (так что выполняется условие для переменных, возьмем ах(у)=х и а{(у) = х~\ а2 — тождественная подстановка). Следовательно, термы р = ai(a0 [и <- а2(£2)] = (х-1*) z [(1) *-1] = 1*ги<7 = <Ji(fti) = *~ l(*z) образуют критическую пару в Е. *
508 Часть III. Приложения Теорема Кнута-Бендикса (сведение условия локального слияния к условию слияния критических пар). Отношение редукции —»/<■ удовлетворяет условиям локального слияния, если для произвольной критической пары (р, q) в Е справедливо р ijr q [26]. Если Е— конечное множество, то всегда можно построить алгоритм Sel, такой что t —>// Sel(f), когда t не в нормальной форме. Если —>// нетерово, то обозначим S/7 алгоритм нормальной формы, базирующийся на алгоритме Sel. Вход: Е (система равенств). Вопрос: Будет ли алгоритм SE нормальной формы канонизацией для отношения 1. Положить С равным множеству критических пар из £; 2. Для всех (р, д) € С выполнить (ро, go) = SE{p, SE(q)) ; Если ро * до то ответ "SE не канонический"; КЦ; Ответ: nSE канонический". Корректность этого алгоритма является простым следствием приведенных выше теорем и лемм. Определение 10.3.6. Отношение —>// называется стойким, если для произвольных термов s, t и подстановки с имеет место s —>я t => g(s) —>е ст(г)), и совместным, если для произвольных 5, ft, fe и ие Oc(s) справедливо Пример 10.3.3 В приведенном выше примере 10.3.2 из теории групп, критическая пара (р, q), возникающая из правил (3) и (2) множества Е, не имеет общего унификатора. Единственная возможная для р редукция — это р=1*г = 2и? = / (xz) — уже находится в нормальной форме. Поэтому отношение —># не удовлетворяет условию локального слияния, и алгоритм Sz нормальной формы не является канонизацией. Приведенная ниже система аксиом £" для теории групп является нетеровой и находится по системе Е путем ее пополнения некоторыми тождествами: 1. 1 • jc = jc, 2. х~ х = 1,
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 509 3. (xy)z = x(yz\ 4. Г1 = 1, 5. х~\ху) = у, 6. х • 1 = х, 7. (х-1Г1=х9 8. хх"1 = 1, 9. х(х-{у) = у, 10. (хуУ1=у-[х'\ С помощью конечного числа проверок можно установить справедливость таких равенств Si?(p) = S^(q) для всех критических пар из Е'. В частности, приведенная выше критическая пара имеет общий образ z. Таким образом, по теореме Кнута-Бендикса отношение —>/.* удовлетворяет условию (локального) слияния, и 5/г представляет канонизацию для отношения <->V = <->*/.• = =/:• Это означает, что проверка тождеств в теории групп может быть полностью автоматизирована. * 10.3.5. Алгоритм пополнения Кнута-Бендикса Если алгоритм Кнута-Бендикса критической пары применим к системе равенств Е и показывает, что если редукция критической пары (р, q) приводит к неравенству S(p) Ф S(q), то следует попробовать добавить к Е правило S(p) = S(q) или S(q) = S(p) для достижения полноты: действительно, рефлексивно-симметрично-транзитивное замыкание отношения —»/; не изменяется после такого добавления, тогда как само отношение —»# расширяется. Этот процесс можно итерировать до тех пор, пока есть надежда, что будет достигнуто "насыщение", то есть критическая пара будет иметь единственную нормальную форму. В этом случае построенная таким образом система равенств снова порождает то же самое отношение эквивалентности =//, что и исходная система, но соответствующее ей отношение редукции -»/, единственное, то есть ассоциированный алгоритм нормальной формы представляет собой канонизацию для отношения =//. Перед расширением Е необходимо проверить, остается ли отношение —>/. нетеровым после расширения. Для того чтобы обеспечить это условие, следует выбрать одну из двух возможных пар: (S(p) = S(q)) или (S(q) = S(p)). Может случиться, что сохранение свойства завершимости невозможно доказать ни для одной из этих пар. В этом случае процесс пополнения не может быть разумно продлен. Ниже дается приблизительная схема этой процедуры.
510 Часть III. Приложения | /Алгоритм (пополнения для правил преобразования) \ I ■ »г „;.. V '•' ;*^#%#3 Дано: Е — конечная система равенств, такая что <-»е нетерово. Найти: F — конечную систему равенств, такую что "<-> е = <->**• и —V удовлетворяет условию (локального) слияния (то есть SF — канонизация). 1. F = Е; 2. С = {множество критических пар из F} ; 3. Пока С * 0 выполнять Взять (р, д) из С; (Ро, go) = (SF{p) , SF{q)); Если ро Ф до то (Анализировать (ро, до); Добавить к С множество критических пар ((ро, до) / F) ; Добавить к F пару (ро, до)) ; Извлечь из С пару (р, д) ; 4. Остановиться в случае успеха. Подпрограмма нахождения множества критических пар И взять элемент из трудностей не вызывают. Подпрограмма построения множества критических пар находит критические пары, полученные из нового правила (/?о, до) и правил из F. Подпрограмма Анализировать определяет, остается ли —»# нетеро- вым, когда (ро, <7о) или (до, ро) добавляются к Е. В первом случае пара (ро, Яо) не изменяется, во втором случае ро и <7о меняются местами. Если не выполняется ни одна из альтернатив, то подпрограмма Анализировать останавливается с ответом неуспех. При этом возможны такие варианты. 1. Алгоритм останавливается с положительным ответом. В этом случае полученная в конце работы алгоритма система F удовлетворяет условиям, сформулированным в начале описания алгоритма. 2. Алгоритм останавливается с ответом неуспех. В этом случае нельзя сказать ничего определенного. 3. Алгоритм не останавливается. В этом случае алгоритм представляет собой процедуру пересчета элементов отношения =Б. Можно сказать, что для отношения s =я t возможен пересчет его элементов с помощью редукции s и t по отношению к системе равенств, которая расширяется в процессе работы алгоритма.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 511 10.3.6. Проблема общих подвыражений и канонизации для свободных групп Рассмотрим некоторые конкретные отношения упрощения для алгебры термов (абсолютно свободная алгебра) и теории свободных групп (построение канонической формы элементов свободной группы и проблема построения базиса конечно порожденной подгруппы свободной группы). Задание термов с помощью конечных автоматов Пусть T(Q, X) — абсолютно свободная алгебра термов иге Г(й, X). Мы знаем, что t можно задать в виде составного объекта, который может быть деревом или ациклическим графом. Пусть f = 0)i(o)2(zi, Gfcfe, Zu z)\ 0)i(zi, (ih(zu Zi))) (рис. 10.3.2). Обозначим X\ = (0)Ь 1), X2 = (0)Ь 2), X3 = (0)2, 1), X4 = (0)2, 2), X5 = (0)3, 1), X6 = (0)3, 2), X7 = (0)3, 3), *8 = (Zi, 1), X9 = fe, 1), *10 = (Z, 1). Рассмотрим автомат ^ = ({1,2,3,4,5,6,7,8,9, 10, 11, 12, 13}, X= {ДС1, Х2, Хз, Хь Xs, Хб, Xi, X%, X9, *io}>/> ^ = {13}), где/— функция, заданная графом переходов. / \ /\ /\ д\ /\ Z; * Z Z, Z, a Рис. 10.3.2. Задание термов: а — граф терма f; б — автомат, задающий терм t Таким образом, чтобы выполнить переход от графа G/(v0) к соответствующему автомату, необходимо взять число состояний автомата |V| + 1, то есть пополнить множество V еще одним состоянием V и определить переходы в это и другие состояния автомата. Следовательно, автомат имеет на одно у \* 2 8 3 4 9 10 5 6 7 11 12
512 Часть III. Приложения состояние больше, чем граф, представляющий терм f, и не больше, чем 2т переходов, где т — число дуг в этом графе. Для выполнения перехода от графа G/(v0), который представляет терм t с помощью функции разметки А, где vo e V— начальная вершина этого графа, до соответствующего ему автомата А занумеруем элементы из X и Q (эти множества конечные в реальных системах компьютерной алгебры) целыми числами от 1 до п. Разобьем вершины этого графа на классы по их меткам, то есть v и V принадлежат одному классу эквивалентности, когда h{v) = h{V). Итак, множество V разбивается на классы, которые мы представим массивом Отм длины |V|, где Otm(v) означает имя класса, включающего v. Именем класса является номер этого класса в порядке появления классов. Каждому такому классу поставим в соответствие число г— арность соответствующей операции со из Q, символом которой обозначены вершины данного класса, а классам, вершины которых размечены символами нзХ, припишем арность 1. Пусть классам соответствуют числа г\, гг, ..., г/. Перенумеруем вершины графа g/4v0) и выполним обход его вершин. Пусть и — рассматриваемая вершина, лежащая в классе с именем/?, то есть Отм(м) =/?, и следующей вершиной после вершины и при обходе является вершина v, которая достигается по /-ой дуге вершины и. Тогда в автомате определяется переход из состояния и в состояние v под действием символа Xj = (со, /), где I/, если Отм(м) =1; гх + ... + гр_х + I, если Отм(м) = р > 1. Если же гр = 0 для и, то из и определяется переход в V под действием xj = (g(u), 1), где II, если Отм(м) =1; aj + ... + гр_х + I, если Отм(м) = р > 1. При таких договоренностях построение автомата А по соответствующему графу выполняется за один обход графа, то есть требует времени, пропорционального числу дуг в графе. Прежде чем перейти к рассмотрению задач и алгоритмов их решения, сделаем одно замечание о задании термов конечными автоматами. Пусть t— некоторый терм из T(Q, X\ S(t)— инициальный составной объект, представляющий терм и Gftl(v0) = (V, Е) — граф составного S(t\ h: V —> Q u X — функция разметки, и, наконец, А = (Vu {v*}, X,f, v0, v*) — конечный инициальный
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 513 автомат, построенный по графу G/(v0) так, как это было описано выше. Но такой способ кодирования символов алфавита X в данном случае не самый экономный. Учитывая специфику автомата А, можно предложить более практичный способ его задания. Эта специфика состоит в том, что после выполнения минимизации автомата А в один класс эквивалентности попадают те и только те состояния автомата А, метки которых в графе Gftl(v0) совпадают. Это обстоятельство позволяет ввести такое отношение эквивалентности R на множестве вершин V графа G/(v0): uRv <=> h(u) = h(v). Тогда множество вершин Vразбивается на классы эквивалентности Vb V2, ..., V* по этому отношению, где k < \Q u Х\ — число разных меток вершин в графе G/(v0). Поскольку граф Gftl(v0) изоморфно вкладывается в граф переходов автомата А, то начинать минимизацию автомата А можно с разбиения (Vi, ...,Vb {v*}), а не с разбиения (V, {v*}). Это дает возможность элементами алфавита X считать порядковые номера дуг 1, 2, ..., q графа G/(v0), где q< max{ar((D) | cog Q}, a ar— функция арности для операций. Если в первом случае Щ < q\Q\, то в другом |Х| < q. Пример 10.3.4 Пусть Q = {+, —, •, /}, X = {х, у, а, Ь) и t = x • (а/Ь) + (х-у). Тогда в первом случае имеем X = {х\ = (+, 1, •)> х2 = (+, 2, -), лг3 = (•, 1, х), дг4 = (•, 2, /), лг5 = (х, 1), х6 = (/, 1, а), хп = (/, 2, Ь), хг = (а, 1), х9 = (6, 1), х\0 = (-, 1, *), хп = (-, 2, у), *\2 = Су, 1)}, а в другом X = {1, 2} и получаем графы автоматов, изображенные на рис. 10.3.3. о Л2 '/V 2 3 7 8 \ V>\\ J 1\ 4 5 \1 /1 8 Рис. 10.3.3. Графы автоматов: а — граф составного S(t)\ б — автомат А (первый способ); в — автомат А (второй способ) х / х у
514 Часть III. Приложения Таблицы i f 0 1 1 2 6 переходов для первого и второго 1 2 3 2 * V 3 4 5 4 v способов 5 * V 6 7 8 имеют ви,я 7 * V V. Таблица 10.3.1 8 / * V - Таблица 10.3.2 f 0 1 2 3 4 5 6 7 8 / *1 1 - - х2 6 *з - 2 Хд - 3 - Х5 V *6 *7 *8 Х9 х10 — — — Символ "-" в таблицах переходов означает неопределенное состояние. Таблица переходов в первом случае имеет 20 элементов, а во втором — 120. ^ Условимся в дальнейшем называть терм t ацикличным, если соответствующий ему граф GJl(v0) ацикличный. Ясно, что когда граф ацикличный, то соответствующий ему автомат тоже ацикличный. Из теоремы 6.3.2, следствия 6.4.3 и приведенного замечания следует справедливость таких утверждений. Теорема 10.3.3. Сведение общих подвыражений терма t выполняется алгоритмом МАА за время О(т), где т — число дуг в графе, который представляет терм t. 4 5 8
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 515 Теорема 103.4. Сведение общих подвыражений ациклического терма t с учетом коммутативности операций из Q выполняется алгоритмом АКЗАА за время 0(к • т), где к = \Х\, т — число дуг в графе, который представляет терм L Практическая ценность приведенных теорем состоит в том, что они дают способ представления термов в памяти ЭВМ, используя наименьший ее объем. Алгебру Т(Х, Q) будем называть yl-алгеброй (А"-алгеброй), если в множестве Q есть некоторое непустое подмножество QA (&к) ассоциативных (коммутативных) операций. При этом Т(Х, Q) будем называть АК-алгеброй, если QA = WK * 0. Абсолютно свободную алгебру Г(Х, Q) будем называть 0-алгеброй. Пусть Eq— конечное множество равенств tx = t\, ..., *„ = *„'• Выражение t = t'(mod Eq) означает, что терм t можно преобразовать в терм t\ пользуясь лишь равенствами из Eq. Из теорем 6.4.1, 6.4.2, 10.3.3 и 10.3.4 вытекает справедливость таких утверждений. Теорема 10.3.5. Приведение общих подвыражений терма t выполняется алгоритмами УАКЗ и УАКСЗ в: П 0-алгебре за время 0((log г) • m • log((log г) • т)); П К-алгебре за время 0(г • т • log п), где г — максимальная арность коммутативной операции из Q. Теорема 10.3.6. Приведение общих подвыражений ациклического терма t выполняется алгоритмом АКЗАА в: П 0-алгебре за время О(т); □ К-алгебре за время 0(г • т), где г — максимальная арность коммутативной операции из Q. Пусть *i, f2, ...,^ T(X, Q) и Gg(Vh Ej) — граф, который представляет терм f„ i= 1,2, ..., л. Теорема 10.3.7. Проверка тождества конечного числа термов /у, t2> ..., tp выполняется алгоритмом УАКЗ в: □ 0-и А-алгебрах за время 0(М • log M); О К- и АК-алгебрах за время (г • М • log M), где М = t\E,[ 1=1 Доказательство. В первом случае преобразуем терм t так, чтобы скобки в выражениях, содержащих ассоциативные операции, были сгруппированы, например, вправо. После этого можно применять алгоритм МАА.
516 Часть III. Приложения Во втором случае переходим к так называемому ассоциативному графу (рис. 10.3.4), что соответствует введению одной и той же операции с разными арностями. После этого применяется алгоритм АКЗАА. со А У z a х у z б Рис. 10.3.4. Граф терма t (а) и ассоциативный граф терма t (б) Теорема 10.3.8. Проверка тоэюдества конечного числа ациклических термов th h> • • •, tp выполняется алгоритмом АКЗАА в: П 0- и А-алгебрах за время О(М); О К~ и АК-алгебрах за время (г • М), где М = t\E,[ 1 = 1 Доказательство аналогично доказательству предыдущей теоремы. Задание конечных автоматов с помощью системы правил переписывания В последнее время широкое использование получили системы для выполнения разного рода как символьных, так и аналитических преобразований выражений в разных алгебрах. Работа этих систем сводится к тому, что выражения в той или иной алгебре преобразуются согласно заданной системе равенств (правил переписывания) этой алгебры. Одной из первых систем такого рода была система Аналитик, разработанная в Институте кибернетики им. В. М. Глушкова НАН Украины еще в 1967 г. Среди современных таких систем самыми распространенными являются системы Reduce, Axiom, APS-1 (последняя разработана в Институте кибернетики НАН Украины) и др. Работу систем правил переписывания рассмотрим на примере системы APS-1 (Algebraic Programming System-1 — система алгебраического программирования). В системе алгебраического программирования APS-1 входные данные и системы правил переписывания для преобразования этих данных представляются в виде деревьев. Причем для построения дерева для выражения, которое включает ассоциативные операции, в этой системе выбрана правосторонняя
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 517 ориентация скобок. Язык программирования этой системы — Apian [80], система правил переписывания в котором задается в виде где и — условие применения правила р = q с традиционной семантикой: если условие и выполняется, то применяется правило р = q (то есть левая часть р заменяется правой частью q\ иначе это правило не применяется. Если условие в правиле отсутствует, то в этом случае считается, что оно тождественно истинно. Пусть А = {A, X,f, яо, F) — конечный автомат без выходов, заданный с помощью таблицы переходов trs: trs г1 Г2 • а0 an a2i ami ai ai2 а22 а/ус а„ а1п а2п amn Такое задание легко трансформировать в систему правил переписывания, которая будет выполнять работу автомата Л. Построение системы правил переписывания по таблице переходов сводится к такому процессу. Начиная с состояния яо, переходы Дам jc*) = о, заменяются правилами: если состояние щ е F, то генерируются два правила: (ah x-y) = trs(ay, у), (я,-, х) = 1 или произвольный другой символ; если же яу € F, то генерируется единственное правило: (я,-, х - у) = trs(fl,, у). Построив таким образом все правила по таблице переходов, процесс генерации правил завершается дополнением правила (*,у) = 0. Очевидно, что такое задание автомата адекватно заданию автомата таблицей переходов. Перейдем теперь к рассмотрению некоторых задач из теории свободных полугрупп, групп и конечных алгебр.
518 Часть III. Приложения Задачи из теории конечнопорожденных свободных групп Конечная последовательность Р слов свободной группы определяет некоторую полугруппу Н свободной группы F(X). Последовательность Р называется системой образующих подгруппы Н9 если слова, из которых состоит последовательность Р9 порождают эту подгруппу. Если Р является системой образующих для подгруппы Я, то эта подгруппа определяется системой Р однозначно. Систему Р образующих группы Н называют базисом (системой свободных образующих) этой группы, если каждое слово из Н можно представить единственным способом в виде произведения образующих системы Р, то есть равенство Д../?'< =pq.]...pq\ где //, q}г = ± 1, возможно тогда и только тогда, когда k = s, i\ =j\, ..., /*=/v, l\ -qu ... , h = <Is- Самые известные базисы подгрупп свободных групп— нильсеновские системы образующих [49]. Пусть Р = {/7i, ..., рт) — система образующих группы К Слово q e F(X) называется изолированным относительно системы Р, если существует не более одного слова/?/ из Р, такого, что q является началом (концом) или для/?,, или для pjx (i = 1, 2, ..., m). Старшим началом (концом) слова/? называется такое начало (конец) q этого слова, длина которого соответствует неравенству 1/2-/(р)</(<у)<1/2-/(р)+1. Для слов четной длины обычным способом определяется их левая и правая половины. Последовательность Р- {р\, рг, ..., рт} непустых несокращаемых слов называется нильсеновской, если выполняются такие два условия: □ старшие начала и концы всех слов из Р изолированы; □ для каждого слова из Р четной длины хотя бы одна из его частей — левая или правая — изолирована [44]. Эффективный алгоритм построения нильсеновской системы образующих можно найти в [44] вместе с его обоснованием. Здесь ограничимся лишь окончательной версией этого алгоритма и оценкой его временной сложности. Пусть Р — исходная система образующих, Соп(Р) — множество всех следствий, которые можно получить из системы Р однократным применением нильсеновских преобразований: □ заменой р{ из Р результатом сокращения любого из призведений /?, pj , Pj Ph PiPp PjPh Ph Pj € P, i ±j\
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 519 □ перестановкой слов и заменой словарх ему обратным р~[х (i = 1, 2, ..., m) в системе Р. Пусть предикат Ш(Р) выполняется тогда и только тогда, когда правые (или левые) половины всех слов четной длины изолированы в Р, a P(i) означает 1-ый элемент последовательности Р и ЦР(0) — его длину. При таких договоренностях алгоритм Нильсена приобретает такой вид. Начало Р := Ро; 1С: если (3 Р е Соп(Р)) (Ь(Р) > Ь(Р4)) то (Р := Р. на 1С); Если П1(Р) то стоп; Упорядочить слова Р по возрастанию их длины и поместить пустые слова в конец последовательности Р; Для i = 2, 3, ..., m выполнить Начало Если L{P(i)) = 0 то на 1С; ОБРАТНЫЙ := 0; ПОВТ: для j = l, 2, ..., i-1 выполнить Начало Если L(P(i)) > L(P(i) • P(j)"1) то (P(i) := P(i) • P(j)"1; на 1С) ; Если L(P(i)) = L(P(i) • P(j)"1) то P(i) := P(i) • P(j)"1; Конец; Если ОБРАТНЫЙ = 0 то (ОБРАТНЫЙ := 1; P(i) := P(i)'1; на ПОВТ) ; Если L{P(i)) четное то Для j = 1, 2, ..., i-1 выполнить Начало Если L(P(j)) > L(P(i) • P(j)) то (P(j) := P(i) • P(j) . на 1С) ; Если L(P(j)) = L(P(i) • P(j)) то P(j) := P(i) • P(j); Конец; Конец; На 1С; Конец. Известно, что временная сложность этого алгоритма пропорциональна величине |Р0|' ЦРо)2 [44].
520 Часть III. Приложения Перейдем теперь к рассмотрению некоторых задач теории свободных групп и методов их решения. Задача включения для слов свободной группы: дана конечная последовательность слов Р= [ри ..., Рт) свободной группы F(X) и некоторое слово q e F(X). Необходимо определить, входит ли слово q в подгруппу Я, которая порождена последовательностью слов Р. Не ограничивая общности, будем считать, что система образующих Р является базисом или нильсеновской системой образующих (если это не так, то, применяя к системе Р алгоритм построения нильсеновской системы образующих, получим такой базис). Решить задачу включения для слов можно двумя путями. Первый способ решения вытекает из такого утверждения. Теорема 10.3.8. Подгруппа свободной группы конечнопороэюдена тогда и только тогда, когда множество ее несокращаемых слов является регулярным множеством [3, 35]. Из этой теоремы следует существование конечного автомата А, который представляет несокращаемые слова подгруппы Н некоторым множеством состояний F. Известно, что временная сложность алгоритма построения автомата Л по нильсеновской системе образующих Р = {р\, ..., рт) пропорциональна величине |Р| • L(P) [35]. Отсюда вытекает алгоритм решения данной задачи. Действительно, построив по множеству Р автомат А, который представляет несокращаемые слова подгруппы Я, подадим на его вход слово q. Если состояние а =/(ао, q) € F, то q е Я, в противном случае q £ Н. Другим путем решения задачи включения слова q в Н является приведение слова q к пустому слову е с помощью умножения слова q на базисные элементы группы Н. Если q e Я, то q выражается через базисные элементы и, значит, существует такой базисный элемент р, что длина одного из слов pq, qp, p~xq, qp"1 будет не больше длины слова q (вследствие нильсеновского свойства базисных элементов). Выполняя замену слова q словом меньшей длины и применяя такое умножение к новому слову, мы, в конце концов, получим или пустое слово е, или слово р\ длина которого не уменьшается при очередном умножении на базисный элемент. Если в результате получили слово е, то q e Я, иначе q £ Я. Заметим, что первый путь решения этой проблемы эффективнее второго. Временные характеристики отличаются более чем на порядок.
Глава 10. Теория автомате и графов в компьютерных информационных технологиях 521 Задача включения для подгрупп: по двум подгруппам Н\ и Н2, заданным системами своих образующих Р\ и Рг соответственно, определить включения Н\ Q Н2 или H2qH{. Решение этой задачи сводится к построению нильсеновских базисов для Н\ и #2 по множествам Р\ и Р2. А потом, используя решение задачи включения для слов, можно определить включения каждого элемента базиса подгруппы #i (Я2) в подгруппу #2 (Hi). Из решения этой задачи очевидным образом вытекает решение задачи тождества для подгрупп: порождают ли конечные системы образующих Р\ и Р2 одну и ту же подгруппу свободной группы или нет? Задача изоморфизма для подгрупп свободных групп: определить по двум заданным конечнопорожденным подгруппам Н\ и Н2 свободных групп F(X) и F(Y) соответственно, изоморфны Н\ и Н2 или нет? Решение этой задачи сводится к построению нильсеновской системы образующих для Н\ и #2 и сравнению мощностей полученных базисов. Если эти мощности равны, то подгруппы изоморфны, в противном случае— неизоморфны. Этот факт вытекает из такого утверждения. Теорема 10.3.9. Свободные группы изоморфны тогда и только тогда, когда множества га свободных образующих равномощные. Эта теорема является следствием более общей теоремы о том, что ранг свободной группы не зависит от выбора системы свободных образующих этой группы [40]. В завершение этого подраздела заметим, что все сказанное о свободных группах справедливо и по отношению к конечнопорожденным свободным полугруппам. При этом некоторые построения упрощаются. Это касается, прежде всего, построения автомата, который представляет слова полугруппы. В этом случае алгоритм построения автомата по системе образующих проще, поскольку нет сокращения элементов. Пример 10.3.5 Рассмотрим полугруппу, порожденную элементами Р = {аа, ab, cc, cd, da, dc]. По базису Р строим систему правил переписывания trs, которая реализует таблицу переходов автомата А (автомата, который представляет полугруппу, порожденную базисом Р). Построение системы правил trs выполняется в два этапа: □ сначала базис Р представляется в так называемом приведенном виде, то есть в виде, где в выражении Р -р\ vp2 v ... w pk вынесены за скобки общие множители (в нашем примере P = a-(avb)vc-(c\/d)vd-(av c))\
522 Часть III. Приложения □ потом по полученному базису Р строится система trs, которая реализует функцию переходов автомата, представляющего слова множества Р. В результате получаем такую систему trs: trs := rs(x, у) ((О, a • у) = trs(2, у), (0,c-y) = trs(l,y), (0,rf-y) = trs(3,y), (l,d-;y) = trs(0,;y),(l,d) = 4, (l,c-y) = trs(0,y),(l,c) = 4, (2,fl-y) = trs(0,y),(2,fl) = 4, (2,b-y) = trs(ay).(2fb) = 4f (3,fl-y) = trs(0fy)f(3,fl) = 4, (3, с ■ y) = trs(0, у). (З, с) = 4, (*.y) = 5); При этом слово /? принадлежит данной полугруппе, если автомат останавливается в состоянии 4, и не принадлежит, если автомат останавливается в состоянии 5. ^ Конечные алгебры Поскольку конечные алгебры имеют конечное число элементов, то они являются регулярными множествами и, значит, могут быть представлены в конечных автоматах некоторым множеством состояний. Ограничимся рассмотрением конечной алгебры G с одной бинарной операцией, заданной таблицей Кэли: со Г° I1 \ап а0 Яоо а10 ал0 «i 301 2ц а„1 а„ ЯОл ащ алл Таблицу Кэли можно считать таблицей переходов автомата А, представляющего алгебру G. При этом множество состояний автомата совпадает с множеством заключительных состояний F, а функция переходов/задается уравнением f(ah aj) = cote, я/), U = 0, 1, 2, ..., п.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 523 Пример 10.3.6 Пусть конечная абелева группа задана таблицей сложения. + 0 1 2' 3 4 0 0 1 2 3 4 1 1 4 3 0 2 2 2 3 1 4 0 3 3 0 4 2 1 4 4 2 0 1 3 О коммутативности данной группы свидетельствует симметричность таблицы сложения. Соответствующая система правил переписывания выдает результат (значение выражения), или же знак ошибки err, если в выражении есть элемент, для которого не определена операция сложения. trsa := rs(jc, у) ((0, 0 + у) = trsa(0, у), (0,0) = 0, = 1, = 2, = 3, = 4, = 1, = 4, = 3, = 0, = 2, = 2, = 3, = 1, = 4, = 0, = 3, = 0, = 4, = 2' = 1. (0,1+у) (0,2 + у) (0,3+у) (0,4 + у) (1,0 +у) (1,1+У) (1,2 + у) (1,3 +у) (1,4 + у) (2,0 +у) (2,1+у) (2, 2 +у) (2,3+у) (2,4 +у) (3,0 +у) (3,1+у) (3,2 +у) (3,3+у) (3,4+у) = = = = = = = = = = = = = = = = = = = trsa(l,y), trsa(2, у), trsa(3, у), trsa(4, у), trsa(l,y), trsa(4, у), trsa(3, у), trsa(0, у), trsa(2, у), trsa(2, у), trsa(3, у), trsa(l,y), trsa(4, у), trsa(0, у), trsa(3, у), trsa(0, у), trsa(4, у), trsa(2, у), trsa(l,y), (0,1) (0,2) (0,3) (0,4) (1,0) (1,1) (1,2) (1,3) (1,4) (2,0) (2, 1) (2,2) (2,3) (2,4) (3,0) (3,1) (3,2) (3,3) (3,4)
524 Часть III. Приложения (4,0 + у) = trsa(4,;y), (4,0) = 4, (4, l+y) = trsa(2,)0,(4, 1) = 2, (4,2 + y) = trsa(0,j),(4,2) = 0, (4,3+>0 = trsa(l,;y),(4,3)=l, (4,4 + )0 = trsa(3,;y),(4,4) = 3, (x, у) = err); Систему правил переписывания в том или другом случае можно записать более экономным способом (сводя к минимуму число правил). Например, учитывая свойство нулевого элемента, приведенную систему правил можно записать более экономно: trsa := rs(*, у) ((х, 0 + у) = trsa(;t, у), (0, х + у) = trsa(jc, у), (0, jc) = д:, (1, l+y) = trsa(4,)-),(l, 1) = 4, (l,2 + y) = trsa(3,y),(l,2) = 3, (1, 3 + у) = trsa(0, у), (1, 3) = 0, (l,4 + >0 = trsa(2,>0,(l,4) = 2, (2, l+y) = trsa(3,y),(2, 1) = 3, (2,2 + ;y) = trsa(l,>0,(2,2)=l, (2,3+;y) = trsa(4,;y),(2,3) = 4, (2,4 + у) = trsa(0, у), (2, 4) = 0, (3, l+y) = trsa(0,y),(3, 1) = 0, (3,2 + >>) = trsa(4,;y),(3,2) = 4, (3,3+>>) = trsa(2,;y),(3,3) = 2, (3,4 + y) = trsa(l,y),(3,4)=l, (4, l+;y) = trsa(2,;y),(4, 1) = 2, (4,2 + >>) = trsa(0,;y),(4,2) = 0, (4,3+y) = trsa(l,y),(4,3)=l, (4,4 + y) = trsa(3,y),(4,4) = 3, (x, y) = err); < Рассмотрим теперь представление конечной алгебры, заданной двумя таблицами Кэли (например, для умножения и для сложения). Действуя аналогично тому, как это делалось выше, строим две системы правил переписывания, а потом прибавляем еще одну систему правил, которая связывает обе системы в одно целое.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 525 Пример 10.3.7 Рассмотрим кольцо, аддитивной группой которого является группа из примера 10.3.6, а операция умножения задана таблицей. • 0 1 2 3 4 0 0 0 0 0 0 1 0 1 2 3 4 2 0 2 3 4 1 3 0 3 4 1 2 4 0 4 1 2 3 Согласно описанному выше система правил переписывания для операции умножения имеет вид (эта система оптимизирована с учетом свойств констант 0 и 1 в кольце): trsm := ts(x, (l,x (х, 1 (2,2 (2,3 (2,4 (3,2 (3,3 (3,4 (4,2 (4,3 (4,4 (х,у) у)-- •у)-- ■у): ■у): ■у): ■у): ■у): •у)-- ■у): ■у): ■у): у) ((0, *) = 0, Ос, 0) = 0,(*, 0 • у) = 0, = trsm(xyy),(l,x) = x, = trsm(x, y),(x, l) = x, = trsm(3, у),(2, 2) = 3, = trsm(4, y),(2, 3) = 4, = trsm(l,>0,(2,4)=l, = trsm(4, y),(3, 2) = 4, = trsm(l,y),(3,3)=l, = trsm(2, y),(3,4) = 2, = trsm(l,y),(4,2)=l, = trsm(2, y),(4, 3) = 2, = trsm(3, y),(4,4) = 3, = errl); Преобразование этих двух систем правил переписывания trsa и trsm в кольцо выполняется с помощью простой системы правил переписывания, которая позволяет выполнять вычисление выражений в этом кольце. ring := rs(x, у) ((х + у) = trsa(ring(.x:), ringOO), (х - у) = trsm(ring(x), ringOO), atom(x)(x = jc), x = err2);
526 Часть III. Приложения В приведенной системе правил используется подсистема, которая определяет, является ли данное выражение числом. atom := rs(jc, у) (х + у = О, х • у = О, Алгоритм построения такого рода системы правил переписывания сводится к такой последовательности действий. Определяется главная операция при вычислении значения выражения, и в зависимости от этой операции в правой части правила переписывания вызывается система правил для вычисления значения этой операции. 10.3.7. Задачи и упражнения 1. Проверьте, пользуясь процедурой Кнута-Бендикса, будет ли каноническим множество тождеств теории свободных полугрупп, групп и колец. 2. Представьте конечным автоматом такие термы: tX = ((fo ' Х2) I (Х2 ' *з)) - (*1 ' *2», h = (((*i + х2) - (*i * х2)) / (*i + *2», h = (((*i - (*2 -хх))+ х2) - (х2 + хх)). 3. Постройте приведенный автомат для автомата из задачи 1. 4. Применяя алгоритм УАКСЗ к автомату из задачи 1, найдите симметричное конгруэнтное замыкание отношения i — отношения тождества, если операции + и • считать коммутативными. 5. Постройте автомат, который представляет множество слов: конституция, конструкция, конструктор, конституэнта, конкатенация, контроль. Постройте приведенный автомат к построенному и убедитесь, что он занимает меньше места, чем исходный автомат. 6. Постройте конгруэнтное замыкание отношения /?, которое задается такими соотношениями: Х\ ' Х2 = Х\ — Х2, Х2 — Х\ = Х\ — Х2 для автомата, представляющего термы t\ - ((Ul - Х2) + *з) * (*2 -*\))' (Х\ - Хз))9 h = ((Ui • х2) + (х2 -х\))- (х2 • х\)). 7. Постройте систему правил переписывания для построения канонической формы элементов в теории свободных абелевых групп.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 527 10.4. Теорема Холла и ее применение В данном разделе рассматриваются важные применения методов теории графов, связанные с потоками в сетях. Теоретической базой решения задачи о максимальном потоке при минимальном разрезе являются две важные теоремы: Холла и Менгера. Рассмотрим задачу комбинаторного характера, которая известна под названием задачи о свадьбе. Дано два конечных множества А (\А\ = т) — множество юношей и В (\В\ = п) — множество девушек, причем каждый юноша знаком с несколькими девушками. При каких условиях юношам можно жениться так, чтобы каждый из них женился на знакомой девушке? (Будем считать, что полигамия не разрешается). Пример 10.4.1 Пусть А- [аи а2, а^, а*} и В = {Ь\, Ь2, Ь3, Ы, bs}, а отношение знакомства между юношами и девушками показаны в таблице. Юноши Знакомые им девушки аЛ Ьь Ь4, Ь5 а2 Ьт а3 Ь2, Ь3, Ь4 аА Ь2, Ь4 Возможное решение задачи такое: (аи ЬЛ), (а2, b\), (a3, b3), (а4, b2). i Рассмотренную задачу можно представить графически с помощью двудольного графа G = (V, £), где V = A и В, а Е= {(аи Ьх), (аи ЬА\ (аи Ь5), (а2, Ьх\ (а3, Ь2), (а3, 63), (яз, ЬЛ\ (а4, Ь2\ (а4, ЬЛ)} (см. граф на рис. 10.4.1). а, ^ —^ ь,
528 Часть III. Приложения Для того чтобы точно сформулировать задачу о свадьбе в терминах теории графов, введем такое понятие. Пусть G = (А и В, Е) — двудольный граф, построенный выше. Идеальным паросочетанием из А в В в двудольном графе G называется такое взаимно однозначное соответствие между вершинами из А и подмножеством вершин из 5, при котором соответствующие вершины смежные, то есть соединены ребром. Теперь задачу о свадьбе в терминах теории графов можно сформулировать следующим образом: если G = (AuB, Е)— двудольный граф, то при каких условиях в G существует идеальное паросочетание из А в В1 Ответ на этот вопрос дает знаменитая теорема Холла. Теорема Холла о свадьбе. Пусть А (\А\ = т)— множество юношей и В (\В\ = п) — множество девушек, причем каждый из юношей знаком с несколькими девушками. Задача о свадьбах имеет решение тогда и только тогда, когда любые к юношей из множества А знакомы в совокупности не меньше чем с к девушками из множества В (1 <к<т). Доказательство. Необходимость в данном случае вытекает из того, что когда данное условие не выполняется для какого-либо множества из к юношей, то жениться необходимым способом не могут даже эти к юношей, не говоря уже об остальных. Достаточность будем доказывать индукцией по числу юношей т. Ясно, что при т = 1 теорема справедлива. Предположим, что число юношей т > 1. Рассмотрим два случая. □ Предположим, что каждые к юношей знакомы по крайней мере с к+ 1 девушкой. Тогда, если каждый юноша женится на знакомой девушке, то для остальных т-к юношей остается справедливым исходное условие. По предположению индукции эти т-к юношей могут жениться указанным способом, и тем самым теорема в этом случае будет доказана. □ Пусть теперь к юношей (к < т) знакомы в совокупности с к девушками, и они могут жениться необходимым способом. Среди остальных т - к юношей каждые h из них должны быть знакомы не меньше чем из h девушками, поскольку в противном случае эти h юношей вместе с выбранными раньше к юношами в совокупности будут знакомы меньше чем из h + к девушками, а это противоречит условию. Следовательно, для т - к юношей выполняется исходное условие и, по предположению индукции, т - к юношей могут жениться так, как требуется. Теорема доказана. Следствие 10.4.1. Пусть G = (Aufi, E)— двудольный граф и для любого подмножества А' из A f(A) = {b e B\(a, b)e E, аЕ А'}. В таком случае иде-
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 529 альное паросочетание из А в В существует тогда и только тогда, когда (УА'сА)И'1<|ДЛ)|. Рассмотрим некоторые применения теоремы Холла. 10.4.1. Трансверсали Пусть Е— непустое конечное множество и S= {Si, S2, ..., Sm} — семейство не обязательно разных непустых его подмножеств. Трансверсалью, или системой разных представителей для 5 называется подмножество множества Е, которое состоит из т разных элементов: по одному из каждого множества S/, / = 1, 2, ..., т. Пример 10.4.2 Возвращаясь к примеру 10.4.1 с юношами и девушками, мы построили трансверсаль для множества 5= {Si, 5г» S3, &Ь гДе й = {Ъи Ъ\, Ъ$\, S2 = {Ь\}, 5з={^2, &з, М> S={b2, 64}. Этой трансверсалью было множество Т={ЬьЬиЬг9Ьг).< Рассмотрим другой пример. Пусть Е = {1, 2, 3, 4, 5, 6}, a S = {Si, S2, S3, S4, S5}, где 5i = 52 = {1, 2}, 53 = 54 = {2, 3}, S5 = {1, 4, 5, 6}. Семейство 5 не имеет трансверсали, поскольку невозможно найти пять разных элементов из Е — по одному из каждого из подмножеств Si, S2, S3, S4, S5. Следует отметить, что его подсемейство S' = {Si, S2, S3, S5} имеет трансверсаль, например {1, 2, 3, 4}. Трансверсаль произвольного подсемейства семейства S называется частичной трансверсалью для S. Частичных трансверсалей для данного семейства S может быть несколько. В нашем примере семейство S имеет такие частичные трансверсали: {1, 2, 3, 6}, {2, 3, 6}, {1, 5}, 0. Нетрудно понять, что всякое подмножество частичной трансверсали само будет частичной трансверсалью. Возникает вопрос: при каких условиях заданное семейство подмножеств некоторого множества имеет трансверсаль? Поставленный вопрос легко связать с задачей о свадьбах. Для этого достаточно взять в качестве Е множество девушек, а в качестве S, — множество девушек, знакомых с аГът юношей (i= 1, 2, ..., т). Трансверсалью в этом случае будет множество из т девушек, такое, что каждому юноше соответствует лишь одна знакомая девушка. Следовательно, теорема Холла дает критерий существования трансверсали для заданного семейства множеств. Формулировка теоремы Холла для этого случая имеет такой вид. Теорема Холла для трансверсалей. Пусть Е — непустое конечное множество и S = {Si, S2, ..., Sm} — семейство не обязательно разных непустых его подмножеств. В таком случае S имеет трансверсаль тогда и только тогда,
530 Часть III. Приложения когда для произвольных к подмножеств St га объединение включает не менее, чем к разных элементов (к- 1,2, ..., т). Рассмотрим теперь вопрос об общих трансверсалях. Пусть Е — непустое конечное множество, а 5= {5ь 5г. ...» Sm} и Т= [Ти Т2, ..., Тт) — два семейства его непустых подмножеств. Интересно знать, когда существует общая транс- версаль для 5 и Г, то есть такое множество, которое состоит из т разных элементов множества Е и которое является трансверсалью и для 5, и для Т. К задаче об общей трансверсали сводится, например, задача составления расписания занятий. Пусть Е— множество отрезков времени, на протяжении которых могут читаться те или иные лекции; 5/ означает множество отрезков времени, на протяжении которых т профессоров желают читать лекции, a Ti— множество отрезков времени, на протяжении которых свободны т лекционных аудиторий. Тогда, найдя общую трансверсаль для 5 и Г, мы сможем выделить каждому профессору свободную аудиторию в удобное для него время. Сформулируем критерий существования общей трансверсали двух семейств 5 и Г. Теорема 10.4.1. Пусть Е— непустое конечное множество, a S = {Si, ..., Sm} и Т' = /У/, ..., TmJ — два семейства его непустых подмножеств. Множества S и Т имеют общую трансверсаль тогда и только тогда, когда для всех подмножеств А и В множества {1, 2, ..., т} (U5()u(U^)| is A jeB >|A| + |B|-m. Доказательство этой теоремы можно найти, например, в [68]. Следует заметить, что условия, при которых существует общая трансверсаль для трех семейств, пока неизвестны. 10.4.2. Латинские квадраты Латинским (т х и)-прямоугольником называется прямоугольная матрица ^ = (аи) размера тхп, где ац — натуральные числа, удовлетворяющие таким условиям: □ 1 < ау < т\ П элементы а^ в каждой строке и в каждом столбце разные. Следует отметить, что из этих условий вытекает неравенство т<п. Если же т = и, то латинский прямоугольник называется латинским квадратом. Выясним такой вопрос: если задан латинский т х n-прямоугольник, где т < п,
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 531 то при каких условиях можно присоединить к нему n-m новых строк так, чтобы в результате можно было получить латинский квадрат? Ответ на этот вопрос дает такая теорема. Теорема 10.4.2. Если А— латинский т х n-прямоуголъник и т<п, то А можно расширить до латинского квадрата путем присоединения п-т новых строк. Доказательство. Опишем прежде всего процедуру, с помощью которой А можно расширить до латинского (т + 1) х n-прямоугольника, а потом, повторяя данную процедуру, перейти к латинскому квадрату. Пусть /?= {1, 2, ...,«} и 5= {Si, 52, ..., 5„}, где 5, означает множество тех элементов из /?, которые не встречаются в z'-ой строке матрицы А. Необходимо показать, что существует п разных элементов, которые входят в каждое из множеств 5„ i = 1, 2, ..., п. По теореме Холла для этого достаточно показать, что объединение к произвольных множеств 5, содержит не меньше, чем к разных элементов. Но это очевидно, поскольку всякое такое объединение имеет {п-т)- к элементов, учитывая повторения. Если допустить, что в этом объединении меньше, чем к разных элементов, то это означало бы, что хотя бы один из них повторяется больше, чем п-т раз, что невозможно. Теорема доказана. 10.5. Теорема Менгера и потоки в сетях Теорема Менгера, рассматриваемая ниже, тесно связана с теоремой Холла и в некотором плане эквивалентна ей. Но эта теорема имеет достаточно широкое практическое применение, например, в теореме о максимальном потоке. Теорема Менгера касается числа простых путей, соединяющих две заданные вершины и и v графа G = (V, £). Для решения этой задачи необходимо ввести несколько новых понятий. Пусть / и Г — две простые цепи, соединяющие вершины и и v. Эти цепи называются непересекающимися на ребрах, если они не имеют ни одного общего ребра, и непересекающимися на вершинах, если они не имеют ни одной общей вершины, кроме вершин и и v. Аналогичные определения можно дать и для орграфов. В дальнейшем, если не оговорено противное, будут рассматриваться неориентованнные графы. Пусть G— связный граф, a v и w — две разные его вершины. vh'-Разделяющим множеством в G называется множество R ребер графа G, такое, что всякая простая цепь из вершины v в вершину w проходит через ребро из множества R. Аналогично, vw-отделяющим множеством в G называется множество 5 его вершин, которому не принадлежат вершины v и w
532 Часть III. Приложения и которое имеет то свойство, что всякая простая цепь из вершины v в вершину w проходит через вершину из множества 5. Пример 10.5.1 Для графа, изображенного на рис. 10.5.1, множества /?= {(р, s), (q, s), (t, у), (t, z)} и R' = {(и, w), (jc, w), (y, w), (z, w)} являются vw-разделяющими, а множества 5 = {p, q, y9 z) и S' = {s,t} — vw-отделяющими. Для подсчета всех простых цепей, которые не пересекаются на ребрах и которые ведут из вершины v в вершину и>, прежде всего, отметим, что когда какое-нибудь vw-разделяющее множество R имеет к ребер, то число таких цепей не превышает к, поскольку в противном случае некоторое ребро из R принадлежало бы больше, чем одной простой цепи. Если к тому же R является vw-разделяющим множеством наименьшей возможной мощности, то число простых цепей, которые не пересекаются на ребрах, равно к, и, следовательно, каждая такая цепь имеет ровно одно ребро из R. Этот результат известен под названием реберной теоремы Менгера. Теорема 10.5.1. Максимальное число простых цепей, которые не пересекаются на ребрах и соединяют две разные вершины v и w связного графа G, равно минимальному числу к ребер в vw-разделяющем множестве. Доказательство. Из приведенного выше замечания следует, что максимальное число простых цепей, которые не пересекаются на ребрах и соединяют вершины v и w, не превышает минимального числа ребер в vw-разделяющем множестве. Покажем индукцией по числу ребер в графе G, что эти числа равны. Пусть G имеет т ребер. Для т = 1 теорема очевидно справедлива. Пусть теперь теорема имеет место для всех графов, число ребер которых меньше т. Рассмотрим два возможных случая. □ Предположим, что существует vw-разделяющее множество R минимальной мощности К такое, что не все его ребра инцидентны v и не все его ребра инцидентны w. Например, в рассмотренном выше графе (рис. 10.5.1) таким множеством есть множество /?= {(р, s), (q, s), (t, y), (f, z)}. После
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 533 удаления из графа G ребер, которые принадлежат множеству /?, получаем два подграфа V и W, которые не имеют общих ребер и вершин и, например, v е V, a w e W. Построим два новых подграфа G\ и Gi таким образом: G\ — граф, полученный в результате стягивания тех ребер графа G, которые принадлежат графу V, a Gi строится аналогично, только ребра стягиваются к вершине w. (Графы G\ G2, полученные из графа G, показаны на рис. 10.5.2. Пунктирными линиями обозначены ребра множества R). а б Рис. 10.5.2. а) — граф G1f б) — граф G2 Поскольку число ребер в G\ и Gi меньше, чем в G, и очевидно, что R — vw-разделяющее множество минимальной мощности для обоих графов G\ и G2, то по предположению индукции в G\ существует к простых цепей из v у w, которые не пересекаются на ребрах, это справедливо и для графа G2. Комбинируя очевидным способом эти простые цепи, получаем к искомых простых цепей в графе G, которые не пересекаются на ребрах. □ Пусть теперь всякое vw-разделяющее множество минимальной мощности к состоит лишь из ребер, инцидентных вершине v, или из ребер, инцидентных вершине w. Таким vw-разделяющим множеством будет множество R' для графа G, изображенного на рис. 10.5.1. Не ограничивая общности, можно считать, что каждое ребро графа G принадлежит некоторому vw-разделяющему множеству мощности к, поскольку в противном случае удаление соответствующего ребра из графа G не влияет на величину к и дает нам право воспользоваться предположением индукции, чтобы получить к простых цепей, которые не пересекаются на ребрах. Следовательно, всякая простая цепь С из v в w должна состоять или из одного ребра, или из двух ребер (и потому не может включать больше одного ребра из любого vw-разделяющего множества мощности к). Удалив из G ребра, принадлежащие С, получим граф, который будет иметь, по крайней мере, к - 1 простых цепей, которые не пересекаются на ребрах. Вместе с С эти простые цепи и дают искомые к простых цепей в графе G. Теорема доказана.
534 Часть III. Приложения Следует отметить, что доказательство теоремы не конструктивно, поскольку из него не следует ни алгоритм нахождения к простых цепей, которые не пересекаются на ребрах, ни даже способ вычисления величины к для заданного графа G. Далее будет приведен алгоритм, который решает обе эти задачи, а сейчас сформулируем "вершинный" вариант теоремы Менгера для графов и "реберный" аналог для орграфов. Теорема Менгера. Максимальное число простых цепей, которые не пересекаются на вершинах и соединяют две разные несмежные вершины v uw связного графа G, равно минимальному числу вершин в vw-отделяющем множестве. Теорема 10.5.2. Максимальное число простых орцепей, которые не пересекаются на ребрах и соединяют две разные вершины v uw орграфа G, равно минимальному числу дуг в vw-разделяющем множестве. Доказательство обеих теорем почти дословно повторяет доказательство теоремы 10.5.1, и здесь они не приводятся. Применим теорему 10.5.2 к графу на рис. 10.5.3. Непосредственным подсчетом устанавливается, что этот граф имеет 6 простых цепей из v в w, которые не пересекаются на дугах. Дуги, из которых состоит соответствующее vw-разделяющее множество, обозначены пунктирными линиями. Из этого примера следует, что с ростом количества дуг, которые соединяют пары смежных вершин, графы становятся достаточно громоздкими. Это неудобство можно обойти, если нарисовать только одну дугу и приписать ей целое число, которое указывает, сколько таких дуг существует на самом деле. Например, для графа, изображенного на рис. 10.5.3, можно получить граф, изображенный на рис. 10.5.4. Это, на первый взгляд, совсем незначительное преобразование играет важную роль при изучении потоков в сетях и транспортных задачах, к рассмотрению которых мы и переходим. Прежде всего, покажем, что анализ сетей, по сути, эквивалентен изучению орграфов. Рассмотрим примеры.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 535 Пусть имеем некоторый процессор мультипроцессорной ЭВМ, связанный с к другими процессорами каналами для передачи информации. При этом каждый канал может пропускать разные объемы информации. Предположим, что передать информацию от данного процессора его к абонентам можно разными каналами. Необходимо передать максимум информации за наименьший промежуток времени, не превышая допустимых объемов информации, которые могут передаваться через каналы. Можно привести и другие возможные ситуации. Например, если граф, изображенный на рис. 10.5.3, интерпретировать так, что каждая дуга орграфа— улица с односторонним движением, а числа, которые соответствуют дугам, означают максимальный возможный поток транспорта (количество машин за один час) по этой улице, то хотелось бы найти наибольшее возможное число машин, которые могут проехать за один час из пункта v в пункт w. Этот орграф можно также рассматривать как схему электрической цепи, и тогда задача состоит в том, чтобы найти максимальный ток, который можно пропустить по этой цепи при условии, что граничные токи отдельных проводов цепи заданы. Исходя из данных примеров, определим теперь сеть N как орграф, каждой дуге е которого поставлено в соответствие некоторое положительное действительное число z(e). Число z{e) называется пропускной способностью дуги е. Существуют и другие, эквивалентные данному, определения сети: сеть N представляет собой пару (G, z), где G = (V, Е) — орграф, z: Е —> D+ — пропускная функция, a D+ — множество действительных неотрицательных чисел. Полустепенью выхода ln(v) вершины v называется сумма пропускных способностей дуг вида (v, z). Аналогично определяется и полустепень входа On(v). Например, на сети, изображенной на рис. 10.5.4, In(v) = 8, Оп(х) = 10. Очевидно, что аналог орлеммы о рукопожатии приобретает такой вид: сумма полустепеней выхода всех вершин равна сумме их полустепеней входа. В дальнейшем, если не оговорено противное, будем считать, что орграф G имеет ровно один источник и один сток. Это ограничение несущественное, поскольку общий случай легко свести к этому отдельному случаю. Для заданной сети N = (G, z) определим поток через N как функцию h, которая ставит в соответствие каждой дуге v из G неотрицательное действительное число h(v) (что называется потоком через v) таким образом, что: □ A(v) < z(v) для всякой дуги v; □ по отношению к сети (G, z) полустепень входа и полустепень выхода произвольной вершины (отличной от v и w) равны между собой. Неформально это означает, что поток через любую дугу не превышает ее пропускной способности, и что "полный поток", который входит в любую вершину (отличную от v и и>), равен "полному потоку", который выходит из нее. Нулевым потоком называется поток, равный нулю через любую дугу данной 18 Зак 3427
536 Часть III. Приложения сети. Дуга v называется насыщенной, если z(v) = A(v), и ненасыщенной — в противном случае. На рис. 10.5.5 изображен возможный поток для сети, поданной на рис. 10.5.4. Насыщенными дугами этого потока есть дуги (v, z), С*, z), (у, z), (*, w) и (z, vv), а остальные дуги — ненасыщены. Рис. 10.5.5 Из орлеммы о рукопожатии вытекает, что сумма потоков через дуги, инцидентные вершине v, равна сумме потоков через дуги, инцидентные вершине w. Эта сумма называется величиной потока. Как вытекает из рассмотренных примеров, прежде всего нас будут интересовать максимальные потоки, то есть потоки, которые имеют наибольшую возможную величину. Нетрудно проверить, например, что поток, изображенный на рис. 10.5.5, является максимальным потоком через сеть на рис. 10.5.4. Следует заметить, что в общем случае максимальных потоков может быть несколько, но все их величины должны быть одинаковы. Изучение максимальных потоков тесно связано с понятием разреза в орграфе, то есть с множеством А дуг орграфа G, которое имеет то свойство, что всякая простая цепь из v в w проходит через дугу из множества А. Другими словами, разрезом в сети является не что иное как vw-разделяющее множество соответствующего орграфа. Пропускной способностью разреза называется сумма пропускных способностей дуг, которые ему принадлежат. Разрез, имеющий наименьшую возможную пропускную способность, называется минимальным. Нетрудно увидеть, что величина любого потока не превышает пропускной способности произвольного разреза, и, значит, величина всякого максимального потока не превышает пропускной способности любого минимального разреза. Правда, сразу не совсем очевидно, что последние два числа всегда должны быть равными. Это следует из хорошо известной теоремы про максимальный поток и минимальный разрез, доказанной впервые Фордом и Фалкерсоном в 1955 г.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 537 Теорема Форда-Фалкерсона. Для всякой сети величина максимального потока равна пропускной способности любого минимального разреза. Доказательство. Предположим сначала, что пропускная способность произвольной дуги есть целое число. Тогда сеть можно рассматривать как орграф G', в котором пропускная способность измеряется числом дуг, соединяющих разные вершины. Следовательно, величина максимального потока в орграфе G' соответствует полному числу простых цепей, которые не пересекаются на ребрах и соединяют вершины v и w, а пропускная способность минимального разреза — минимальному числу дуг в vw-разделяющем множестве. Применяя теперь теорему 10.5.2, получаем нужный результат. Для переноса этого результата на рациональные числа необходимо умножить все пропускные способности на соответствующее целое число d, например, на наименьшее общее кратное всех знаменателей, чтобы получить целые числа. После этого имеем предыдущий случай, и нужный результат следует после деления величины максимального потока и пропускной способности минимального разреза на число d. Аналогично действуем в случае, когда некоторые из пропускных способностей выражаются иррациональными числами. В этом случае теорема доказывается с использованием аппроксимации этих чисел рациональными дробями с произвольной наперед заданной точностью. При этом соответствующие рациональные числа можно подобрать так, чтобы разницу между величиной любого максимального потока и пропускной способностью любого минимального разреза можно было сделать сколь угодно малой. Теорема доказана. Пример 10.5.2 Для заданной сети (рис. 10.5.6 - 10.5.9) имеем, например, ln(v) = 5, Оп(х) = 4.
538 Часть III. Приложения Рис. 10.5.8 Теорема Форда-Фалкерсона дает возможность проверять, является ли максимальным данный поток для достаточно простых сетей. Понятно, что на практике приходится иметь дело с большими и сложными сетями, и в общем случае очень тяжело найти максимальный поток простым подбором. Для этого опишем один из алгоритмов нахождения максимального потока в произвольной сети, пропускные способности дуг которой выражаются целыми числами. Пусть задана сеть N = (G, А). Алгоритм нахождения максимального потока через минимальный разрез выполняется за три шага. ||5горй^ ЗШ^Ш Начало 1. Прежде всего, подберем нулевой поток z (если он существует). Следует заметить, что чем больше величина выбранного нами начального потока, тем более простыми будут дальнейшие шаги. Например, если N— сеть, изображенная на рис. 10.5.6, то подходящим потоком будет поток, изображенный на рис. 10.5.7. 2. Исходя из N, строим новую сеть if путем изменения направления потока z на противоположный. Точнее, всякая дуга е, для которой z(e) = 0, остается в if вместе со своей начальной пропускной способностью, а всякая дуга е, для которой z(e) =0, заменяется дугой е с пропускной способностью h(e) - z(e) и противоположно направленной дугой с пропускной способностью z(e) . Сеть if в нашем примере показана на рис. 10.5.8. Заметим, что вершина v уже не является источником, а вершина w — стоком. 3. Если в сети if мы сможем найти ненулевой поток из v в w, то его можно добавить к начальному потоку z и получить в N новый поток z' большей величины. Теперь повторяется шаг 2, и используется при построении сети if новый поток z\ Повторяя эту процедуру, мы в конце концов придем к сети if, которая не имеет ненулевых потоков. Например, на рис. 10.5.8 существует ненулевой поток, в котором потоки через дуги (v, u), (u, z), {z, x), {х, у) и {у, w) равны единице, а потоки через другие дуги — нулю. Добавив этот поток к потоку, изображенному на рис. 10.5.6, получим поток, изображенный на рис. 10.5.9. Повторяя шаг 2, легко убедиться, что таким образом формируется максимальный поток. Конец.
Глава 10. Теория автоматов и графов в компьютерных информационных технологиях 539 В заключение данного раздела заметим, что для более детального ознакомления с проблемами потоков в сетях следует обратиться к монографии Форда иФалкерсона [71]. 10.5.1. Задачи и упражнения 1. Проведите детальное пошаговое рассмотрение работы приведенного выше алгоритма построения максимального потока в сети, которая изображена на рис. 10.5.6. 2. Найдите максимальный поток для сети, изображенной на рис. 10.5.10. Рис. 10.5.10 3. Проверьте работу данного алгоритма на примере сети с рациональными пропускными способностями. 4. Докажите, что поток, который является результатом работы алгоритма МПМР, будет максимальным. 5. Спроектируйте алгоритм построения максимального потока для сетей, графы которых двудольные.
Глава 11 Методы поиска доказательств теорем в логике предикатов Основным применением логики предикатов в компьютерных информационных технологиях является автоматизация поиска доказательств теорем. Эта проблема достаточно актуальна при решении задач искусственного интеллекта и задач, возникающих в базах данных и знаний, при решении вопросов представления знаний и работы с ними. Из предыдущих разделов, где рассматривались основные понятия математической логики, видно, что проблема доказательства теорем в логике предикатов первого порядка существенно отличается от аналогичной проблемы в логике высказываний. Это объясняется тем, что в логике высказываний существует лишь конечное число интерпретаций, тогда как в логике предикатов интерпретаций данной формулы может существовать бесконечно много. Математическая логика как наука возникла в связи с проблемой поиска универсальной процедуры доказательства математических утверждений. Одним из первых этой проблемой занимался еще Лейбниц (1646-1716 гг.). Потом аналогичную попытку осуществили Пеано (конец 1ХХ-начало XX вв.) и Д. Гильберт со своими учениками. Этот поиск велся до тех пор, пока А. Черч и А. М. Тьюринг независимо друг от друга не доказали, что не существует алгоритм, который проверяет тождественную истинность формул логики предикатов первого порядка [32, 75]. Но, несмотря на это, существуют алгоритмы поиска доказательств теорем, которые могут подтверждать, что формула общезначима, когда она действительно является такой. Правда, если формула необщезначима, то эти алгоритмы, вообще говоря, свою работу могут не завершить. Следовательно, в связи с результатом Черча-Тьюринга это наилучшее, на что можно надеяться. Важный вклад в методы автоматизации поиска доказательств теорем внес Ж. Эрбран (1930 г.). Он предложил алгоритм построения интерпретации, которая опровергает данную формулу (или ее отрицание). Одним из основных современных методов поиска доказательств является метод резолюций, предложенный А. Робинсоном в 1969 г. Процедура поиска
Глава 11. Методы поиска доказательств теорем в логике предикатов 541 доказательств, базирующаяся на методе резолюций, намного эффективнее любой из известных процедур. В связи с этим метод резолюций детально изучается и активно применяется в современных методах поиска доказательств. Вследствие такого внимания к методу резолюций появилось много модификаций этого метода и стратегий его применения, которые повышают эффективность метода. К ним следует отнести такие стратегии, как семантическая резолюция, лок-резолюция, линейная резолюция [75] и пр. Перейдем к рассмотрению методов Эрбрана и резолюций. 11.1. Метод Эрбрана 1.1.1. Основные определения По определению множество дизъюнктов противоречиво тогда и только тогда, когда оно ложно при любой интерпретации на всех областях интерпретации. Поскольку невозможно рассмотреть все области интерпретации, то было бы полезно и удобно, если бы существовала такая область Н, на которой множество дизъюнктов S противоречиво тогда и только тогда, когда оно ложно при всех интерпретациях на этой области. Оказывается, что такая область существует, и ее называют эрбрановскимуниверсумом множества S. ... Определение 11.1.1. Пусть S— множество дизъюнктов и #0— множество констант, которые встречаются в S. Если ни одна константа не встречается в 5, то Н0 состоит из одной константы, например //0= {а}. Для /= 1, 2, ... множество Я, + 1 представляет собой объединение //, и множества всех термов, имеющих вид/(/ь /2, • •, tn), (при всех п) для всех функций/арности п, которые встречаются в 5, где /,-е Ht(j = 1, 2, ..., п). Тогда каждое множество Hi называется множеством констант /-го уровня для S, и //„ называется эрбрановским универсумом S. Пример 11.1.1 □ Пусть S = {Р(Лх)\ a, g(y), Ъ}. Тогда: • #0={а, Ь}\ • Н2 = {а, Ь,Аа).ЛЬ), g(a\ g(b)Ma))Mb))\ • Я8(а)Ы8Ш g№\ g(Ab)l g(gW> g(g(b))}; • □ Пусть S = (Да), -,Р(х) v P(fix))}. Тогда • H0={a);
542 Часть III. Приложения • Я, = {а,Да)}; • Н2={а,Ла),Ма))У, • • Я-= {л,Л*),Л/(*)),У^ □ Пусть S = {Р(х) v R(x), D(z\ T(y) v -iC/(y)b Тогда • Ho={alHQ = Hl=H2=...=H„.< Ниже выражением считается не только терм, но и множество термов, множество атомов, литера, дизъюнкт, множество дизъюнктов. Выражение, которое не содержит переменных, называется основным выражением. Так что можно говорить об основном терме, основном атоме, основной литере, основном дизъюнкте, если есть необходимость подчеркнуть, что в соответствующем выражении нет переменных. Подвыражением выражения Е называется выражение, которое встречается в Е. Определение 11.1.2. Пусть S— множество дизъюнктов. Тогда множество основных атомов An(t\9 ..., /п) для всех n-арных предикатов А\ которые встречаются в 5, где t\9 ..., tn — элементы эрбрановского универсума множества 5, называется множеством атомов £ или эрбрановским базисом S. Определение 11.1.3. Основным примером дизъюнкта С из множества дизъюнктов S называется дизъюнкт, полученный вследствие замены переменных в С членами эрбрановского универсума 5. Пример 11.1.2 Пусть S = {Р(х\ R(fly)) v Q(y)} и С = Р(х) — дизъюнкт в S. Тогда H={aJ(a)J(f(a))J(f(f(a))) ...} (11.1.1) является эрбрановским универсумом множества 5; Л = {Р(а\ Q{a\ R(a\ P{f{a)\ Q(f(a)\ R(f(a)\ ...} (11.1.2) является эрбрановским базисом множества S и Р(а)\ P(f(f(a))) — основные примеры дизъюнкта С. * Определение 11.1.4. Пусть S— множество дизъюнктов, Я— эрбрановский универсум множества S и h — некоторая интерпретация S над Я. Интерпретация h называется Н-интерпретацией множества 5, если она удовлетворяет таким условиям: □ h(a) = а для произвольной константы а из Я; □ если/-п-арный функциональный символ wb\,b2, ..., Ьп — элементы из Я, то через / при интерпретации h обозначается функция, которая ставит в соответствие элементу (Ьи Ь2, ..., Ь„) е Я" элемент/^, Ъ2> ..., bn) e Я.
Глава 11. Методы поиска доказательств теорем в логике предикатов 543 При этом не возникает никаких ограничений при определении значения любого и-арного предикатного символа из S. Пусть А = {А\, Аг, ..., Ап, ...} — эрбрановский базис множества 5. Тогда //-интерпретацию А удобно задавать в виде А = {mum2, ...т„, ...}, где ntj— это либо Aj9 либо —Aj для j = 1, 2, ..., п, ..., причем, если mj = Aj, то атому Aj присвоено значение 1, и если т, = —\Ар — то значение О. Пример 11.1.3 Рассмотрим множество 5= {Р(х), R(f(y)) v Q(y)}. Эрбрановский универсум Я для 5 и его эрбрановский базис имеют вид (11.1.1) и (11.1.2). Я-интерпретациями множества S будут, например, такие интерпретации: □ /ii = {P(a\ Q(a\ R(a), P(f(a)\ Q(f(a)\ R(f(a))9 ...}; □ A2 = ЬР(а), -,Q(a), -,fl(a), -.P(/(a))f ^Q(№), -i*(/(a», ...}; □ /i3 = {P(a\ -,Q{a\ R{a\ P(f{a)\ ^Q{f{a)\ *№)), ...}; 0*4=1 P(a\ Q{a\ -Л(а), P(f(a)\ Q{f{a)\ -/?(/(<*)), ...}.< Пусть задана некоторая область D и интерпретация z множества дизъюнктов S над D. Возникает вопрос: каким образом связаны между собой Я-интерпретация и интерпретация z множества дизъюнктов 5? Пусть D = {1, 2} и S = {Р(х), Q(y,f(y, а))}. Тогда возможна такая интерпретация z над D: □ а = 2,/(1, 1) = 1,Д1, 2) = 2,/(2, 1) = 2,/(2, 2) = 1, ...; □ Р(1) = 1, Р(2) = 0, £(1, 1) = 0, £(1, 2) = 1, £(2, 1) = О, □ (2(2, 2) =1,.... Для такой интерпретации z можно определить соответствующую Я-интерпретацию А, которая соответствует z. Это выполняется таким образом. Сначала построим эрбрановский базис S: А = {Р(а\ Q(a4 я), Р(/(я, a)), £(а,/(а, a)\ £(/(а, a\ a), Q(f(a, а),/(а, а)\ ... }. Теперь, пользуясь интерпретацией z, найдем значения каждого члена эрбра- новского базиса А: Р(а) = Р(2) = 0, £(а,я) = £(2,2)=1, Р(/(а,а)) = Р(/(2,2)) = Р(1)=1, Q(a,f(a, *)) = 0(2,/(2, 2)) = £(2, 1) = О,
544 Часть ///. Приложения Q(f(a, a\ a) = g(/(2, 2), 2) = Q(l, 2) = 1, Q(f(a, a),/(a, a)) = g(/(2, 2),/(2, 2)) = Q(l. D = 0, Следовательно, //-интерпретация h, которая соответствует интерпретации z, имеет вид h = ЬР(а), Q(a, a\ Р(Да, a)), -.Q(a,Aa, a)\ Q(j{a, a), я), -н<2(Да, a), Дя, a), ...}. Если в множестве S отсутствуют константы, то элемент а эрбрановского универсума может иметь произвольный образ в области D. Если же D состоит больше чем из одного элемента, то существуют больше одной интерпретации, которые соответствуют интерпретации z. Определение 11.1.5. Пусть z - интерпретация на области D. //-интерпретацией h, соответствующей z, называется интерпретация, для которой выполняются такие условия. Пусть bu Ьг, ..., Ьп — элементы эрбрановского универсума Н, и каждый элемент bj отображается в некоторый элемент dx из области D. Тогда если P(du с1г, ..., dn) получает в интерпретации z значение 1 (0), то P(b\9 b2, ..., Ьп) также получает значение 1 (соответственно 0) при интерпретации h. Лемма 11.1.1. Если интерпретация z на некоторой области D удовлетворяет множеству дизъюнктов S, то произвольная Н-интерпретация h, соответствующая интерпретации z, таксисе удовлетворяет множеству S. Доказательство. Пусть интерпретация z удовлетворяет множеству дизъюнктов S на области D. Это означает, что произвольная формула из S принимает значение 1 на D при интерпретации z. Но тогда по построению интерпретации А, соответствующей z, каждая из формул множества S тоже принимает значение 1 при интерпретации А, то есть удовлетворяет множеству S. Теорема 11.1.1. Мноэюество дизъюнктов S противоречиво тогда и только тогда, когда S ложно при всех Н-интерпретациях множества S. Доказательство. В одну сторону теорема очевидна, поскольку по определению множество S ложно тогда и только тогда, когда S ложно при любой интерпретации на произвольной области. Чтобы доказать теорему в другую сторону, предположим, что S ложно при всех //-интерпретациях S. Предположим также, что S принимает значение 1 при некоторой интерпретации z на некоторой области D и А — Я-интерпретация 5, соответствующая z. Тогда по лемме 11.1.1 S принимает
Глава 11. Методы поиска доказательств теорем в логике предикатов 545 значение 1 при интерпретации А. А это противоречит тому, что S ложно при всех //-интерпретациях множества S. Теорема доказана. Доказанная теорема дает возможность рассматривать лишь интерпретации над эрбрановским универсумом (//-интерпретации) для проверки, является ли множество дизъюнктов S ложным. Следовательно, в дальнейшем, когда будет идти речь об интерпретации, будем иметь в виду Я-интерпретацию. 11.1.2. Семантические деревья Напомним, что если А — атом, то две литеры А и —А называются контрарными. Дизъюнкт является тавтологией, если он имеет контрарную пару. Определение 11.1.6. Пусть S— множество дизъюнктов и А — его эрбранов- ский базис. Семантическим деревом множества S называется дерево Г, ребрам которого поставлено в соответствие конечное множество атомов или отрицаний атомов из А так, что: □ из каждой вершины N дерева Г выходит только конечное число ребер L\, L2, ..., Ln\ пусть Qi— конъюнкция всех литер, которые поставлены в соответствие ребру L„ i = 1, 2, ..., п\ тогда Q\ v Qi v ... v Qn — общезначимая пропозициональная формула; □ пусть для каждой вершины N дерева Т h(N) представляет собой объединение всех множеств, которые поставлены в соответствие ребрам, составляющим путь из начальной вершины Т в вершину N. Тогда h(N) не имеет контрарных пар. Определение 11.1.7. Пусть А = {А\, Аг, ..., Ат ...}— эрбрановский базис множества S. Семантическое дерево Г для S называется полным тогда и только тогда, когда для каждого i (/'= 1,2, ...) и каждой вершины-листка /V дерева Th(H) включает или At, или -лА{. Пример 11.1.4 □ Пусть 5= {Р, <2, /?} — эрбрановский базис множества S. Тогда каждое из двух деревьев, изображенных на рис. 11.1.1, представляет собой полное семантическое дерево множества S. □ Рассмотрим S = {Р(х), Q(AX))) и ег0 эрбрановский базис А = {Р(а\ Q(f(a)\ P(№), Q(f(f(a))), ...Ь Семантическое дерево для S приведено на рис. 11.1.2.
546 Часть III. Приложения р/ у р/ у, VV °/V °AV 7 V "Л .5 .6 .7 .8 .5 .6 .7 .8 .9 .10 .1 7X7X7X7X 7Y7V7Y7V Рис. 11.1.1 P(a)y\^P{a) ОМ») Л-0,.2?*"/\-<WI»» ™э7С7\ЛЛ лл Рис. 11.1.2 < Заметим, что для каждой вершины /V в семантическом дереве для S h(N) является подмножеством соответствующей интерпретации для S. Следовательно, h(N) логично называть частичной интерпретацией S. Кроме того, если эрбрановский базис множества S бесконечен, то и семантическое дерево Т для S тоже будет бесконечным. Нетрудно заметить, что полное семантическое дерево соответствует полному пересчету всех возможных интерпретаций множества S. Если S противоречиво, то S не может быть истинным ни в одной из этих интерпретаций. Значит, мы можем остановить рост семантического дерева Тс вершины N, если h(N) опровергает S. Приведенные замечания дают возможность ввести такие определения. Определение 11.1.8. Вершина N семантического дерева Т для множества дизъюнктов S называется вершиной-опровержением, если h(N) опровергает некоторый основной пример дизъюнкта из 5, и для всякой вершины N', которая встречается на пути из начальной вершины в вершину N9 h(N') не является опровержением ни одного основного примера дизъюнкта из S. Определение 11.1.9. Семантическое дерево Г множества дизъюнктов S называется закрытым тогда и только тогда, когда концевой вершиной каждого пути из начальной вершины дерева Г является вершина-опровержение.
Глава 11. Методы поиска доказательств теорем в логике предикатов 547 Определение 11.1.10. Вершина N закрытого семантичного дерева Г называется вершиной-выводом, если каждый сын вершины N является вершиной- опровержением. 11.1.3. Теорема Эрбрана Теорема Эрбрана, которая формулируется и доказывается ниже, является одной из самых важных теорем математической логики, поскольку она дает алгоритмическую основу для проверки противоречивости множества дизъюнктов. Рассмотрим два варианта этой теоремы. Теорема Эрбрана (вариант 1). Множество дизъюнктов S противоречиво тогда и только тогда, когда всякому полному семантическому дереву множества S соответствует конечное закрытое семантическое дерево. Доказательство. Предположим, что S противоречиво и пусть Т— семантическое дерево для S. Пусть для каждого пути I из начальной вершины в дереве Т hi означает множество всех литер, которые поставлены в соответствие ребрам пути I. Тогда hi является интерпретацией множества S. Поскольку S противоречиво, то hi должно опровергать основной пример С" дизъюнкта С из S. Поскольку С" конечный, то на пути / должна существовать вершина- опровержение Ni и Гтоже должно быть конечным. Кроме того, поскольку каждый путь вида I в дереве Т имеет вершину-опровержение, то существует закрытое семантическое дерево Т для множества 5, и поскольку каждая вершина в Т имеет конечное число смежных с ней вершин, то по лемме Кьонига Т — конечное дерево. Наоборот, если для всякого полного семантического дерева Т множества S существует конечное закрытое семантическое дерево, то всякий путь в Т имеет вершину-опровержение. А это значит, что всякая интерпретация опровергает множество S. Следовательно, S— противоречивое множество дизъюнктов. Теорема доказана. Теорема Эрбрана (вариант 2). Множество дизъюнктов S противоречиво тогда и только тогда, когда существует конечное противоречивое множество S/ основных примеров дизъюнктов S. Доказательство. Предположим, что S— противоречивое множество и Г — полное семантическое дерево для S. Тогда по теореме Эрбрана (вариант 1) существует конечное закрытое семантическое дерево 7", соответствующее Т. Пусть S' — множество всех основных примеров дизъюнктов, которые опровергаются во всех вершинах-опровержениях дерева Т. Множество S' конечно,
548 Часть III. Приложения поскольку в Т конечное число вершин-опровержений. Поскольку S" ложно при любой интерпретации, то S' противоречиво. Пусть теперь существует конечное противоречивое множество S' основных примеров дизъюнктов из S. Поскольку всякая интерпретация h для S включает интерпретацию h' множества S' и Ы опровергает S', то h тоже должна опровергать S'. Поскольку S' опровергается в каждой интерпретации h', то и S' опровергается в каждой интерпретации h множества S. Следовательно, S опровергается в каждой интерпретации множества S\ и, значит, S— противоречиво. Теорема доказана. На варианте 2 теоремы Эрбрана основана процедура опровержения (метод Эр- брана). Это означает, что когда необходимо доказать противоречивость множества дизъюнктов 5 и мы имеем алгоритм, который порождает множества S\\ S2\ ..., Sn\ ... основных примеров дизъюнктов из 5 и проверяет их противоречивость, то этот алгоритм, как гарантирует теорема Эрбрана, даст нам такой индекс /V, что SN противоречиво. Следует отметить, что описанный метод малоэффективен. Более эффективным для применения является метод резолюций. 11.2. Метод резолюций 11.2.1. Контрарные пары и подстановки Из рассмотренного выше для логики высказываний следует, что существенным для метода резолюций является поиск контрарных пар литер для заданного множества дизъюнктов. В логике предикатов этот поиск усложняется, поскольку появляются переменные. Поясним это на примере. Пусть C{=P(y)v R(y), C2 = -,P(f(x))vQ(x). Не существует ни одной литеры в G, контрарной какой-либо литере в Съ Но если подставить терм f(a) вместо у в дизъюнкте С\ и a — вместо х в дизъюнкте Сг, то получим Ci=P(f(a))vR(fLa)), C2 = ^P(f(a))vQ(a). В этих дизъюнктах литеры P(f(a)) и —iP(f(a)) уже контрарны. Следовательно, из С\ и С{ можно получить резольвенту C3' = G(fl)v/?(/(<*)).
Глава 11. Методы поиска доказательств теорем в логике предикатов 549 В общем случае, подставив выражение/(*) вместо у в G, получим С,* = />(/(*)) v/?(/(*)). Дизъюнкт С\ дает возможность получить резольвенту Подставив некоторые термы вместо х в этом дизъюнкте, можно получить новые дизъюнкты. Дизъюнкт Съ— самый общий, поскольку все остальные дизъюнкты, которые можно породить с помощью правила резолюций из С\ и Сг,— это конкретизация дизъюнкта Съ (такие конкретизации называются примерами дизъюнкта Съ)- Следовательно, для получения резольвент из дизъюнктов необходимо выполнять подстановки соответствующих термов вместо переменных. Пусть X — алфавит переменных и Г(£2, X) — алгебра термов над X. Подстановкой называется отображение а, имеющее вид g:X^>T(Q,X). Подстановка а называется конечной, если с(х) * х лишь для конечного числа элементов х из X. Подстановка, не имеющая элементов, называется тождественной и обозначается е. Пример 11.2.1 Множество пар {(*,/(z)), (z, у)} и {(*, а), (у, g(y)\ (z, ЯёФШ являются подстановками, где aU)=/(z), a(z) = y; с(х) = a, a(y) = g(y\ a(z) =Ag(b)). < Подстановку a часто обозначают {x/tuy/12, ...,z/tn,...} или {*—> tuy^>t2, ..., z->/„, ...}. Пусть s = {x\ 11\, X21 h, ..., xn I tn] — конечная подстановка и t e 7(Q, X). Тогда терм t\ полученный из терма t одновременной заменой всех вхождений переменной *,- в терме t термами t{ (1 < i < п), обозначается a(t) и называется примером терма t. Пример 11.2.2 Пусть a = {х I а, у /Дс), z / b) и t = (o(jc, у, z). Тогда t' = a(t) = (o(a, Дс), b) — пример терма t. * Пусть a = {xi 11\9 x21 r2, ..., xn I tn), x> = {y\ 11\\ y21t2\ ..., xm I tm'} — две подстановки.
550 Часть III. Приложения Произведением подстановок с и D называется подстановка, полученная из множества {*! / D(fi), ...,*„/ 1)(Г„), У\ I fi', ..., ут I С} изъятием всех элементов, имеющих вид x-s I !)(*,), для которых v(tj) = xj9 и всех элементов, имеющих вид у,- / г/ и таких, что у,- Е {xi , х2, ..., хп}. Пример 11.2.3 Пусть а= {х\ / и9 х2 /12) = {*//(y),y/z}, г) = {yi /г/,у2/*2',уз/ь'} = {х/а9у/Ь,г/у]. Тогда {* /УСУ). y/z,x/a9y/b,z/y). Но поскольку u(f2) = у (то есть у / у), то эта пара извлекается из полученного множества. Далее, подстановки х I а и у / Ъ также извлекаются из этого множества, поскольку х и у принадлежат множеству переменных {jci, х2} первой подстановки. Таким образом, окончательно имеем сто ={*//(*>), z/у}. < Следует отметить, что операция произведения подстановок ассоциативна, а тождественная подстановка е играет роль единицы для этой операции. Определение 11.2.1. Подстановка s называется унификатором для множества термов {t\, t2, ..., tk] тогда и только тогда, когда c(t\) = a(t2) = ... = c(tk). Говорят, что множество термов {t\9 h, ..., '*} унифицируется, если для него существует унификатор. Унификатор с множества термов {гь г2, •••, h} называется наиболее общим унификатором (НОУ) тогда и только тогда, когда для всякого унификатора 1) этого множества существует такая подстановка X, что 1) = Ха. 11.2.2. Алгоритм унификации Рассмотрим теперь проблему унификации более детально. Расширим сначала понятие унификатора таким образом: пусть t = (t\, t2, ..., f„), f = (t\\ t2\ ...,/„') — векторы термов. Тогда их унификатором назовем подстановку а, такую, что a('i) = a('i'), a(t2) = a(t2\ o(tn) = a(tn').
Глава 11. Методы поиска доказательств теорем в логике предикатов 551 Пусть Unify(fb f2) означает функцию унификации термов t\ и f2, то есть функцию построения НОУ этих термов (или векторов из термов). Введем также символ Л для нигде не определенной подстановки. Будем считать, что для любой подстановки а имеют место равенства а*Л = Л*а = Лиа*е = е*а = а. Теперь правило построения НОУ можно задать таким индуктивным определением: □ Unify (fi, t2) = Unify (r2, *i); Г Л, когда ттер зависит от переменной z и t * z, | е, когда t = z, (z/t)} в других случаях; [Л, когда/: * я, [g * Unify ((а(;2),..., c(tn)), (а(г2'),..., а(г„'))), □ Unify (r, z) = □ Unify №,..., О, (г/,..., г/)) = где а = Unify (tu h')\ □ Unify (w(fi, ..., О, co'(fi', ..., tn)) = |Л, когда со * со', Unify ((rl5... ,fn),(V,... ,tn') — в других случаях. Пользуясь данным определением, нетрудно показать, что подстановка, которая строится по таким правилам, будет НОУ термов t\ и г2. Другими словами, имеет место такая теорема. Теорема 11.2.1. Unify (tJt t?) представляет собой НОУ термов tj и tie абсолютно свободной алгебре. Доказательство предлагается в качестве упражнения. Пример 11.2.4 Найти НОУ таких термов: □ a) (((jc + у) * (и I v)) - 1) + 2 и ((z I w) - 1) + г; □ 6)(((jc + y)*z)-l) + 2H((z/w)-l) + 3. Имеем: □ a) Unify(+(-(*(+C*, У), /(и, v)), 1), 2; +(-(*(*, w), 1), г)) = = Unify(-(*(+C*, у), /(и, v)), 1); -(Hz, w), 1), г)) * Unify (2; г) = = Unify(*(+(*, у); /(w, v)); *(z, w)) * Unify (1,1)* Unify (2; г) = 19 3ак. 3427
552 Часть III. Приложения = Unify(+(jc, у); z) * Unify (/(м, v); w) * Unify (2; r) = = {z/(JC + y),w/(ii/v)fr/2}; □ 6) Unify(+(-(*(+(*, y), /(", v)), 1), 2; +(-(*(*, w), 1), 3)) = = Unify(-(*(+(*, y), /(", v)), 1); -<*fc w), 1)) * Unify (2, 3) = = UnifyH*(+(*. y). /(", v)), 1); -<*fc w), 1)) * Л = Л. < Алгоритм Робинсона. На данном определении НЗУ базируется алгоритм унификации, предложенный А. Робинсоном [75]. Для работы этого алгоритма исходные термы изображаются размеченными деревьями, и потому этот алгоритм иногда называют Robinson's tree algorithm (RT). Вход: ti, t2 e T{Q, X) — пара термов. Выход: (bool, G), где bool = 1 тогда и только тогда, когда ti и Сг унифицируются и С = HOy(ti, Ы . Начало. Если (один из термов х является переменной, а другой t — термом) то Если х = t то (bool = 1; а = е) иначе Если t зависит от х то bool = 0 иначе (bool = 1; с = {х / t}) КЕ; КЕ; Иначе (пусть t = (D(xi, ..., Хд), t' = (D'(yi/ .../ Ут)) Если (0*0)' то bool = 0 иначе (к = 0; bool = 1; С = 6; Пока ({к < т) & bool) выполнять к = к + 1; (bool, Ci) = Unify(o(x*), c(yjt)); Если bool то О = Oi * С; КЕ; КЦ; КЕ; КЕ; Конец.
Глава 11. Методы поиска доказательств теорем в логике предикатов 553 Модифицированный алгоритм Робинсона. Алгоритм Робинсона, как нетрудно заметить, имеет экспоненциальную оценку временной сложности. Одна из причин медленной работы данного алгоритма— задание термов деревьями, при котором часто приходится вычислять значения подтермов при построении НОУ. Этого можно избежать, если достраивать унифицируемые подтермы по мере того, как удается выразить значения одних переменных через другие. В этом случае для подстановки а переход от терма 0)(fi, ..., tn) к значениям afe), ..., G(tn) его подтермов t2, ..., t„ выполняется в виде обычного перехода от дерева к его поддеревьям. Заметим, что при такой договоренности про динамическое достраивание термов, в момент завершения работы Unify(/b ti) значения термов c(t\) и a(f2) будут равны, где a = Unifу(tut2). Другая, более тонкая возможность ускорения работы алгоритма унификации следует непосредственно из определения НОУ: UnifyO, t) = е. Указанное свойство имеет такой вид: t\ =*2->Unify0i,f2) = e. Используя рекурсивный вызов Unify в теле алгоритма RT можно заменить его условным рекурсивным вызовом: если tl Ф t2, то Unify(tl, t2). Непосредственное сравнение термов является достаточно трудоемким процессом, который усложняется еще и тем, что в результате выполнения подстановок размеры термов могут значительно возрастать. Таким образом, существенного уменьшения временной сложности алгоритма можно достичь при таких структурах данных, когда равные подтермы задаются одним и тем же объектом. Такое свойство имеют размеченные ациклические графы с приведенными общими подтермами. Заметим, что когда a = Unify(fi, ti) и a*e, то термы a(t\) и a(f2) можно склеить. Следовательно, после каждого выхода из процедуры Unify, кроме тех, которые вырабатывают значения Л, необходимо выполнять склеивание подграфов ациклического графа. Для этого введем в рассмотрение процедуру Склеить (G, vi, v2), которая выполняет замену всех дуг в графе G, которые ведут в вершину vj, дугами, которые ведут в вершину v2. Введем также обозначения term(v) для терма, который является результатом расклеивания ациклического графа с вершиной v, и succ(v, k) — для £-го сына вершины v. В результате модификации алгоритм унификации RT приобретает такой вид:
554 Часть III. Приложения Вход: vi, V2 — пара разных вершин размеченного ациклического графа. Выход: (bool, а), где bool = 1 тогда и только тогда, когда ti и t2 унифицируются и G = НЗУ (ti, t2) . Начало. Если (один из термов и является переменной, а другой v — термом) то Если (и достижима v) то bool = О иначе (а = {term(u) / tem(v)}; bool = 1; Склеить (G, u, v)) KE; Иначе Если otm(vi) ф otm(V2) to bool = 0 иначе /* пусть m - число сыновей вершин vi и V2 */ (к = 0; bool = 1; СТ = £; пока ({к < ш) 6с bool) выполнять к = к + 1; t = succ(u, к); t' = succ(v, к) ; Если t Ф t' то ((bool, ai) = Unify(t, t') ; Если bool то a = Oi * a; KE; КЦ; KE; KE; Конец. Из текста алгоритма RG видно, что при всяком выходе из процедуры Unify, когда она не оканчивается результатом Л (bool = 0), выполняется склеивание, и одна из вершин ациклического графа изолируется. Следовательно, общее число обращений к этой процедуре не превышает N— числа вершин в графах, которые представляют исходные термы t\ и h. В то же время число действий, которые выполняются в середине процедуры без учета действий, выполняемых при рекурсивных обращениях к ней, тоже пропорционально числу N, то есть столько времени требуется для проверки, является ли вершина и достижимой из вершины v. Таким образом, верхняя оценка алгоритма RG пропорциональна числу N2 [20].
Глава 11. Методы поиска доказательств теорем в логике предикатов 555 11.2.3. Метод резолюций для логики предикатов первого порядка Решив проблему унификации, можно рассматривать метод резолюций и для логики предикатов первого порядка (ЛППП). Если две или больше литер с одинаковыми символами предиката в дизъюнкте С имеют НОУ а, то а (С) называется склеиванием С. Когда с(С) — единичный дизъюнкт, то склеивание а(С) называется единичным склеиванием. Пример 11.2.5 Пусть С = Р(х) v P(g(y)) v —>/?(*). Тогда первая и вторая литеры имеют одинаковые символы предиката и НОУ а = {х I giy)}. Значит, а(С) = P(g(y)) v P(g(y)) v -,R(g(y)) = P(g(y)) v -,R(g(y)) представляет собой склеивание С. ^ Определение 11.2.2. Пусть С\\\ Сг— два дизъюнкта (дизъюнкты-посылки), которые не имеют общих переменных, a L\ и L2 — две литеры в С\ и Сг соответственно. Если L\ и —\Ьг имеют НОУ а, то дизъюнкт (a(Ci)\a(L,))u(a(C2)\a(L2)) называется бинарной резольвентой С\ и С2. Литеры L\ и L2 называются такими, что отрезаются. Пример 11.2.6 Пусть С\ = Р(х) v R(x) и Сг = -*Р{а) v Q(x). Поскольку переменная х входит как в G, так и в Сг, то заменим х в Сг на у. Тогда Сг = -нДя) v Q(y). Выбираем литеры L\ = Р(х) и L2 = —iP(a). Поскольку -лЪг = Р(а), а L\ и L2 имеют НОУ а= {х/ а}, то (а(С1) \ ad,)) u (G(C2) \ c(L2)) = ({Да), R(a)} \ {Р(а)}) и и (ЬДя), <20>)} \ ЬДя)}) = {R(a)} и Ш0>)} = Д(а) v Q(y). Следовательно, R(a) v Q(y) — бинарная резольвента С\ и Сг, а F(jc) и —*Р(а) — литеры, которые отрезаются. ^ Определение 11.2.3. Резольвентой дизъюнктов-посылок С\ и Сг называется одна из таких резольвент: □ бинарная резольвента С\ и Сг, □ бинарная резольвента С\ и склеивание Сг\ П бинарная резольвента Сг и склеивание G; □ бинарная резольвента склеивание С\ и склеивание С2.
556 Часть III. Приложения Пример 11.2.7 Пусть С, = Q(x) v Q(g(y)) v Я(#у)) и С2 = -iQ(*(fa))) v Q(fc). Склеиванием С, является С/ = Q(sOO) v Q(g(y)) v /?(#y)) = Q(g(y)) v /?(/(y)). Бинарной резольвентой C\ и С2 является /?(ЯДя))) v <2(&). Значит, /?(ДДя))) v £)(&) представляет собой резольвенту С\ и С2. ^ Правило резолюций для ЛППП является правилом вывода. Оно эффективнее таких процедур, как метод редукции, метод Девиса-Патнема и др. [75]. Кроме того, как уже указывалось выше, метод резолюций является полным. Прежде чем привести доказательство полноты метода резолюций, рассмотрим применение этого метода для доказательства одной теоремы из элементарной геометрии. Пример 11.2.8 Доказать, что внутренние несмежные углы, которые образуются при пересечении диагоналей трапеции с ее основами, равны. Для доказательства этой теоремы необходимо сначала ее аксиоматизировать. Пусть Т(х, у, и, v) означает, что xyuv — трапеция, верхняя левая вершина которой х, верхняя правая — у, нижняя правая — ми нижняя левая — v. Пусть Р(х, у, и, v) означает, что отрезок ху параллельный отрезку mv, и Е(х, у, z, и, v, w) означает, что угол xyz равен углу uvw. Тогда имеют место такие аксиомы: А\\ VjcVyVwVv (Г(;с, у, и, v) —> Р{х, у, и, v)) — определение трапеции; А2: VjcVyVmVv(P(jc, у, и, v) —> Е(х, у, v, и, v, w) — внутренние несмежные углы при пересечении параллельных прямых равны; A3: T(a, b, с, d) — трапеция (показана на рис. 11.2.1). a J -тч Ъ d I/* \ с Рис. 11.2.1 Из аксиом Аи А2, Аъ мы должны вывести, что утверждения Е(а, Ъ, d, с, d, Ъ)\ справедливо, то есть что Ах &А2 &А3 -> Е(а, b, d, с, d, b). Для того чтобы воспользоваться методом резолюций, то есть доказать эту формулу путем опровержения, мы отрицаем цель, то есть формулу Е(а, Ъ, d, с, rf, Ь), и доказываем, что формула^ &А2 &^з & -*Е(а, Ъ, d, с, d, b) ложна.
Глава 11. Методы поиска доказательств теорем в логике предикатов 557 Преобразуем данную формулу к стандартному виду: 5 = {-пГ(*, у, и, v) v Р(х, у, и, v), -nP(x, у, и, v) v Е(х, у, v, и, v, w), Г(а, Ь, с, rf), -п£(а, Ь, rf, с, rf, 6)}. Эта стандартная форма является множеством, состоящим из четырех дизъюнктов. Теперь методом резолюций выполним доказательство. 1. -лТ(х, у, и, v) v P(jc, у, и, v) — дизъюнкт 1 в 5. 2. -iP(jc, у, и, v) v Е(х, у, v, и, v, w) — дизъюнкт 2 в 5. 3. Г(а, b,c,d) — дизъюнкт 3 в 5. 4. -п£(я, Ь, d, с, d, &)} — дизъюнкт 4 в 5. 5. -iP(a, b,c,d) — резольвента 2 и 4. 6. —\T(a, b,c,d) — резольвента 1 и 5. 7.0 — резольвента 3 и 6. Поскольку последний выведенный из 5 дизъюнкт пустой, то делаем вывод, что 5— противоречивое множество. Следовательно, теорема справедлива. Шаги вывода легко представить деревом (рис. 11.2.2). 4 2 5 1 6 3 7 Рис. 11.2.2 Это дерево называется деревом вывода и представляет собой дерево, которое "растет вверх". Каждой начальной вершине данного дерева приписывается дизъюнкт из множества 5, а каждой следующей вершине— резольвента дизъюнктов, которые были приписаны ее предкам. Дерево вывода называется деревом вывода дизъюнкта /?, если R приписан корню дерева вывода. В дальнейшем "дерево вывода" и "вывод" будут использоваться как синонимы. ^ Из сказанного выше следует, что наша цель состоит в доказательстве такого утверждения.
558 Часть III. Приложения Теорема 11.2.2 (полнота метода резолюций). Множество дизъюнктов S противоречиво тогда и только тогда, когда существует вывод из множества S пустого дизъюнкта 0. Прежде чем доказать эту теорему, докажем такое вспомогательное утверждение. Лемма 11.2.1. Если С/ и С2'— примеры Cj и С2 соответственно, и если С—резольвента С/ и С2', то существует такая резольвента С из С/ и С2, что С является примером С. Доказательство. Перенумеруем, если есть необходимость, переменные в G и С2 так, чтобы С\ и С2 не имели общих переменных. Пусть L\ и L{ — литеры, которые отрезаются, и пусть С = (C,'v \ U'v) и (C2'v\ L/v), где v— НЗУ для L\ и -.L2'. Поскольку С/ и Сг — примеры С\ и С2 соответственно, то существует такая подстановка и, что С/ = С\\) и С{ = С2\). Пусть L|, ..., L\ — литеры в С,-, которые соответствуют L{ (то есть, iji) = ... = L/i) = L;'), i= 1,2. Если j> 1, то получаем НОУ X, для {/{, ..., L/ }, и пусть L,= l|A„ i=l, 2. (Отметим, что L|?i„ ..., L/A, будут теми же, поскольку А,,- НОУ). Тогда L/— литера в склеивании СД, для С,-. Если j = 1, то пусть А, = е и L, = z{ А,. Пусть X = Х\ и А2. Таким образом, ясно, что L{ является примером L/. Поскольку L/ и -.Z^' унифицируются, то и Lu и -.Z^ тоже унифицируются. Пусть а — НЗУ для L\ и -iZ^. Пусть С = ((CiX)a \ L{o) u ((С2Х)а \ L2a) = = ((СД)а\(^,..., L/1}^)cru((C2X)a\({4,..- 42}^)° = = (Ci(Xa) \ {l\,..., Цх }(Ал)) и (С2(Хо) \ { 4. ■ • •> 4* К^»> С— резольвента С\ и С2. Очевидно, что С является примером С, поскольку С = (C,'v\ L/v) u (C2'v\ L/v) = = ((C,a»v \({ z},..., if }i»vu ((C2d)v\({ 4,..., 42 }d)v = = (C,(DV)\ { l\9 ..., L/'1 }(DV)U (C2(DV)\ { Z3,, ..., 42 }(DV) и Xa — более общий унификатор, чем и v. Лемма доказана.
Глава 11. Методы поиска доказательств теорем в логике предикатов 559 Доказательство теоремы. Пусть множество 5 выполнимо, и А = {А ь Д2, . • •} — множество атомов из 5. Пусть Т— замкнутое семантическое дерево, изображенное на рис. 11.1.1. По теореме Эрбрана (вариант 1) Т имеет конечное замкнутое семантическое дерево Т. Если Т состоит лишь из одной (корневой) вершины, то 0 должен принадлежать 5, поскольку никакой другой дизъюнкт не может опровергаться в корне семантического дерева. Ясно, что в этом случае теорема справедлива. Предположим, что Т состоит больше чем из одной вершины. Тогда Т имеет хотя бы одну вершину-вывод, потому что если бы его не было, то каждая вершина имела хотя бы одного потомка — вершину-опровержение. И тогда можно было бы найти бесконечную цепь, выходящую из 7", а это противоречит конечности Т. Пусть N— вершина- вывод в 7", a N\ и N2— вершины-опровержения, которые находятся непосредственно ниже вершины N. Пусть /(ЛО = {mum2, ..., m„}, /(Л0= {mum2, ...,m„, m„ + i}, /(Л0= {mum2, ...,m„,-»/n„ + 1}. Поскольку N\ и N2— вершины-опровержения, а вершина N— нет, то должны существовать два таких основных примера С/ и С{ дизъюнктов С\ и С2, что С\ и С{ ложны в I(N\) и I(N2) соответственно, но С\ и С{ не опровергаются в ДЛО. Значит, С\ должен включать -im„ +1 и С" должен включать mn + \. Пусть L\ = —\mn +1 и L{ = mn + \. Отрезая литеры L/ и L2\ мы можем получить резольвенту С" для С\иС2,а именно, C' = (C,'\L/)u(C2'\L2'). С должен быть ложным в /(/V), поскольку (С/ \ L\) и (С{ \ hi) ложны в /(ЛО. По лемме 11.2.1 существует такая резольвента С из С\ и С2, что С" — основной пример С. Пусть Т"— замкнутое семантическое дерево для (5 и {С}), полученное из Т путем извлечения вершины или ребра, которое находится ниже первой вершины, и где опровергается резольвента С. Очевидно, что число вершин в 7" меньше числа вершин в Т. Применяя приведенный выше процесс к Т\ можно получить другую резольвенту дизъюнктов из (5 и {С}). Подставляя данную резольвенту в (S и {С}), можно получить другое замкнутое семантическое дерево с меньшим числом вершин. Этот процесс повторяется до тех пор, пока не будет порождено замкнутое семантическое дерево, состоящее из одной корневой вершины. А это возможно лишь тогда, когда выведен пустой дизъюнкт 0. Следовательно, существует вывод 0 из S. Наоборот, пусть теперь существует вывод 0 из 5, и пусть /?ь /?2, ..., /?* — резольвенты в этом выводе. Предположим, что S выполняется на модели М.
560 Часть III. Приложения Но если модель удовлетворяет дизъюнктам С\ и С2, то она также должна удовлетворять и любой их резольвенте (см. теорему 3.3.2). Следовательно, М удовлетворяет дизъюнктам /?ь /?2, • ••, Я*. Но это невозможно, поскольку одна из резольвент есть 0. Таким образом, 5 не может выполняться, что и следовало доказать. 11.2.4. Примеры применения метода резолюций Метод резолюций легко применяется для решения разного рода задач, которые просто формулируются словесно. 1. Некоторые пациенты любят своих врачей. Ни один пациент не любит знахарей. Значит, ни один врач не может быть знахарем. Выясним, имеет ли место цель, если факты правильные. Обозначим: Р(х) — формула, означающая что х — пациент; D(x) — формула, означающая что х — врач; Q(x) — формула, означающая что х — знахарь; L(x, у) — формула, означающая что х любит у. Тогда факты и цель можно записать такими формулами: F: (Зх)(Р(х) & (Vy)(D(y) -» Ш, УШ G: (ЧхЖх) -> Wy)(Q(y) -> -.Ц*. у))); Н: (Vjc)(D(jc) -> -,(200). Решение. Приведем формулы F, G, Н к стандартной сколемовской форме: F: (Зх)(Р(х) & (Vy)(-.DO0 v Цх, у))) = (Вх)(Уу)(Р(х) & (-Щу) v Цх, у))). Удалив квантор существования из этой формулы, получим такую формулу: F:(Vy)(P(a)&(^D(y)vL(a,y))). Формула G уже находится в сколемовской нормальной форме. G: (Vjc)(-,P(jc) v (V)0H2(y) v -пЦ*, у))) =(Vx)(Vy)(-,P(x) v (-1000 v -пЦ*. у))). Строим отрицание -уН формулы Н\ -i(V;c)(-nD(jc) v -,е(*)) = (3*)(-i(-.D(jc) v -,Q(*))) = (3x)(D(*) & 200). Выполняя сколемизацию -п#, получаем -пЯ= D(a) & Q(a). Таким образом, имеем такие дизъюнкты: 1. Р(а), — посылка. 2. -1 D(y) v L(a, у) — посылка. 3. -л Р(х) v -I Q(y) v -.L(jc, у) — посылка.
Глава 11. Методы поиска доказательств теорем в логике предикатов 561 4. D(a),— посылка. 5. Q(a) — посылка. 6. -iQOO v -1 Ця, у) — ПР из 1 и 3. 7. -,D(y) v -I Q(y) — ПР из 2 и 6. 8. -iQ(*) — ПРиз4и7. 9. О —ПРиз 5 и 8. Следовательно, ни один врач не является знахарем. 2. Всякий, кто хранит деньги в банке, получает проценты. Если нет процентов, то никто не хранит деньги в банке. Пусть S(x, у) — формула, означающая что х хранит деньги у9 М(х) — формула, означающая что х — это деньги, 1(х) — формула, означающая что х — это проценты, Е(х, у) — формула, означающая что х получает д>. Тогда посылка запишется в виде VU) ((3y)(S(x, у) & М(у)) -> (Зу)(1(у) & Е(х9 уШ а цель так: -пОх) /(*) -> (V*)(V>0(S(*, у) -> ^М(у)). Решение. Преобразуя данные формулы к нормальной форме и отрицая цель, получаем такие дизъюнкты: 1. -i5(jc, у) v -nM(y) v /(Дл:)) — посылка. 2. -i5(jc, у) v -nM(y) v E(x, fix)) — посылка. 3. -i/(z) — отрицание цели. 4. 5(а, Ъ) — отрицание цели. 5. М(Ь) — отрицание цели. 6. -i5(jc, у) v -1 М(у) — ПР из 3 и 1. 7. -пЛ/(Ь) — ПРиз 4 и 6. 8. О —ПРиз 5 и 7. Следовательно, цель доказана. 3. Дано множество формул: A:(Vx)(C(x)-*(W(x)&R(xm
562 Часть III. Приложения В: (Эх)№) & GW); С: (3x)(Q(jc) & /?(*)). Показать, что формула С — логическое следствие формул А и В. Решение. Построим для формул А, В и ЧС стандартную сколемовскую форму: A: (Vjc) (-iCOc) v (W(x) & /?(*))) = (Vjc) (+C(jc) v W(x)) & (-пф) v tf(jt))); fi: (3jc)(C(jc) & 2W) = C(a) & Q{a)\ -пС: -чэдхеоо & /?w) = (v^)(-i(gw & i?w» = (Vx)bew v -ад). Таким образом, имеем такие дизъюнкты: 1. -иССх) v W(jc). 2. -hC(jc) v R(x). 3. ОД. 4. Q(a). 5. -ifi(jf)v-,i?W). 6. Отсюда находим: 7. /?(а) — ПРизЗи2. 8. -./?(д) — ПР из 5 и 4; 9. О —ПРиз 7 и 6. Следовательно, формула С является логическим следствием формул А и В, 11.2.5. Правило поглощения Как мы указывали, при применении правила резолюций для проверки того, что данное множество дизъюнктов непротиворечиво, порождается много дизъюнктов, которые никакой роли в доказательстве не играют. Такие дизъюнкты называются лишними. Для борьбы с лишними дизъюнктами существует много стратегий применения правила резолюций. Рассмотрим одну из них — стратегию вычеркивания или поглощения. Определение 11.2.4. Дизъюнкт С называется поддизъюнктом D (или поглощает D) тогда и только тогда, когда существует такая подстановка а, что Со = D. При этом D называют наддизьюнктом С. Пример 11.2.9 Пусть С = Р{х) и D = Р{а) v Q(a). Если о = {a I jc}, to Со = Р(а). Поскольку Со = D, то С — поддизъюнкт D. *
Глава 11. Методы поиска доказательств теорем в логике предикатов 563 Стратегия вычеркивания состоит в том, что вычеркиваются любые тавтологии и наддизъюнкты, где это только возможно. Эта стратегия является обобщением метода Патнема-Девиса, который рассматривался в разделе 3.3.4. Полнота стратегии вычеркивания зависит от того, как вычеркивать тавтологии и наддизъюнкты. Стратегия вычеркивания будет полной, если их вычеркивать следующим образом. Сначала дизъюнкты {5°, S\ ..., S""1} выписываются по порядку; потом вычисляются резольвенты путем сравнения каждого дизъюнкта Сг£ Sn~ , который записывается после С\. Когда резольвента найдена, она записывается в конец списка при условии, что она не является тавтологией или не поглощается каким-нибудь наддизъюнктом из этого списка. В противном случае она вычеркивается. Доказательство полноты этой стратегии вычеркивания предлагается читателю в качестве простого упражнения. Пример 11.2.10 Предположим, нам необходимо доказать методом резолюций, что множество S = S°={Pvg, —iPvQ, Pv-iQ, -iPv-iQ} противоречиво. Выполним это двумя путями: без применения стратегии вычеркивания и с применением этой стратегии. Имеем: □ Без применения стратегии вычеркивания: 1. tf.PvQ. 2. -hPvQ. 3. Pv-,Q. 4. -.Pv-ig. 5. Sl:Q — из1и2. 6. P — из 1 иЗ. 7. <2v-i<2 — из 1 и 4. 8. Pv-iP—из 1 и 4. 9. Qv-^Q — из2иЗ. 10. Pv-nP—из2иЗ. И. -пР — из 2 и 4. 12. -10 — изЗ и 4. 13. S2:PvQ — из1 и 7. 14. PvQ — из 1 и 8. 15. Pv<2 —из 1 и 9.
564 Часть III. Приложения 16. PvQ — m 1 и 10. 17. Q — из 1 и 11. 18. Р — из1 и 12. 19. Q — из 2 и 6. 20. -nPvg — из 2 и 7. 21. -iPv б — из 2 и 8. 22. -iPv£> — из 2 и 9. 23. ->PvQ — из 2 и 10. 24. -.Р — из 2 и 12. 25. Р —изЗи5. 26. Pv-,£ —изЗи7. 27. Pv-,£> — изЗи8. 28. Р v -,(2 — из 3 и 9. 29. Pv-ig —изЗ и 10. 30. -yQ— из 3 и 11. 31. -iP — из 4 и 5. 32. -,Q — из 4 и 6. 33. -iPv-.Q — из 4 и 7. 34. -.Pv-iQ — из 4 и 8. 35. -iPv-iQ — из 4 и 9. 36. -,Pv-,Q — из 4 и 10. 37. Q — из 5 и 7. 38. Q —из 5 и 9. 39. О —из 5 и 12. □ С применением стратегии вычеркивания: 1. 5°: Pv£). 2. ^PvQ. 3. Pv^Q. 4. -iPv^Q. 5. S':Q — из1и2. 6. P—из 1 иЗ.
Глава 11. Методы поиска доказательств теорем в логике предикатов 565 7. -iP — из 2 и 4. 8. -i(2 —изЗи4. 9. О —из 5 и 8. Как видим, второй путь доказательства противоречивости данного множества дизъюнктов намного экономичнее. * Для того чтобы использовать стратегию вычеркивания, необходимо уметь отвечать на вопрос, является ли дизъюнкт тавтологией или поддизъюнктом некоторого другого дизъюнкта. Проверка того, что дизъюнкт — тавтология, сводится, очевидно, к проверке существования в нем контрарных пар. Проверка же того, что данный дизъюнкт является поддизъюнктом, не совсем проста. Пусть С и D — дизъюнкты и а = {х\ / аь ..., xn I an}9 где хи ..., х„ — переменные, которые встречаются в Д и au ..., an— новые разные константы, которые не встречаются ни в С, ни в D. Положим D = L\ v Li v ... v Lm, тогда Do = L\Gv LiG v ... v Lmo. Заметим, что Do — основной дизъюнкт. -iDa = -iLiCT & —iLiG & ... & -iLmo. Приведенный ниже алгоритм проверяет, является ли дизъюнкт С поддизъюнктом дизъюнкта D. При этом дизъюнкт D представляется в виде -iDa = -iLia & -iL2<r & ... & -iLma. Вход: дизъюнкты Си —iDcr = —iLiG & -d^a & ... & -djnP; Выход: ответ: С — поддизъюнкт D или С не является поддизъюнктом D; начало 1. w = {-nbicr -ilrfr}. 2. Положить fc = 0 и £7° = {С}. 3. Если С7* включает 0 то (С — поддизъюнкт JD/ стоп) иначе полагаем £7* + * = {резольвента Ci и Сг | Ci 6 U* и С2 е W}. 4. Если if + 1 — пустое множество, то (С не является поддизъюнктом D; стоп) иначе полагаем k = k + 1 и переходим к шагу 3. Конец Заметим, что в этом алгоритме каждый дизъюнкт в U имеет на одну литеру меньше, чем дизъюнкт в Uk9 из которого он был получен. Значит, в последовательности U°9 U\ ... должно в конце концов появиться или пустое множество, или множество, содержащее 0.
566 Часть III. Приложения Теорема 11.2.3. Алгоритм поглощения корректный, то есть С является поддизъюнктом D тогда и только тогда, когда этот алгоритм заканчивает роботу на шаге 3. Доказательство. Если С — поддизъюнкт Д то существует такая подстановка а, что Со с D. Значит, С(а * г)) с Dv. Таким образом, литеры С(а * г)) могут быть отрезаны путем использования единичных основных дизъюнктов в W. Но С(с * г)) является примером С. Следовательно, литеры в С могут быть отрезаны тоже путем использования единичных дизъюнктов в W. А это значит, что мы наконец найдем £/, которое включает 0. Таким образом, алгоритм закончит свою роботу на шаге 3. Наоборот, если алгоритм завершается на шаге 3, то получаем опровержение Во, Яь Ви /?2, ..., Br_i, /?г, где Во, ..., Вг— единичные дизъюнкты из W, R\ — резольвента С и В0, /?, — резольвента /?,_i и В,_ i для i = 2, ..., г. Пусть Go— НЗУ, полученный вследствие применение правила резолюции к С и В0, а а,— НОУ для /?, и В,, i = 1, ..., г. Тогда С(с0 * Oi * ... * ог) = = {-iB0, -.Bi, ..., -.Вг} с Dd. Пусть X = а0 * cii * ... * ar. Тогда Ck с Dax Пусть a— подстановка, полученная из А, заменой в каждом компоненте A, at на jc,- для и = 1, ..., п. Тогда C5cD. Следовательно, С— поддизъюнкт D, что и следовало доказать. Пример 11.2.11 Пусть С = -iP(jc) v <2(#jt), a) и D = -nP(h(y)) v Q(j{h(y)), a) v -.P(z). Является ли С поддизъюнктом D? Решение, у и z — переменные в D. Пусть а = {у / b, z / с}. Заметим, что Ъ и с отсутствуют в С и D. Тогда Da = —iP(h(b)) v Q(J{h(b)), a) v -iP(c). Таким образом, -nDa = P(/i(fc)) & -iQWLKb)), a) & P(c). Значит, W = {P(A(fe)), ^<2№Ш a), P(c)}, U°={-,P(x)vQ(j{x),a)}. Поскольку U° не включает 0, то вследствие применения правила резолюции, получаем U1 = Ш(Д/г(&)),я)} (НЗУ а= {*/*(«}). Поскольку (/ * не пуст и не включает 0, то снова вследствие применения правила резолюций получаем U2 = {0}. Поскольку £/2 включает 0, то алгоритм оканчивает работу, и мы приходим к выводу, что С — поддизъюнкт D. <
Глава 11. Методы поиска доказательств теорем в логике предикатов 567 11.3. Контрольные вопросы □ Что называется эрбрановским универсумом? □ Что называется эрбрановским базисом? □ Что представляет собой //-интерпретация? □ Что называется семантическим деревом? □ Что такое полное и закрытое семантическое дерево? □ Какая подстановка называется унификатором? □ Какие Вы знаете алгоритмы унификации? □ Какой унификатор называется НОУ? □ Сформулируйте теорему о полноте метода резолюций. □ Какой вид имеет формула в сколемовской нормальной форме? 11.4. Задачи и упражнения 1. Доказать, что: • основной пример С" дизъюнкта С выполняется при интерпретации h тогда и только тогда, когда существует основная литера L' в С", такая, что V выполняется и в А; • дизъюнкт С выполняется при интерпретации h тогда и только тогда, когда каждый основной пример С выполняется при интерпретации h\ • дизъюнкт С опровергается интерпретацией h тогда и только тогда, когда существует хотя бы один основной пример С" дизъюнкта С, такой, что С не выполняется при интерпретации А; • множество дизъюнктов S противоречиво тогда и только тогда, когда для каждой интерпретации А существует хотя бы один основной пример С некоторого дизъюнкта С из 5, такой, что С не выполняется при интерпретации h. 2. Пусть S = {/>(/«), a, g(f(x)\ Ь). Найти: • Но и Ни • все основные примеры S на //о", • все основные примеры S на Н\.
568 Часть III. Приложения 3. Пусть S = {P(jc), -iP(/Cv))}. Построить Я0, #ь #2, #з для 5. Можно ли найти интерпретацию, которая удовлетворяет 5? Если можно, то постройте одну. Если нельзя, то почему? 4. Пусть S = {Р, -iP v 2, -.£?}. Построить: • множество атомов 5; • полное семантическое дерево 5; • закрытое семантическое дерево S. 5. Покажите, что приведенные ниже утверждения являются логическими следствиями таких фактов: • Посылка: студенты являются гражданами страны. Заключение: голоса студентов на выборах являются голосами граждан. • Посылка: всякий, кто находится в своем уме, может понимать математику. Ни один из сыновей Гегеля не может понимать математику. Те, кто сошел с ума, не могут принимать участие в выборах. Заключение: никто из сыновей Гегеля не может принимать участия в выборах. • Посылка: всякий предок предка данного человека является предком того же человека, и ни один человек не может быть сам себе предком. Заключение: существует некоторый индивид, который не имеет предков. 6. С помощью метода резолюций покажите, что такие множества дизъюнктов не выполняются: Р v Q v Р, -,Р v Р, -.£, -нР. 7. Пусть с = {jc/ а, у IЪ, z I g(x,y)} — подстановка и Е = P(J{x)y z). Найдите Ее. 8. Пусть с = {х I а, у I j{z), z I у) и С\ = {jc / b, у I z, z I g(x)}. Найдите произведение с * G\. 9. Докажите, что для любых подстановок а, т, 8 имеет место равенство (а * т) * 8 = а * (т *8). 10. Определите, которые из приведенных ниже множеств имеют НОУ, и если такой НОУ есть, то найдите его: • W={Q(a\Q(b)}; • W={Q(a9x)9Q(a,a)};
Глава 11. Методы поиска доказательств теорем в логике предикатов 569 • W={Q(a9x9Ax)),Q(a9y9y)}\ • W = {Q(x9 у, z), Q(u, h( w, v), u)}; • W={P(x\, g(x\), x2, h(xu x2\ хь k(xu x2, x3)\ P(yu Уг> е(у2), Уз, ЛУ2,Уз),У4)}. И. Найдите все возможные резольвенты (понятно, если они существуют) для таких пар дизъюнктов: • C = -,P(x)vQ(x9blD = P(a)vQ(a9b); • C = -,P(x)vQ(x9xlD = -^Q(a,fta))9 • С = ->Р(лг, у, u) v -iP(y, z, v) v -,Р(*, v, w) v Р(и, z, w), D = P(g(*, у), x, у). 12. Докажите с помощью правила резолюций, что формула -iff —> -u4 является логическим следствием формулы А—> В.
Глава 12 Основные понятия теории программных инвариантов Алгебры играют важную роль в задачах анализа, верификации и оптимизации программ, решение которых дает возможность повысить эффективность программного обеспечения. Перечисленные задачи в общем случае не являются алгоритмически разрешимыми, но в отдельных случаях их решение значительно облегчается при условии, что нам известны инвариантные соотношения в каждом состоянии программы. Задача поиска такого рода соотношений — это отдельная проблема, а теория, в которой эта проблема изучается, называется теорией программных инвариантов. В этом разделе рассматриваются методы поиска программных инвариантов для программ с простыми переменными. Основной моделью программ выступают £/-У-схемы программ над памятью. 12.1. Инварианты в состояниях U-Y-программ и языки инвариантов 12.1.1. Определение программного инварианта Пусть А — [/-К-схема программы над памятью /?= [ги ..., гш}, интерпретированная на области данных D ((/-^-программа), и L— язык, на котором записываются утверждения о свойствах информационной среды В. Относительно языка L будем считать, что всякое его слово (которое будет называться также условием) можно выразить формулой Ф(г)-исчисления предикатов первого порядка, которая включает свободные переменные из кортежа г = (гь ..., гт) и интерпретирована на области данных D. Сигнатура этого исчисления включает все символы сигнатур АиП. Определение 12.1.1. Условие Ф(г) называется инвариантом состояния а [/-^-программы А относительно условия и{г\ если оно истинно при каждом
Глава 12. Основные понятия теории программных инвариантов 571 прохождении состояния а в процессе выполнения программы А для тех и только тех начальных состояний в памяти из 5, на которых u(r) истинно. Условие u(r) называется начальным. Если начальное условие является тождеством на Д то Ф(г) будем называть просто инвариантом состояния а. Содержательно инвариант Ф(г) состояния а относительно условия и(г) характеризуется множеством В(а) с В состояний информационной среды, которые достигаются в состоянии а заданной £/-У-программы на допустимых путях, которые начинаются на состояниях памяти, удовлетворяющих начальному условию и(г). Схема построения множества В(а) такая. Строится множество 5 всех допустимых путей из #о в а, которые реализуются для начальных состояний из Ви с В (характеристическое множество условия и(г)). По каждому пути s = (яо, Ь0), •••' (яь fa), (ак+ и Ь* + О, где к > 0, ак+ \ = а, восстанавливается операторная история— последовательность уи ..., ук операторов, которыми отмечены переходы на этом пути. Рассматривая после этого композицию Ух = У\* -•- * У к (а это тоже оператор присваивания над /?), строим множество Bs = ys(Bu), после чего искомое множество В(а) рассматривается как Ви. Но эта схема неконструктивна как вследствие неконструктивности множества 5, так и вследствие того, что множества вида Bs могут не быть характеристическими для условий языка L. Выходом из такого положения является аппроксимация множества S некоторым надмножеством путей 5', которое хотя и включает "лишние" (недопустимые) пути, но структура его проще, так и аппроксимация множеств вида Bs их подмножествами В/, характеристическими для некоторых условий из L. Обе аппроксимации ведут к уменьшению множества В(а\ поскольку уменьшается каждый член пересечения f]Bs, и seS добавляются новые его члены. С учетом сужения множества В{а) с неконструктивного f]Bs к некоторому приближению снизу можно говорить о мак- seS симальном инварианте состояния а как об условии Ф(г) языка L таком, что Ви = В(а), и для всякого другого инварианта Ф\г) имеет место Ф(г) => Ф'(г), где "=>" означает отношение "быть следствием". Построение инвариантов выполняется генератором инвариантов в языке L. Понятие генератора включает три компонента: □ функцию ef: L х {/ х У —> L — "эффект оператора"; □ структуру полуструктур на множестве условий из L; □ итерационный алгоритм. Функция ef по условиям и' и и из L, истинным перед выполнением оператора у G У, строит условие ef(i/, и, у), истинное на преобразованном оператором у состоянии памяти. Иногда будем рассматривать более простой вариант
572 Часть III. Приложения функции ef, когда среди ее аргументов нет условия и, которое обуславливает переход и/у. Следует отметить, что из определения функции ef следует, прежде всего, ее монотонность относительно первого аргумента, то есть из того, что множество условий N— логическое следствие множества условий N\ следует, что ef(N, и, у) — логическое следствие ef(N', м, у). Действительно, ef(7V, м, у) выполнима на последовательности у(Ь) тогда и только тогда, когда N и и выполнимы на последовательности Ъ из В. Но тогда ef(W, и, у) выполнима на всякой последовательности у(Ь), на которой выполнима ef(7V, и, у), поскольку N — следствие N'. Операция л взятия нижней грани на множестве условий языка L, вообще говоря, отличается от конъюнкции условий: например, если L— язык линейных уравнений и щ = ((jc = 2) & (у = 3)), иг = ((х = 3) & (у = 2)), то нижняя грань равна (х + у = 5) & (\х - у\ = 1), хотя щ & и2 = 0. И последнее, итеративный алгоритм, отправным пунктом которого является некоторая начальная разметка (если отметкой состояния а является условие и(г), а отметки остальных вершин — тождественно истинные условия), строит последовательность отметок, которые уточняются до момента получения некоторой стабильной разметки, соответствующей системе инвариантов. Рассмотрим, как выполняется итерационный шаг. Пусть задана некоторая разметка состояний [/-У-программы, N(a) e L — текущая отметка состояния а и z: V—> {0, 1} — функция, которая дает возможность отделить состояния, для которых отметки обновились, от остальных состояний. Алгоритм завершает работу, если (Va e V) (z(a) = 0). Если же это условие не выполняется, то выбирается состояние а, такое, что z(a) = 1. После этого для каждого перехода из данного состояния (а их может быть одно или два) строим уточнение. Уточнение для перехода а —»а\ отмеченного парой и/у, состоит в том, что вычисляется эффект ef(N(a), у), а потом — нижняя грань ef(W(a), у) л N(a'\ и, наконец, если эта нижняя грань отлична от N(d\ то z(d) полагаем равным 1. Уточнение переходов, которые выходят из состояния а, сопровождается изменением z(a) с 1 на 0. Задав так итерационный шаг, общий для всех алгоритмов данного класса, заметим, что в некоторых ситуациях в состояниях- ветвлениях уточнение выполняется не при обоих переходах, а лишь при одном. Для этого необходимо, чтобы условия и или —im, которые определяют выбор альтернативы в ветвлении, были следствием текущей отметки N(a). Конечность итерационного процесса, как правило, гарантируют условия обрыва ниспадающих цепей в полуструктурах языка L, что, к сожалению, может влиять на качество функции ef. Если описанный алгоритм завершился, то функция ef дает совокупность инвариантов в состояниях {/-^-программы. Эту совокупность также будем
Глава 12. Основные понятия теории программных инвариантов 573 обозначать {Na}, где a e А. Возникает вопрос о качестве полученной системы инвариантов. Для этого по истории работы итерационного алгоритма строится множество путей, которое им порождается и которое аппроксимирует множество допустимых путей. Для каждого состояния d (/-/-программы до момента стабилизации разметки пройдено лишь конечное множество путей из начального состояния а в состояние я', и каждому из них соответствует своя операторная история. Конечную совокупность этих путей обозначим Q(d). Далее, множество операторных историй, которые соответствуют путям из а в а, опишем регулярным выражением, которое обозначим Т(а\ а). Заметим, что для каждого состояния а, из которого ведут переходы по условиям и и —im, проверяется, являются ли и и -ли логическими следствиями из N(a)9 и если одно из этих условий является следствием из N(a), то переход, соответствующий второму условию, игнорируется при синтезе Т(а\ а). После того, как построены все множества Q(d) и Т(а\ я), аппроксимация множества 5 допустимых путей из я0 в а строится как (J Path(a) = j2(*V7V,aO. as A 12.1.2. Методы поиска программных инвариантов Перейдем теперь к более традиционной терминологии, которая принята в теории программных инвариантов — теоретико-множественной. Поскольку N и ef(N, и, у) — некоторые предикаты на множестве D, то их можно рассматривать как отношения на D, которые определяются этими предикатами. Тогда булеан B(L) удобно представлять в виде структуры относительно операций пересечения п и объединения и, которая включает нуль 0 и единицу L. Выражения ef(N, и, у) n (u) ef(7V', и\ /) в этом случае рассматривают как пересечение (объединение) соответствующих отношений на D, а то, что множество ef(7V, и, у) является логическим следствием множества формул ef(7V', н, у) — как теоретико-множественное включение ef(7V, и, у) с ef(7V', и, у). В дальнейшем будем пользоваться этими определениями. Число возможных различных путей в программе (при условии существования в ней хотя бы одного цикла) может быть бесконечным, и тогда процесс построения условия состояния а тоже может стать бесконечным. Несмотря на это, пусть а\, ..., а*— все состояния {/-У-программы А, которые связаны переходами (а,, и,, у,, а) с состоянием а, и М — множество инвариантов состояния а относительно некоторого условия. Тогда очевидно, что ef(M, "/, уд будет инвариантом состояния а относительно того же начального условия. Этот простой факт служит отправным пунктом для построения двух итерационных методов генерации инвариантов [22].
574 Часть III. Приложения В первом из них, названном методом нижней аппроксимации (МНА), итерационный процесс задается рекуррентным соотношением Л#°= C[eWln'l\u,y)9 /t>0,fl,fl/GA, (12.1.1) (а\ u,y,a)eS а начальное приближение { Л^0) } — уравнениями Л^0) = {и} и Л^0) = 0 для а * яо. Из свойства монотонности функции ef следует, что независимо от состояния а. Указанный итерационный процесс может завершиться через конечное число шагов вследствие стабилизации последовательностей Na для всех а £ А или продолжаться бесконечно, но преимущество этого метода состоит в том, что, не ожидая стабилизации процесса вычислений, их можно прервать, поскольку всякое множество Na включается в множество инвариантов состояния а. В другом методе — методе верхней аппроксимации (МВА), итерационный процесс задается рекуррентным соотношением N(an) = N{anA)n( f]ef(Na.9u9y))9 и>0,д,д'£Л, (12.1.2) (а\ и, y,a)eS а начальное приближение определяется уравнением ЛГ ) = {и} и некоторой совокупностью простых путей, которые покрывают все множество состояний {/-^-программы А. Вычисление начального приближения выполняется для всех таких путей, начиная с Л^ ): если для некоторого а £ А уже известно N^ ), переход (а, и, у, а') принадлежит одному из путей заданной системы, a Nj еще неизвестно, то полагаем N^ =tf(Na, и, у). Из соотношения (12.1.2) видно, что для всякого ае А имеют место включения N^ ) =) N^' 2 ... и, значит, искомая совокупность инвариантов может быть получена только после стабилизации итерационного процесса. Поскольку процесс поиска инвариантов может быть бесконечным, то это является недостатком метода МВА, который в случае результативного завершения генерирует более полные системы инвариантов, чем метод МНА. Исследование методов генерации инвариантов показывает, что конечность процесса поиска инвариантов тесно связан с языком условий L. Самые распространенные языки условий— языки типа равенств и неравенств, поскольку практически всякий язык программирования включает в себя предикаты равенства и неравенства. Разработка методов поиска инвариантов для
Глава 12. Основные понятия теории программных инвариантов 575 этих языков связана со значительными трудностями. Действительно, формулы (12.1.1) и (12.1.2) требуют алгоритмического и, по возможности, эффективного решения задач пересечения множеств соотношений, проверки, является ли соотношение следствием заданного множества соотношений и т. д. Решение перечисленных задач уже для этих языков требует применения достаточно сложных методов современной коммутативной алгебры, в чем можно убедиться из следующего раздела. Таким образом, использование слишком богатого языка условий не дает возможности получать достаточно полное и исчерпывающее описание инвариантов. В связи с этим приходится накладывать определенные ограничения на язык условий L. Рассмотрим некоторые из них. 12.2. Язык равенств. Основные задачи 12.2.1. Основные задачи теории программных инвариантов Пусть А— fZ-K-программа с множеством переменных /?= {гь ..., rm), рассматриваемая над алгеброй данных (D, £2), K(Q, Eq) — класс алгебр, который включает алгебру (Д Q) и который определяется множеством тождественных соотношений Eq, a 7(Q, R) — свободная алгебра термов над R из класса № Eq). Рассмотрим проблему поиска инвариантов для языка L, который состоит из условий типа равенств g(r) = h(r), где g(r), h(r) e T(Q, /?), г = (п, ..., rm) (то есть L не учитывает условий из множества U). Пусть М— некоторое множество равенств. Каждое равенство можно рассматривать как пару термов, а множество М — как бинарное отношение на множестве термов T(Q, R). Алгебраическим замыканием мноэюества М относительно Eq называется наименьшее множество С(М), которое включает в себя рефлексивное, симметрическое и транзитивное замыкания М, все тождества из Eq, и для всякой л-арной операции со вместе с парами (gi(r), q\(r)), ..., (gn(r), qn(r)) включает пару (co(gi(r), ..., gn(r)), aXgiO), ..., qn(r))). Множество М называется алгебраически замкнутым, если С(М) = М. Теорема 12.2.1. С(М) = М тогда и только тогда, когда М— конгруэнтность на T(£l, R). Доказательство очевидным образом следует из определений конгруэнтности и алгебраического замыкания.
576 Часть III. Приложения Подмножество Р алгебраически замкнутого множества М называется алгебраическим базисом М, если С(Р) = М Пусть М— алгебраически замкнутое множество равенств. Соответствующую фактор-алгебру будем обозначать T(Q, R) IМ, ее элементы — /(mod Л/), t G T(Q, /?), а равенство термов — в виде t = f'(mod M). С каждым оператором присваивания у = (п := t\(r), ..., rm := tm(r)) (r,Gr(Q, /?)) и алгебраически замкнутым множеством М свяжем гомоморфизм hy:T(Q4R)->T(Q4R)/M, полагая hy(ri) = //(mod М). Конгруэнтность Мна T(Q, /?) называется нормальной, если она — ядро эндоморфизма алгебры T(Q, /?), то есть Г(£2, R) IM изоморфна подалгебре алгебры T(Q, /?). Пусть ef(M, у) (сужение ef(M, м, у)) означает множество равенств t(r) = f'(r)> таких, что t{tu ..., tm) = t'(t\, ..., tm) e M. Очевидно, что ef(Af, у) — конгруэнтность и ef(M, у) = кег(йу), где hyi T(Q, Я) -> T(Q, Я) / М — гомоморфизм, заданный некоторым оператором у. Лемма 12.2.1. ef(ef(M, у), у') = ef(M, у/). Доказательство. Действительно, пусть У = (Г1 := h(r\ .... гда := fm(r)), у' = (n := fi'(r), ..., rm := fm'(r)). Тогда УУ' = /' = (п :='i'(*i(r), ...,ar)), ..,rm:=^iW), .... fw(r))), иесли /(г) = /'(г)) G ef(ef(Af, у), у'), то #/, ..., О = ''('Л ..., О е ef(M, у) и /(*Ч*ь ..-, *«). ..-, tm\tu ..., f«)) = *W(fh -.., *«). •••> С('ь ..., f«))e M. Последнее означает, что t(r) = t'(r) G ef(M, у/) = efW /')• Обратное включение доказывается аналогично. Теорема 12.2.2. Если М— нормальная конгруэнтность, то ef(Mt у) — тоже нормальная конгруэнтность. Доказательство. Действительно, если М— нормальная конгруэнтность, т. е. М = ker(/i), то М = ef(0, у'), где у = (n := h(n), ..., гш := (rm)) и ef(M, y) = ef(ef(0, у'), y) = ef(0, у")— нормальна конгруэнтность в силу леммы 12.2.2. Функция ef называется дистрибутивной, если для любых Ми М' выполняется равенство ef(M nM\y) = ef(M, у) n ef(M', у).
Глава 12. Основные понятия теории программных инвариантов 577 Теорема 12.2.3. Если множества М и М'алгебраически замкнутый то функция ef дистрибутивна. Доказательство, t = t' e ef(M r\M\ у) <=» y(t) = y(t') (mod(A/ n M')) <=> y(t) = y(t') (mod M) и y(/) = y(0(mod M')<=>t = fe ef(M, y) n ef(M', y). Заметим, что условие дистрибутивности функции ef сильнее условия монотонности, поскольку из дистрибутивности функции ef следует ее монотонность. Действительно, если MqM\ to вследствие дистрибутивности функции ef можно записать ef(M n М\ у) = ef(M', у) = ef(M, у) n ef(M', у). Отсюда следует, что ef(A/, у) с ef(M', у). Предположим, что нам известно, как строить множество ef(A/, у) или его алгебраический базис и находить пересечение таких множеств или алгебраический базис этого пересечения. Тогда, пользуясь одной из формул (12.1.1) или (12.1.2), можно организовать процесс поиска инвариантов в состояниях программы, исходя из некоторых начальных алгебраически замкнутых множеств, которые поставлены в соответствие состояниям программы, и, повторяя его до тех пор, пока множества ef(M, у) в данных состояниях не прекратят изменяться (стабилизируются). Заметим, что когда множества ef(M, у) имеют конечные базисы, то из стабилизации множеств ef(A/, у) следует стабилизация их базисов и наоборот. Следовательно, проблема построения множеств инвариантов в состояниях £/-К-программы над заданной алгеброй данных 7(D, R) сводится к таким основным подзадачам. Задача о соотношениях. Построить по заданному множеству равенств М (или его алгебраическому базису) и оператору у е Y множество ef(M, у) (или его алгебраический базис). Задача о пересечении. По заданным множествам ef(Af, у) и ef(M', у) построить множество ef(M, у) n ef(M', у) (или его алгебраический базис). Задача о стабилизации. Показать, что процесс построения множеств ef(A/, у) (или их алгебраических базисов), которые соответствуют состояниям программы, стабилизируется. 12.2.2. Алгоритмы поиска программных инвариантов При определении метода МВА процесс вычисления инвариантов зависит, вообще говоря, от выбора совокупности простых путей, которые задают начальное приближение. Аналогичная ситуация имеет место и при переходе от параллельного способа вычисления приближений по формулам (12.1.1) и (12.1.2), когда на каждом шаге итерации вычисления выполняются одновре-
578 Часть III. Приложения менно для всех состояний, к последовательному способу, когда в данный момент для разных состояний рассматриваются, вообще говоря, разные приближения. Последовательные вычисления приближений позволяют существенно уменьшить объем вычислений, поскольку для части состояний на некоторых итерациях вообще не будет никаких изменений. Например, если существует путь из состояния а в состояние а и не существует пути из d в я, то множество инвариантов в состоянии а никак не зависит от соответствующего множества для состояния а\ и процессы вычислений инвариантов для таких состояний удобно разнести, вычисляя их сначала для а и только потом — для а. Ниже приводятся последовательные алгоритмы нижней и верхней аппроксимаций. Относительно исходной (/-К-программы будем предполагать, во-первых, что все ее состояния, возможно, за исключением начального яо и заключительного а, являются ветвлениями или слияниями — этого можно достичь в результате умножения операторов присваивания на линейных участках, и, во-вторых, с каждым состоянием а ассоциируется множество соотношений Л/я. Пусть S— множество переходов fZ-K-программы и Ps(tf) = {а' е А | (я, м, у, я') £ 5}. В приведенных ниже алгоритмах Na, Л/, С— переменные типа множество, значения которых понятны из алгоритмов, Л/Ь— начальное множество соотношений, v(l: \A\)— массив логических значений. В этих обозначениях алгоритмы поиска инвариантов можно записать так: Начало: /* первый этап работы алгоритма МНА */ NaQ := No; С := А \ {а0}; Для всех а из С выполнить; Na := 0; КЦ; /* второй этап работы алгоритма МНА */ Пока С Ф 0 выполнить Взять а из С; N := Na; I := 1; Для всех (а', и, у, а) е S выполнить
Глава 12. Основные понятия теории программных инвариантов 579 Если N = 0 то Если J = 1 то N := ef(Na, у); I := 2; Иначе Выйти из цикла; КЕ; иначе N := N П ef (^/ у) ; КЕ; КЦ; ЕСЛИ N * Na TO Na := N; С := С U Ps(a); КЕ; КЦ; Конец. | "Алгоритм МВА(А Afo) Начало; /* первый этап работы алгоритма МВА */ N^ := *,, Для всех а из А \ {ао} выполнить v(a) := 0; Na := 1; КЦ; С := {а0}; v(a0) := 1; Пока С * 0 выполнить Взять а' из С; Для всех (а', и, у, а) 6 S выполнить Если v{a) = 0 то Na := ef(Na-/ у); С := С U {а} ; v(a') := 1;
КЕ; КЦ; КЦ; /* второй этап работы алгоритма МВА V С := А \ {а0}; Пока С Ф 0 выполнить Взять а из С; N := Na; Для всех (а', и, у, а) е S выполнить Если N = 0 то Выйти из цикла; Иначе N := Na О ef №, у) ; КЕ; КЦ; Если N Ф Na то Na := N; С := С и {Ps(a)}; КЕ; КЦ; Конец. Семантика оператора взять а из с такая: фиксируется элемент а из множества С, который при этом удаляется из указанного множества, а оператор выйти из цикла означает окончание цикла, в котором он находится. Слова в скобках типа /* и */ — комментарии. Стратегия выбора элементов из множества С, вообще говоря, произвольная, но считается, что всегда последним элементом, который выбирается из С, является заключительное состояние а*. Множество простых путей, по которому определяется начальное приближение, среди входных параметров не фиксируется. Вместе с приведенными алгоритмами можно рассматривать их версии, ориентированные на работу с алгебраическими базисами. Они отличаются тем, что значением входного параметра N является не само множество соотношений, а его базис, и тогда рассматривается не операция пересечения множеств соотношений, а операция построения базиса их пересечения. Установим теперь некоторые общие свойства приведенных выше алгоритмов. Теорема 12.2.4. Если в алгебре T(Q, R) выполняется условие обрыва ниспадающих цепей нормальных конгруэнтностей, мноэюество N и пересечение
Глава 12. Основные понятия теории программных инвариантов 581 нормальных конгруэнтностеи являются нормальными конгруэнтностями, то алгоритм МВА оканчивает свою работу за конечное число шагов. Доказательство. Действительно, по условию теоремы и согласно теореме 12.2.3 алгоритм МВА в каждом состоянии £/-К-программы строит ниспадающую последовательность нормальных конгруэнтностеи iV^DiV^ D..QN^ э..., которая является конечной по условию обрыва таких цепей. Теорема 12.2.5. Если в алгебре T(Q, R) выполняется условие обрыва возрастающих цепей нормальных конгруэнтностеи, No — нормальная конгруэнтность, и пересечение нормальных конгруэнтностеи является нормальной конгруэнтностью, то алгоритм МНА завершает свою работу за конечное число шагов. Доказательство. Действительно, по условию теоремы и в силу теоремы 12.2.3 алгоритм МНА в каждом состоянии £/-К-программы строит возрастающую последовательность нормальных конгруэнтностеи Л^сЛ^с ..., которая является конечной по условию обрыва возрастающих цепей. Заметим, что условие обрыва возрастающих и ниспадающих цепей нормальных конгруэнтностеи выполняются для наследственно-свободных алгебр, то есть таких алгебр, все подалгебры которых свободны в одном и том же классе. К наследственно-свободным алгебрам относятся такие важные классы алгебр, как абсолютно-свободные алгебры, векторные пространства, свободные группы, свободные абелевы группы. Следствие 12.2.1. Если алгебра T(Q, R) наследственно-свободная, то алгоритм МНА завершает свою работу за конечное число шагов [22]. Теорема 12.2.6. Если алгоритм МВА завершает свою работу за конечное число шагов и множества соотношений, которые при этом получаются в каэюдом состоянии U-Y-программы в процессе его работы, алгебраически замкнуты, то результат работы алгоритма МВА не зависит от способа обхода состояний U-Y-программы (и от выбора начальной совокупности простых путей), а множество инвариантов N для всякого состояния а е А совпадает с множеством П ef(yv0,y,). 1 = (а0,а) Доказательство теоремы основано на таких леммах. Лемма 12.2.1. Если функция ef дистрибутивна и алгоритм МВА завершает свою работу за конечное число шагов, то (\/aeA)(Na= ГИ^о.У»- (а\ и, у,а)е S
582 Часть III. Приложения Доказательство выполняется индукцией по числу попаданий в состояние а. m = 2 (база). По алгоритму имеем Na=Nan( f)ef(Na.,y)) (а\ u, y,a)£S для некоторого i > 1. Но N{a2)=tf(N{J\y)n( f)ef(N«\y)), (а\ u, y,a)€ S и поскольку для / > 1, то вследствие монотонности дистрибутивной функции ef можно записать (a', u, y,a)GS m > 2 (шаг индукции). Пусть равенство N^k) = f)ef(Na>, у) справедливо (а\ и, у, а)е S для всех к < т. Тогда по алгоритму (а\ и, у, а)е S = ( f)ef(N(J\y))n( f]ef(N{J),y)) (а', и, у, а)е S (а', и, у, а)е S (i >j) по предположению индукции. На основе монотонности ef имеем ( \ N<Zn)=\ f]cf(N(J\y))n( f]cf(N{j),y))= f]ef(N^,y) \(a\ и, у, a)£ S (a',u,y,a)eS {a',u,y,a)€S Теперь утверждение леммы следует из условия завершенности алгоритма МВА. Лемма 12.2.2. Если функция ef дистрибутивна, и алгоритм МВА завершает свою работу после конечного числа шагов, то (VaeA)(Na= ГИ^о.У))- (/ = /(я0,а) Доказательство проводится индукцией по длине |/| пути I = 1(а0, а). \1\ = 0. Тогда а = а0 и Na = N0 = N, поскольку N0 дальше не меняется, то база индукции имеет место. |/| > 0. Предположим, что для всех \Г\ < \1\ утверждение леммы справедливо, когда а Ф а0. Тогда по лемме 12.2.1 имеем (а\ и, у,а)€ S
Глава 12. Основные понятия теории программных инвариантов 583 По предположению индукции и вследствие дистрибутивности функции ef получаем Na = f|ef( Г\*К1*ачУу)*У) = f>f(tf0.yi). (а\ u, y,a)e S(l' = l{a0, a') (l = l(a0, а) Лемма доказана. Доказательство теоремы 12.2.6 теперь очевидным образом следует из теоремы 12.2.4 и лемм 12.2.1 и 12.2.2. Если множество инвариантов любого состояния (/-У-программы совпадает с множеством ГИ^о.л). 1 = 1(а0,а) то оно будет называться полным относительно генератора инвариантов, языка L и начального множества No- Теорема 12.2.6 дает условия, при которых алгоритм МВА генерирует полные множества соотношений относительно начальной совокупности соотношений. Если функция ef не является дистрибутивной, то получение полной системы соотношений становится алгоритмически неразрешимой задачей. Это следует из такого утверждения. Теорема 12.2.7. Если функция ef не дистрибутивна, то можно построить U-Y-программу А с начальным множеством соотношений No, для которой не существует алгоритма, генерирующего полную систему инвариантов относительно No для этой U-Y-программы. Доказательство теоремы выполняется путем сведения данной проблемы к модифицированной проблеме соответствий Поста (МПВП) [81], которая формулируется таким образом. Дано два слова р = jcijc2...хп и р =у\уг---Уп в алфавите {0, 1}. Следует найти последовательность целых чисел ii, /2, ..., 1*, такую, что имеет место равенство X; Xi ...Xi = У/j У/2---У/ • Хорошо известно, что проблема Поста алгоритмически неразрешима. Рассмотрим (/-К-программу на рис. 12.2.1. Свяжем с этой программой структуру с такими элементами: 1. О — нулевой элемент структуры; 2. $ — специальный элемент, с помощью которого фиксируется отсутствие решения МПВП; 3. Все строки целых чисел от 1 до к, которые начинаются с 1. 20 Зак. 3427
584 Часть III. Приложения ц/у,... ^.2/Упи а* Рис. 12.2.1 □ (B)ef(M,);/+7) = - Операция пересечения на структуре определяется какх лу = 0 тогда и только тогда, когда х Ф у. Значит, если х = у, то jc = у или jc = 0. Значения функции ef(A/, у,-), i = 1, 2, ..., Л + 1, задаются так: □ (a) ef(0, е) = е — тождественная функция, а е — тождественный оператор присваивания; □ (б) для всех i = 1, 2, ...,к имеем: • (61) если М- {s} — строка чисел, которые начинаются с 1, то ef(A/, уд = s,; • (62)ef(0,;y,) = O; • (63) ef($, ?,) = $; [0, если s - решение МПВП; [$ иначе. О (г): • (rl)efl[0,y4+i) = O; • (r2)efl[$,y4+I) = $; □ (д) для любого М- {s} ef(M, y\)= {1} — строка, состоящая из одного элемента 1. Лемма 12.2.3. Структура, определение (1)-(3) которой приведено выше, является нижней полуструктурой, а функция ef монотонна. Доказательство. Из определения операции пересечения очевидным образом следует, что она идемпотентна, коммутативна и ассоциативна, то есть задает некоторую полуструктуру, а длины всех строго ниспадающих цепей ограничены числом 2. Остается показать монотонность функции ef. Пусть М- {s} < М' = {$'}. Тогда: □ для произвольных М, М ef(M, уд = ef(M', уд = {1} (вследствие (д));
Глава 12. Основные понятия теории программных инвариантов 585 П если М< М\ то М = М' или М = 0, и поэтому ef(M, у,) < ef(M', у,-) следует для всех i = 2, 3, ..., & + 1. Лемма доказана. Доказательство теоремы 12.2.7 теперь следует из таких соображений: если бы для заданной {/-^-программы существовал алгоритм построения полной системы инвариантов, то он бы давал решение МПВП, а это противоречило бы алгоритмической неразрешимости МПВП. Возникает естественный вопрос, на какое множество инвариантов можно рассчитывать в этом случае, и каковы свойства этих множеств? Ответ на эти вопросы дает такая теорема. Теорема 12.2.8. Если алгоритм МВА завершает работу через конечное число шагов, и функция ef не является дистрибутивной, то полученное в результате множество инвариантов N для любого состояния а из А является максимально фиксированной точкой решения системы уравнений 'Ха=Ха П ef(Xa.,y), (a',u,y,a)eS (12.2.1) Xao=N0. Доказательство. Очевидно, что после завершения работы алгоритма МВА множество инвариантов Na в произвольном состоянии а е А удовлетворяет системе (12.2.1). Пусть Ка— произвольное другое решение системы (12.2.1). Покажем индукцией по числу попаданий в состояние а, что после m-го попадания (\/ае A)(Ka(zNa), где Na— множество соотношений в состоянии а, полученное с помощью алгоритма МВА. т = 0. При т = 0 имеем К„ = Л^0) = No и Ка = 1, где 1 — единица структуры L (в целях оптимизации этот шаг в алгоритме МВА пропущен, поскольку (Уа е A)(Na e L, L = 1 и Na n 1 = Na). Следовательно, при т = 0 утверждение теоремы справедливо. т>0. Предположим, что KaQN^n'l) для произвольного аеА. Покажем, что Ка с N^n). Действительно, N0n) = д,(ш-1) ( р ef(yv(i) ^ у)) = Ка п ( р! Qf(Ka> ^ у)) = ^ (a\u,y,a)eS (a\u,y,a)e S по предположению индукции, монотонности функции ef и того, что Ка — решение (12.2.1). Для остальных состояний а' имеем N^ -"a"' )• Таким
586 Часть III. Приложения образом, Ka с N%n . Теперь утверждение теоремы следует из условия завершения алгоритма МВА. Теорема доказана. Следствие 12.2.2. Результат работы алгоритма МВА не зависит от порядка выбора элементов из множества С. 12.3. Поиск инвариантов в программах над свободными алгебрами данных Перейдем к рассмотрению £/-К-программ над конкретными алгебрами данных. 12.3.1. Абсолютно свободные алгебры Рассмотрим случай, когда алгебра данных (/-У-программы абсолютно свободная, то есть D совпадает с T(Q, R). Решение задачи о соотношениях. Пусть (я, и, у, Ь) — некоторый переход в fZ-У-программе А, где у = (г := t(r)) = (n := fi(r), ..., rm := tm(r)), r=(ru ..., rm), ti(r) G T(Q, /?), i = 1, 2, ..., m, и t[t\ <— tz] означает подстановку терма t2 в терм t вместо некоторого вхождение терма t\. Будем также считать, что элементы г,- := ti(r) в операторе у упорядочены по возрастанию длины термов ь(г). Выясним структуру множества ef(0, у). Поскольку алгебра данных абсолютно свободная, то t(j) = t'(r) имеет место тогда и только тогда, когда термы t(t\, ..., tm) и t'(tu ••♦ tm) графически совпадают. Выделим в ef(0, >>) элементы, имеющие вид n = t{r\, ..., п-\), которые будем называть простыми. Если d— простой элемент, то LT(d) и RT(d) — соответственно левая и правая части d. Введем также определения т RL(n) ={de ef(0, у) \ LT(d) = г,} и RL = \J RL{rt). Пусть rf, dx e RL. Приме- i = i нить соотношение d\ к d означает перейти от d к элементу d\ который имеет вид LT(d) = RT(d)[LT(dl) <- RT(dx)]. При этом будем говорить, что d' — непосредственное следствие d (d \-d'). Транзитивное замыкание отношения непосредственного следования будем называть просто следованием, а элемент d'\ полученный в результате следования из элемента d, — следствием (d |= d")- Отношение |= будет, очевидно, отношением частичного порядка на RL. Из определения простого элемента следует, что RL(n) и RL конечные.
Глава 12. Основные понятия теории программных инвариантов 587 Лемма 12.3.1. RLfrJ имеет единственный минимальный (относительно от- ношения 1=) элемент. Доказательство. Предположим, что в /?L(r,) существует хотя бы два минимальных элемента d и d'. Представим (для удобства дальнейшего изложения) RT{d) и RT(d') в виде составных объектов, графы которых являются деревьями, и выполним параллельный обход их вершин слева направо, сверху вниз, сравнивая отметки этих вершин. При этом могут возникнуть такие ситуации: 1. Отметки вершин одинаковые. 2. г и г (г и /), г, / G R. 3. г и со (со и г), г G /?, со G W. 4. со и со' (со' и со), со, со' g Q. Тогда, в зависимости от ситуации выполняем такие действия: 1. Переходим к следующим вершинам согласно правилам обхода. 2. Выполняем подстановки вместо всех гк (к= 1, 2, ..., i- 1), которые входят в RT(d) и RT(d'), соответствующих термов tk. Поскольку d, d' G RUji) = ef(0, у), то полученные термы должны графически совпадать. Значит, в RL существует элемент г = г' (/ = г), с помощью которого из d (ct) получаем d' (d). Противоречие с минимальностью d, d'. 3. Доказательство аналогично 2. 4. Приходим к противоречию с тем, что rf, d' e RL(rt) = ef(0, у), поскольку при замене всех г* термами ^(г), к= 1, 2, ...,/- 1, графического совпадения термов /?7(d) и RT(d') не может быть. Лемма доказана. Пусть Р — множество минимальных элементов из RL. Лемма 12.3.2. С(Р) = ef(0, у), \Р\ < т = |/?|. Доказательство. Неравенство \Р\<т = \R\ следует из предыдущей леммы. Пусть d— произвольный элемент из ef(0, у), имеющий вид t(r) = t'{r). Представим термы t, t' так, как это было в лемме 12.3.1, составными объектами в виде деревьев и выполним параллельный обход их вершин слева направо, сверху вниз. Снова возможны рассмотренные выше четыре случая, обусловленные различными комбинациями отметок вершин, которые рассматриваются в данный момент. В зависимости от ситуации: 1. Продолжаем обход деревьев согласно правилам обхода. 2. Должны существовать соответствующие простые элементы г, = г, (г, = г,-) и П = Кг\* •••> Г/-О- Эти элементы будем называть разложением соотноше-
588 Часть III. Приложения ния d на простые элементы. Применяя операции из й в том порядке, в котором они указаны в термах t, t\ к элементам разложения d, построим d. Вследствие произвольного выбора d и того, что простые элементы лежат в С(Р), получаем включение С(Р) D ef(0, у). С другой стороны, поскольку Р q ef(0, у), то С(Р) с ef(0, у). 3. Доказательство аналогично 2. 4. Противоречит тому, что соотношение t(r) = t'(r) принадлежит ef(0, у), поскольку при замене всех г* термами f*(r), к = 1, 2, ..., w, графического совпадения термов t(r) и t\r) не может быть. Что и следовало доказать. Следствие 12.3.1. С(Р) является нормальной конгруэнтностью. Действительно, С(Р) = ef(0, у), где у = (п := fi(n, ..., гт\ ..., п := f/(n, ..., rw)), а г, = Г/(гь ..., гт) — простые элементы из С(Р). Решение задачи о пересечении. Пусть du d2e ef(0, у) = С(Р). Обозначим d\(P) |= d2 тот факт, что d2 — следствие dx в базисе Р, то есть, что d2 получен из d\ путем применения элементов из Р. Пусть Р\,Р2— алгебраические базисы некоторых множеств соотношений и de Рь с? е Р2, такие, что LT(d) = L7K) и С(Р,, d)={d\ d(Px) |= rf}, C(P2, d!) = {яГ | rf'(P2) 1= <Г}. Элементы множества Т = C(PU d) n С(Р2, d') будем называть общими кратными d w d' относительно пары (Рь Рг), а минимальный элемент этого множества обозначим HOK(d, d') I (Pi, P2), когда Г* 0. Существование минимального элемента следует из конечности множества Г, а единственность — из приведенного ниже процесса его построения (процесс построения НОК). В процессе построения НОК по элементам d и d' строится третий элемент d" таким образом. Сначала в Pi и Р2 выделяются совокупности равенств, имеющие вид т = г/2, г/з = г/2, ..., rip = rip- 1. Поставим в соответствие каждой переменной Гу число <7, которое называется индексом (ИНД(г/,)), j= 1, 2, ..., р. Если переменная гу уже получила раньше индекс, то все остальные переменные этой совокупности получают индекс переменной г/,. Присвоив индексы всем таким совокупностям переменных, выполним параллельный левый обход сверху вниз деревьев RT(d) и RT(d'\ сравнивая отметки их вершин. В зависимости от ситуации, которая может возникнуть во время обхода (см. доказательство леммы 12.3.1), выполняем такие действия. 1. Копируем вершину и переходим к сравнению следующих вершин согласно порядку обхода. 2. Если ИНД(г/) = ИНД(г7) выполняется только в Рь то есть г,- = г} лежит в Pi, но не в Рг, то копируем вершину с отметкой г, и переходим к сравнению следующих вершин.
Глава 12. Основные понятия теории программных инвариантов 589 3. Если ИНД(г/) = ИНД(гу) выполняется в Р2, то копируем вершину с отметкой г, и переходим к сравнению следующих вершин. (Здесь не требуется, чтобы равенство ИНД(г,) = ИНД(гу) выполнялось только в Р2, ибо если оно выполняется и в Р\, и в Р2, то копировать можно любую из вершин: гх или гу.) 4. Найти d\ € Pi (d2 e P2), такой, что LT(d\) = г, (LT(d2) = n). Если d\ (d2) существует, то применить d\ (d2) к данному вхождению г, (г,-) в RT(d) (RT(d')) и перейти к сравнению следующих вершин. В противном случае перейти на шаг 4. 5. Стереть построенное дерево и закончить процесс сравнения термов. Процесс успешно оканчивается, если он завершается обходом термов RT(d) и RT(d') без попадания на шаг 4. В этом случае процесс называется применимым к RT(d) и RT(d'). Если процесс применим и t— построенный терм, то составим равенство d" вида LT(d) = t. Лемма 12.3.3. d" e HOK(d, d') I (P,, P2). Доказательство. Предположим, что d" £ HOK(d, d')/(Pu P2). Тогда существует d\ G HOK(d, d')l(Pu P2), меньший d", и хотя бы один се Г=С(Рь d)nC(P2, d'\ такой, что di получается из d" применением с. Пусть 2 = №'» •••> <4') и Q' = №"» •••> dk') — последовательности элементов, которые применялись к RT(d) из Pi и к RT(d') из Р2 соответственно в процессе построения RT{d"). Поскольку RT(c) — подтерм терма RT(d), то из Q и Q извлечем те элементы, которые применялись к RT(d) и RT(d') в процессе построения вхождения RT(c) в RT(d"). Применим к RT(d) и RT(d') процесс построения НОК с новыми последовательностями Q и Q'. В результате получим элемент d , меньший d'\ и d получается из d" применением с. Это значит, что при построении RT(d') на некотором шаге к вершине с одинаковыми отметками были применены соотношения с\ из Pi и с2 из Р2, такие, что LT(c\) = LT(c2) = LT(c). Получаем противоречие с процессом построения RT(d"). Лемма доказана. Следствие 12.3.2. HOK(rf, d') I (Рь Pi) = HOK(rf', d) I (Pu Pi\ Справедливость этого следствия выплывает из способа построения НОК. Выделим пары элементов (d, d'), de P\,d'e P2, такие, что LT(d) = LT(d'). Для каждой такой пары построим HOK(d, d') I (Рь Р2), и пусть РТ— множество построенных таким образом элементов. Лемма 12.3.4. С(РТ) = С(Р\) п С(Р2). \РТ\ < min (|P,|, \Р2\). Доказательство. Справедливость неравенства \РТ\ < min (|Pi|, |P2|) следует из способа построения РТ.
590 Часть III. Приложения Пусть d— произвольный элемент из Т = С(Р\) п С(Рг). Разложим d на простые элементы, и пусть Ъ— некоторый элемент этого разложения (см. доказательство леммы 12.3.2). Если be С(Р7), то все доказано. Предположим, что b £ РТ Тогда существует с из РТ, такой, что LT(b) = LT(c) (иначе имеет место противоречие с тем, что d е T). Пусть в процессе построения b из с получены последовательности элементов Q и Q', примененные к с. Первые элементы этих последовательностей d\ и d2 имеют одинаковые левые части. Пусть <2i и Q\' — последовательности элементов из Pi и Рг соответственно, которые применялись в процессе построения НОК(й?ь d-i) /(Pi, Рг) (процесс построения НОК применим к d\, di, поскольку в противном случае имеем противоречие с тем, что с(Р\) |= b или с(Рг) 1= Ь). Извлечем из Q и Q их подпоследовательности Q\ и Q\. В оставшихся частях Q и Q первые элементы опять будут иметь равные левые части. Выполняя над ними аналогичную процедуру и повторяя ее до тех пор, пока Q и Q' не станут пустыми, получим последовательность Q = (d\, ..., d*), fc = min(|<2|, \Q'\), элементы которой по построению принадлежат РТ Значит, Ъ е С(Р7), и поэтому d е С(РТ) и С(РТ) э Т. С другой стороны, очевидно, что РТ с Т, следовательно, С(РТ) с Т, откуда следует равенство С(РТ) = С(Р\) п С(Рг)- Лемма доказана. Следствие 12.3.3. С(Р7) является нормальной конгруэнтностью. Действительно, С(РТ) = ef(0, у), где у = (r\ := t\(r), ..., rm := tm(r)\ в котором *i(r) = ri9 если не существует de РТ такого, что LT(d) = г,-, иначе г,-(г) = RT{d), LT(d) = r/, i = 1,2, ..., m. Следствие 12.3.4. Если С(РГ) = CfP,) n С(Р2) n ... п С(Рк\ то построение РГ не зависит от порядка, в котором перечислены члени Рь Рг, ..., Р*. Справедливость этого следует из следствия 12.3.4 и способа построения РТ. Рассмотрим теперь алгоритмы решения основных задач и выясним их эффективность. Алгоритм построения базиса множества ef(M, у). Сначала рассмотрим решение задачи суперпозиции операторов линейного участка, которая возникает при построении базиса множества ef(A/, у). По лемме 12.3.3 и следствию 12.3.1 эта задача сводится к построению базиса ef(0, yi), где уг = у\ * у представляет оператор, который является суперпозицией операторов присваивания у\ и у, а конкатенация этих операторов будет называться дальше расширенным оператором присваивания. Опишем, прежде всего, алгоритм суперпозиции операторов присваивания, то есть алгоритм построения расширенного оператора присваивания.
Глава 12. Основные понятия теории программных инвариантов 591 Предположим, что переменные гь ..., rm из R перенумерованы (закодированы) целыми числами из промежутка от N до N + m, расширенный оператор присваивания у = (n := t\(r), ..., rm := tm{r)) представлен составным объектом U (рис. 12.3.1), вершины которого перенумерованы целыми числами от К до К + и, * означает пустой составной. . ►. ► ► ► * i i I v'\ v\ '-Л А А А Рис. 12.3.1. Составной объект, представляющий расширенный оператор присваивания Алгоритм выполняется за один обход составного U с помощью одномерного массива Т длины m = \R\. В массиве Т хранятся номера начальных вершин составных, которые представляют правые части операторов присваивания. Таким образом, если г, := tfj) — оператор присваивания и переменная г, имеет номер q9 то в T(q) хранится номер начальной вершины составного f,(r). Работа алгоритма сводится к таким действиям: если в процессе обхода некоторой правой части f,(r) указатель осматривает вершину с отметкой r\ e /?, то по номеру q переменной г\ из массива T(q) извлекается соответствующий номер начальной вершины правой части оператора присваивания, предшествующего данному, который последним изменял значение переменной г\\ ссылка на осматриваемую указателем вершину заменяется ссылкой на вершину с номером T{q). После завершения обхода составного г, модифицируется элемент Т(р)9 где р — номер переменной г,. Вход: составной U, представляющий расширенный оператор присваивания yiy, и число элементов в множестве R. Выход: составной, представляющий оператор уг, то есть композицию начальных операторов присваивания. Память: массив Т, состоящий из m элементов, указатели X, Y. Метод: X -» U; Т := 0; Т(номер(агд (X, 1, 1))) := номер(агд (X, 1, 2));
592 Часть III. Приложения Пока arg {X, 2) * * выполнить; X -» arg(X, 2); Y -» arg(X, 1, 2); В процессе обхода составного arg(X, 1, 2) выполнить; Если отметка (У) = г* & Т (номер (г^)) * 0 то Заменить ссылку на вершину Y ссылкой на Вершину Г (номер {г±)) ; Конец обхода; Г(номер(агд(Х, 1, 1))) := Т(номер(агд(Х, 1, 2))); КЦ; X -> U; Пока агд(Х, 2) * * выполнить; Если Т(номер(агд(Х, 1, 1))) * номер(агд(Х, 1, 2)) то (агд(Х, 1, 1) := *; агд(Х, 1) := *; X := агд(Х, 2)) Иначе X -» агд(Х, 2) ; КЦ; Лемма 12.3.5. Временная сложность алгоритма Композиция пропорциональна числу вершин составного U. Доказательство очевидное. Приступим теперь к описанию алгоритма построения множества соотношений ef(P, у), где Р — алгебраический базис множества М. В этом алгоритме используются алгоритмы, которые описываться здесь не будут, поскольку один из них описан в разд. 5, а другие достаточно4 известны— это алгоритмы Привести общие подвыражения и Упорядочить, которые выполняют соответственно склеивание общих подвыражений в составном, который представляет оператор уъ и упорядочение элементов оператора уг по длине термов, стоящих в правых частях операторов присваивания. Вход: составной U, который представляет операторы yiy, и т = |Д|. Выход: составной, который представляет базис множества ef(0, уг); Память: массив Г [1:ш] и указатели Z, V. Метод: Z —» U; КОМПОЗИЦИЯ {U, т) ; Z -» U;
Глава 12. Основные понятия теории программных инвариантов 593 УПОРЯДОЧИТЬ (Z); Z -» U; ПРРШЕСТИ_ОБЩ№__ПОДВЫР (Z); Z -» U; /* заполняем массив Т */ Пока arg (Z, 2) Ф * выполнить; Г(номер(агд (Z, 1, 2))) := номер(агд (Z, 1, 1)); КЦ; Z —» С7; /* выполняем обратные замены */ В процессе обхода Z выполнить; Если Г (номер(Z)) * 0 то заменить ссылку на вершину Z Ссылкой на вершину Г (номер (отметка (Z))) ; КЕ; Конец обхода; Z —» U; Т := 0; /* метим вершины */ Пока arg (Z, 2) * * выполнить; Г(номер(агд (Z, 1, 1))) := 1; КЦ; Z -» С7; /* выделяем соотношения */ Пока Z Ф * выполнять; V -> arg (Z, 1; 2); В процессе обхода V выполнить; Если V первичный и Г(номер{V)) = 1 то Прервать обход; КЕ; Конец обхода; Г(номер(г)) := 0; Если обход закончен без прерываний то Z -» arg {Z, 2) иначе Z := arg (Z, 2) КЕ; КЦ; Конец. Лемма 12.3.6. Временная сложность алгоритма Соотношения пропорциональна величине п, где п — число вершин в исходном составном. Доказательство. Первый шаг алгоритма по лемме 12.3.5 имеет линейную оценку временной сложности. Алгоритмы Упорядочить и Привести общие подвыражения, как мы знаем из разд. 10, тоже выполняются за время, линейно зависящее от числа п. Остальные шаги алгоритма выполняются, очевидно, за один обход исходного составного. Лемма доказана.
594 Часть III. Приложения Ниже приводится алгоритм решения задачи о пересечении. Вход: составные U, V, представляющие соответственно базисы Pi, ft. Выход: составной W, который представляет базис РТ множества соотношений C(Pi) n C(ft) . Память: массив Т[1:ш], указатели X, XI, Y, Z. Метод: X -» U; У -» V; W := *; Z -» W; Т := 0; Пока arg (У, 2) * * выполнить; Если Г(номер(агд (X, 1, 1))) * 0 то У := Г(номер(агд (X, 1,1))); XL := arg (X, I, 2); В процессе параллельного обхода -XI, У выполнить; Если обозначение (-XI) * обозначение (У) то /* если номер (У) & номер (-XI) лежат в Одном класссе эквивалентности то */ Применить соотношения (XI, У) ; /* иначе */ Если соотношения не применимы то Закончить аварийно обход -XI, У; XI := *; У := *; КЕ; КЕ; Конец обхода; Если обход закончился не аварийно то Z := * = *; /* заготовка для соотношения */ arg (Z, 1, 2) := -XI; arg (Z, 1, 1) := arg (X, 1, 1) ; КЕ; X -> arg {X, 2); КЦ; Конец. Лемма 12.3.7. Временная сложность алгоритма Пересечение пропорциональна величине 0(т * (nj + n^f где т = |/?|, л,- — число вершин в составном, который представляет базис Pit i = 7, 2.
Глава 12. Основные понятия теории программных инвариантов 595 Доказательство. Прежде всего покажем, что число вершин в составном, представляющем базис РТ, не превышает величины щ + п2. Пусть d\— первый элемент базиса Р\. Найдем вхождение RT(d\) в составном Р2- Если такое вхождение есть, то построим класс эквивалентности A\ = {i9j9 Г, /}, где i = uoMep(LT(d\)), j = HOMQp(RT(d\)), i = \\QMep(LT(d')), f = HOMep{RT(d'\ если d! в P2 существует. Если же d' не существует, то А\ = {Uj,f}9 где/— начальная вершина составного, который представляет подтерм RT(d\) в Р2. После этого берем следующий элемент d2 из Р\ и выполним над ним ту же процедуру, что и над d\, но с учетом класса А\9 то есть находим все подтермы в Р2, которые совпадают с RT(d2) с точностью до отметок вершин из А\. Из начальных вершин составных, представляющих соответствующие подтермы в Pi и Р2, строим класс А2 и т. д. Повторяем это до тех пор пока не исчерпаем все элементы из Р\. Если же на первом этапе приведенной выше процедуры RT(d\) не входит в Р2 как подтерм, то берем первый элемент d\ из Р2 и выполняем над ним то же самое, что и над du строя класс эквивалентности А{. Если же и RT(d') не входит в Р\ как подтерм, то берем другой элемент d2 из Р\ и все повторяем снова. В результате построим классы эквивалентности Аи А2, ..., Ат' (А\\ А2\ ..., Ат') (т\ т) вершин, являющихся начальными вершинами составных, по которым и строится базис РТ. Из процедуры построения классов эквивалентности очевидным образом следует, что число вершин в составном РТ ограничено величиной П\ + П2. Имея в своем распоряжении классы эквивалентности At (Af), построение составного РТ алгоритмом Пересечение можно выполнить за время, пропорциональное величине 0(щ + п2). Для этого необходимо лишь вставить проверку принадлежности вершин, рассматриваемых в данный момент (к которым необходимо применять соотношения), к одному и тому же классу эквивалентности. В алгоритме эта проверка подана как комментарий. Описанная процедура построения классов Ах (А{) соответствует т'-кратному вычислению конгруэнтного замыкания на ациклических (бинарных) составных, и согласно результатам разд. 6 временная сложность этой процедуры пропорциональна величине 0(m(n\ + п2)) < 0(т(щ + п2)). Таким образом, временная сложность алгоритма Пересечение ограничена величиной 0(т(п\ + 2)), что и следовало показать. Теорема 12.3.1. Алгоритм MBA (MHA) завершает свою работу за конечное число шагов. Число шагов алгоритма МВА ограничено величиной
596 Часть III. Приложения const * (m* n), где m = |/?|, п — число вершин в составном, представляющем U-Y-программу. Доказательство. Окончание работы алгоритма МВА (МНА) следует из следствия 12.3.3, теорем 12.2.4 и 12.2.6, поскольку в абсолютно свободной алгебре выполняется условие обрыва ниспадающих (возрастающих) последовательностей нормальных конгруэнтностей. Длина максимальной строго ниспадающей цепи ограничена величиной w, а построение базиса ef(N, у) и базиса пересечения (хотя число вершин и возрастает, но оно ограничено сверху числом вершин в составном, представляющем (/-К-схему программы) ограничены соответственно величинами пит* п. Таким образом, временная сложность алгоритма МВА ограничена величиной 0((т * и)2), где т = |/?|, п — размер [/-К-схемы программы. 12.4. Векторные пространства 12.4.1. Решение основных задач Пусть TD(R)— векторное аффинное пространство над некоторым полем Р. Тогда всякий оператор присваивания у е Y можно записать так: г\ :=ацГ1 +а12г2+ ... +ашгт + С\\ гг := а1хгх + а2гГг + ... + а^Гт + с2; гт := ат\Г\ + а„аГг + ... + аттгт + ст\ или г:=Аг + с, где \а\\ а\2 - а\т\ \а2\ «22 - а2т\ \um\ uml ••• а/и/и|» г = (г\, г2, • • •, гт) — вектор-столбец, а с = (сь с2,..., ст) — вектор свободных членов. Элементы множества ef(0,;y) сводятся в этом случае к зависимостям типа где г( = г, - с,-, i = 1,2 т. Эти элементы эквивалентны, очевидно, равенствам YlH + ЪЪ + ... + УтГт + Ym+ 1 = 0.
Глава 12. Основные понятия теории программных инвариантов 597 Ясно, что множество ef(0, у) не пусто, если уравнение уА = 0 (у = (Yi, Y2, • • » Ym)) имеет ненулевое решение, то есть когда система уравнений [Ylflll+Y2*21+-" + Ym*i»il=0, Yifli2+Y2fl22+--- + Y,A2=0> lYlfllw+Y2fl2in+- + YOTflmW=s0 имеет отличное от нуля решение. Это решение существует тогда и только тогда, когда определитель матрицы А равен нулю, то есть когда строки (столбцы) матрицы А линейно зависимы. Из линейной алгебры известно, что множество всех решений системы уА = О будет векторным пространством, а ее фундаментальная система решений — базисом этого пространства. В частности, если все правые части выражений г' := t(r) равны нулю, то есть t{f) = 0, то условимся считать, что фундаментальная система решений состоит из "единичных" векторов Yi = (1, 0, ..., 0), Y2 = (0, 1, ...,0), ...,у« = (0,0, ..., 1). Пусть Р— множество равенств, которые соответствуют фундаментальной системе решений уравнения уА = 0. Тогда вследствие очевидной алгебраической замкнутости векторных пространств справедливо такое утверждение. Лемма 12.4.1. С(Р) = ef(0, у), |Р|, m = |/?|, то есть С(Р) — нормальная конгруэнтность. Доказательство. Пусть Pi, Рг— базисы и |Pi|=p, |P2| = <7- Выясним, какое множество будет базисом для Т= С(Р\) п С(Рг). Положим для определенности, что р < q. Поскольку Т— подпространство как С(Р\\ так и С(Рг), то длина Т не превышает величины min(p, q)=p. Пусть \Р\\9 \Рг\— матрицы, строки которых состоят из координат векторов, базисов Pi и Рг соответственно. Выполним сначала некоторые преобразования, упрощающие строение базисов Pi и Рг и связанных с ними матриц. Выполняя преобразования, состоящие в сложении одной строки с некоторой линейной комбинацией других строк и перестановок столбцов, приведем матрицу |Р]| к такому виду: р • = 1 0 0 0 1 0 0 0 0 0 d 0 d ip+i 2р+1 1 d рр+\ *1;и+1 12ш+\ lpm+\
598 Часть III. Приложения Пусть Tu Т2 Tk— преобразования, которые выполнялись над столбцами матрицы \Р\\. Применим Ти Тъ ..., Г* к столбцам матрицы |Р2|, то есть разместим столбцы \Р2\ так, как они размещены в матрице \Р\\. Теперь, используя лишь преобразования строк (аналогичные тем, которые выполнялись над строками |Pi|), приведем \Р2\ к виду и= *11 О d 1\2 22 ... dlq . ... d2q . ... dqq . ■■ ^lm+1 •• ^2ш+1 •• "■qmJt\ О О На этом процесс преобразований базисов оканчивается. Построение базиса РТ множества Г базируется на таком простом замечании. Пусть/=(/ь ...,/m./m + 0 в базисе РХ и f' = (f\ /*,',/«+ i') в базисе Р2. Тогда /G Tnfi=fi\ i= 1, 2, ..., W+ 1, ТО еСТЬ (/Ь ...,fm/fm + \)-(f\\ -"*/т\/т + \') = 0. Значит, для построения множества РТ необходимо найти линейные комбинации векторов из Р\ и Р2, которые равны между собой. Поиск таких комбинаций можно выполнить в два этапа. На первом этапе, вычитая линейные комбинации векторов из Р\ от векторов из Р2, добиваемся того, чтобы в полученных векторах первые р координат были нулевыми. На втором этапе находим среди полученных векторов линейно зависимые. Эти зависимые векторы и дают линейные комбинации векторов из Pi и Р2, которые равны между собой. Выбирая из каждого такого вектора те комбинации векторов, которые принадлежат одному и тому же С(Р(\ i=l,2, построим базис множества Т. Поскольку эти построения достаточно просты, для большей убедительности дадим их формальное изложение. Первый этап. Вычитая йо строку матрицы |Pi'| от первой, второй и т. д. i-й строки матрицы \Р2\ умноженной на соответствующие числа, приведем \Р2\ к виду Р" \= 0 0 0 0 0 ... 0 ... 0 ... 0 ... о о О d 1\р+\ 12р+\ рр-\ О О qq 1ш+\ l2m+\ lpm+\ lqm+\
Глава 12. Основные понятия теории программных инвариантов 599 Пусть е„ е/ с* — векторы, координаты которых — строки матриц |Р/|, \Р2\ и |/Y'I соответственно, а В— матрица, которая получается из матрицы \Р2"1 имеет вид в = \d\p+\ ^2р+\ dpp+l 0 0 . • ••• . 0 dn •• ^i/?i+i •• ^2ml •• dpm+]\ •* ^qm+\ При таких обозначениях выполняются равенства: С\ -е\ -d\\e\ - ... -d\pep, с2 = е{ - d22e2 - ... - d2pep, Ср — €р С1рр€р^ / Ср + 1 — €р + 1 , (12.4.1) Второй этап. Предположим, что первые t- 1 векторов с„ t<q, i= 1,2 g, линейно независимы. Тогда cj = djici + ... +4//-1С/-1 (12.4.2) для всех у = Г, ..., д, или с, - dj\C\ - ... - djt- ic,_1 = 0. Подставим вместо с,, су, i = 1, 2, ..., г- 1,У = 1, 2, ..., g их выражения из (12.4.1), тогда (12.4.2) приводится к такому виду: ief -dj\e\ - ... -djt-\et-\') + (h\e\ + ... + hpep) = 0. Пусть dj = (e/ - d/i^i' - • • • - dt- \et- \) — первое слагаемое в этих равенствах, а РТ— множество, состоящее из djj= 1,2, ..., q. Основное свойство множества РТ дает такое утверждение. Лемма 12.4.2. С(РТ) = С(Р,) п С(Р2). Доказательство. Очевидно, что PTczC(P\) пС(Р2) и, значит, С(РТ) с С(Р\) п С(Р2). Пусть d — произвольный элемент из Т= С(Р\) п С(Р2). Тогда d = a\e\ + ... + apep и d = b\e{ + ... +bqeq'. Поскольку
600 Часть III. Приложения axex + ... + apep = bxex' + ... + bqeq, то a\=b\d\U a2 = b\dn +b2d22> ap = b\d\p + ... + bpdpp. Используя эти равенства, можно записать, что Ь\в\ + ... + bqeqq-a\ex - ... -арер = Ь\С\ + ... +bqcq. Покажем, что d— линейная комбинация векторов dp j = t, ..., q. Из (12.4.2) следует, что вектор bXd + ...+bqcq = (bl+b4a + ---+ b<jdq\)c\ + ... + (fe,-1 + brfn-1 + • • • + M<?<- 0C>-1 = 0. Поскольку сь ..., c,-i линейно независимы, то (Ь( + ЬД» + ... + Ь^-) = О- Значит, d = btdn + ... + b^ и d G C(PT). Поскольку элемент d произвольный, то С(Р7) D С(РХ) п С(Р2), откуда получаем равенство С^Г) = C(P0 n С(Р2). Лемма доказана. Для построения векторов dj из РТ приведем матрицу В к диагональной форме. Обозначим полученную матрицу В\ и пусть i'i, ..., i*— номера нулевых строк в S', а С|, С2, ..., C/v — преобразования, которые применялись к В в процессе построения В'. Применим эти преобразования к |Р2'|. Тогда векторы dj, координаты которых составляют строки ijj = 1, 2, ..., к, будут составлять базис множества Т Следствие 12.4.1. Если С(РТ) = С(Л) п С(Р2) п ... п С(Р*), то построение РТ не зависит от порядка выбора Р„ i = 1,2, ..., /:. Следствие 12.4.2. С(РТ) — нормальная конгруэнтность. Доказательство. Пусть \РТ\ имеет диагональный вид и (ал, ..., а„, ..., oc/m + i)— вектор-строка \РТ\, в которой а,,= 1, ап = а,2= ... = а,-,--1 =0. Построим оператор присваивания у = (п := t\(r), ...., rm := tm(r)\ в котором f,(r) = -a,iri - ... -a,7_ir/_i -a//+ir/ + i - ... - aimrm-aim + ь если rf,- = (ап, ..., а,,, ..., a,m + i) E РГ, и f,(r) = г,-, в противном случае. Очевидно, что С(Р7) = е#0, у). Из следствия 12.4.2 и теорем 12.2.3, 12.2.4, 12.2.7 следует справедливость такого утверждения. Следствие 12.4.3. Алгоритм МВА (МНА) завершает работу за конечное число шагов. Временная сложность алгоритма МВА (МНА) пропорциональна величине п * т3,46. Доказательство. Число изменений множества соотношений в каждом состоянии ограничено величиной т. Тогда общее количество итераций алгоритма равно п * т. На каждой итерации алгоритма решается система из т линейных уравнений и строится, если необходимо, базис пересечения. Обе операции требуют времени 0(т2,81) (а учитывая последние достижения теории сложности алгоритмов, эту оценку можно снизить до OinC ) [4].
Глава 12. Основные понятия теории программных инвариантов 601 Таким образом, окончательная оценка временной сложности выражается величиной 0(п * т3,46), что и необходимо было доказать. 12.4.2. Свободные абелевы группы и коммутативные полугруппы Пусть TD(R) — свободная абелева группа. Тогда ее можно рассматривать как конечно-порожденный модуль над кольцом целых чисел Z. В этом случае элементы ef(0, у) имеют вид Yiri' + Yitf+.-.+Ym^O, (12.4.3) где Yi-e Z, /= 1, 2, ..., т. Возможность сведения задачи поиска инвариантов для программ, рассматриваемых над свободными абелевыми группами, к такой же задаче в случае, когда TD(R) — векторное пространство, дает такая теорема. Теорема 12.4.1. Всякая область целостности изоморфно вкладывается в поле своих дробей [42]. Доказательство. Кольцо целых чисел Z. является областью целостности, а полем его дробей является поле рациональных чисел. Значит, кольцо Z можно изоморфно вложить в поле рациональных чисел и выполнять поиск инвариантов, считая, что TD(R) — векторное пространство над полем рациональных чисел. Построив инварианты, их необходимо привести к виду (12.4.3). Для этого необходимо выполнить преобразования, которые уничтожают знаменатели в коэффициентах, если они в них есть. В случае, когда TD(R)— свободная коммутативная полугруппа, элементы ef(0, у) имеют вид Yin' + ... +Y*r*' = Y*+i>*+i'+ ••• +ЧтГт\ (12.4.4) где Y/ — целые неотрицательные числа. Снова используя способ изоморфного вложения одной алгебраической структуры в другую, как и прежде, можно свести задачу поиска инвариантов для программ, рассматриваемых над свободными коммутативными полугруппами, к поиску таковых, когда TD(R) — свободная абелева группа. Основанием для этого служит такая теорема. Теорема 12.4.2. Всякая коммутативная полугруппа, в которой выполняется закон сокращения, изоморфно вкладывается в абелеву группу [42]. Сложение коэффициентов в TD(R) сводится к сложению коэффициентов при одинаковых переменных г,- 6 R. Следовательно, закон сокращения в TD(R) имеет место, и можно строить инварианты описанным выше способом. После
602 Часть III. Приложения этого полученные инварианты необходимо привести к виду (12.4.4). Таким образом, справедлива теорема. Теорема 12.4.3. Для всякой U-Y-программы, рассматриваемой над: а) векторным пространством, б) свободной абелевой группой, в)свободной коммутативной полугруппой, алгоритм МВА (МНА) завершает свою работу за конечное число шагов. Временная оценка сложности алгоритма МВА пропорциональная величине п * ш3,46, п = |Л|, т = \R\. Заметим что, когда условия ие U, которые встречаются в £/-У-программе, являются равенствами, то с помощью алгоритма МВА (МНА) можно учитывать такие условия. Действительно, при построении базиса ef(A/, у) для перехода (а, м, у, Ь) учет условия и выполняется путем добавления к базису множества М условия и с последующей проверкой принадлежности и к М. Если и е М, то базис М не меняется, иначе базис М расширяется путем добавления к нему условия и. Если же переход включает отрицание некоторого условия, то есть имеет вид (а, -м, у, Ь\ где и — равенство, то ef(Af, у) строится обычным способом. 12.4.3. Примеры Рассмотрим примеры некоторых £/-У-программ и, применяя к ним алгоритм МВА, построим для них множества инвариантных соотношений. Пример 1. Рассмотрим пример программы умножения квадратных матриц порядка п — MULT(X, У, п). Элементы исходных матриц X и У размещены в двумерных массивах, а результат размещается в массиве Z. При умножении матриц выполняется переход от двумерных массивов к одномерным. Приведенная ниже U-Y- программа (алгебра данных которой считается абсолютно свободной) записана на более общем языке, чем язык стандартных £/-У-программ, поскольку она включает операторы обработки массивов. Но от такой £/-У-программы можно перейти к обычной стандартной U-Y- программе, если игнорировать присваивания элементам массива и условия проверки, связанные с массивами (рис. 12.4.2). В этой программе имеем: □ /?= {ij9k9tu h, h,U,t5}\ □ Л = {аь, 1,2,3,4,5,6,а*}; ПУ= {уиУ2,Уз,У4>У5>Уб,ь}\ П U= {1, Hi, «2, «3» ->Mi, -iM2> -1W3};
Глава 12. Основные понятия теории программных инвариантов 603 О S = {(ао, 1, уи 1), (1, 1, уь 2), (2, 1, у3, 3), (3, 1, у4,4), (4, -*,, е, 3), (4, и,, у5, 5), (5, -.иг, е, 2), (5, и2, Уб, 6), (6, -.из, е, 1,), (6, «3, е, а*)}; 1 1/у,=(/:=1;> I 1/у2=(/:=1;) -►2 -►3 -и,/(е;) 1 а* 1/y3=(f:=/n+/; zff,):=0; 1/y4=(f2:=yn+/; f,:=/n+/; /5:=/сл+/; zft):=zft)+xft)Vft): /с:=/с+1;) ^2/(е;) I »Г-(к>п)1уЖ,1+Г,) 1 «* :(/>л)/у.И'':=/'+1;) u,=(/>n)/e;) Рис. 12.4.1. С/-/-программа MULT(X, У, л) **0 I ->1 -►2 -►3 -иЛч) Y 1 а* 1/У1=(/:=1;) | 1/у2=(/':=1;) 1/у,=(/:=ул+/; /с:=1;) 1/у4=(/г:=ул+/; f,:=/n+/; tb:=kn+i; /с:=/с+1;) I ii,=№>n)/y5)=(/:=y+1;) I ^=(У>п)/у6)=Г/:=/+1;) и>=(1>п)1ъ) Рис. 12.4.2. Стандартная U-У-программа MULT(X, У, /?) На первом этапе работы алгоритма МВА выполняется такая последовательность действий: 1. AU = 0;C={ao}. 2. а(1)=...=а(а0) = 0. 3. а(я*)=1. 4. Строим базис еА(Л^о, yi), он, очевидно, состоит из единственного соотношения i = 1, то есть N\ = {i = 1}.
604 Часть III. Приложения 5. а(1)=1;С={1}. 6. Строим базис ef(7Vb Уг), очевидно, что N2 = {* = 1,7 = 1 }• 7. а(2)=1;С={2}. 8. Строим базис ef(N2, уъ\ снова очевидно, что N3 = {* = 1, 7 = 1, £ = i, ti = in + i}. 9. a(3)=l;C={3}. 10. Строим базис ef(N3, ул): i:=l; 1 :=1; *:=1; ft:=2; t\ := w 4- i; t\ := In 4- 1 h :=7'n + i; после суперпозиции f2 := In 4- 1 гъ :=jn + i; Гз := In + 1 Г4 :=j>2 4- fc; ^4 := In + 1 f5 := kn 4- i; ^5 := In + 1 *:=fc+l; отсюда получаем базис N4: N4= {i= 1,7= l9k = 2,tx = in + i9t2 = tut3 = tut4 = ti9t5 = ti}. 11. a(4)=l,C={4}. 12. Строим базис еДМ*, >»5): 7*:=1; 7 = 2; Jt:=2; ft = 2; fi := in 4- i; fi = In 4- 1; f2 := t\\ после суперпозиции f2 = In 4- l; f3 := t\\ h := In 4- 1; f4 := fj; *4 := lw 4- 1; t5:=h\ t5:=ln+ 1; 7':=7+l; отсюда получаем базис N5: N5 = {* = 1,7 = 2Д=7, f! = in4-i, t2 = tuh = tu t4 = tut5 = t{}.
Глава 12. Основные понятия теории программных инвариантов 605 13. а(5)=1,С={5}. 14. Строим базис ef^, Уб), не вдаваясь в подробности (поскольку они почти аналогичны тем, которые были в п. 12)), находим #6 = {« = 2,7 = I, к =;, г, = In + 1, f2 = *ь *з = *ь *4 = *i, г5 = г,}. 15. а(6)=1,С={6}. 16. Базис Na не строим, поскольку а(а*) = 1 (см. п.З)). На этом первый этап работы алгоритма завершается. Второй этап починается при С = {1, 2, Ъ, 4, 5, 6, а*}. 1. Выбираем состояние 1 из С, то есть С = {2, 3, 4, 5, 6, а*}. Последовательно имеем N = N\y cf(Ne, е) = N6. Строим по базисам N и М> новое значение базиса N. Но это значение, очевидно, равно пустому множеству, поскольку единственное соотношение i = 1 не является следствием соотношений из Ne. Поскольку N Ф N\9 то N\ полагаем равным N, то есть пустому множеству. 2. М = 0, С={2,3,4,5,6,д*}. 3. Выбираем состояние 2 из С, то есть С = {3, 4, 5, 6, а*}, N = N2 и строим базисы ef(N5, е) и ef(Ni, у2). Первый равен УУ5, a ef(jVb у2) = {у = 1}. Новое значение переменной N равно, по тем же причинам, что и в предыдущем случае, пустому множеству. Поскольку N * N2, то N2 становится пустым множеством, а С= {3, 4, 5, 6, а*}. 4. Выбираем состояние 3 из С, то есть С = {4, 5, 6, я*}, N = N3 = {i = 1. j = i, fc = i, fi = m + i}. Строим базисы ef(N2, уз) и ef(yv4, e). Первый равен ef(0, уз) = [к = 1; fi =у'л + /}, а второй — N4= {l = 1Д = 2, *1 =7Л + I, Г2 = *1, *3 = ГЬ *4 = *Ь t5 = t\}. По базисам N4 и ef(0, уз) строим базис пересечения N4 = C(Jt = 1, U -jn + 0 п С(/ = I,) = Uk = 2, /i =;и 4- i). Отсюда получаем, что искомый базис состоит из единственного соотношения t\ =jn + /, то есть N = {t\=jn + /}. Поскольку N * N^ то Ni полагаем равным N, аС= {4, 5, 6, я*}. 5. Выбираем состояние 4 из С, то есть С = {5, 6, а*}, и строим базис ef(N3, У4): fl '2 h h h k: =jn + i; =jn + i; =jn + r, => + k\ = kn + /; = Jt+l; после суперпозиции и упорядочения *:=*+1; Г! :=;п+г, Г2 :=уи+г, t3:=jn + i\ U:=jn + k\ t5 := &и + /,
606 Часть III. Приложения откуда получаем N4 = {*i =jn + i, t2 = fi, h = U}. Строим базис пересечения N по множествам C({i=l, 7=1, к = 2, Л =7*п + I, ^2 = tu h = tu U-tu t$ = U}) и C(7V4). В результате получаем базис N= {t\=jn + i, h = tuh = t\}. Поскольку базис Nф Л/д, to /V4 становится равным N, а С= {3, 5, 6, а*}. 6. Выбирая 3 из С и повторяя построение базисов, получаем N = N3= [t\ =jn + j}, а С = {5, 6, a*}. 7. Выбираем 5 из С, N получает значение N5. Строим базис ef(N4, ys)- fi :=7'w + i; 7:=7 + !'. /2 := fi; после суперпозиции t\ '.=jn + i\ r3:=ri; и упорядочения h:=jn + i- 7':=7+ 1; t3:=jn + i. Отсюда получаем N5= {t\=jn + i, t2 = t\, Гз = М- Поскольку N*N5, то C= {2, 6, a*} и строим базис пересечения по базисами N и N5, то есть N5={t2 = tut3 = t{}. 8. Выбираем состояние 2 из С, то есть С= {6, а*}. Поскольку #2 = 0, то # = ЛГ2иС={6,а*}. 9. Выбираем состояние 6 из С, N становится равным No и строим ef(/V6, ув)' t2:=tu После суперпозиции t2 := fi; Гз:=^; Ничего не меняется *з:=*1; 1 :=i+ 1; 1 :=i 4- 1; отсюда получаем N= C(N) nC(N6)= [t2 = tu h = t\). Поскольку N*N6, то Ne становится равным iV,aC={l,a*}. 10. Выбираем состояние 1 из С, то есть С = {а*}. Поскольку N\ = 0, то ничего не меняется. 11. Выбираем а* из С, то есть С = 0, и базис Na+ = Ne= {t2 = t\, h = t{}. Но поскольку С = 0, то алгоритм завершает свою работу. 12. Пример 2. Рассмотрим уже знакомый нам из разд. 2.4 пример U-Y- программы УМН(*, у) — программы умножения целых положительных чисел х и у. Для удобства изобразим эту программу в виде графа и проследим работу алгоритма МВА для этой программы. Алгебра данных считается свободной абелевой полугруппой. Для этой программы имеем: □ Я={и,г}; □ Д = {а0, 1,а*};
Глава 12. Основные понятия теории программных инвариантов 607 а0 i 1/у,=(а:=х; z:=0;) -► 1 -> а* y=(u\=uA\ I w=0/(e;) z:=z+y;) Рис. 12.4.3. U-У-программа УМН(х.у) О Y={yuy2,e}\ □ [/={l,Wl = (w = 0),^Ml}; □ 5={(ао, hyu 1), (1,-1Мьу2, 1), (l,ni,e, я*)}; а /v0 = 0. (/-^-программа УМН(х, j) Первый этап работы алгоритма МВА: 1. Л^=0. 2. а(1) = 0;ос(а*) = 0. 3. а(а*)=1. 4. Строим базис ef(AL ,yi). u := х; Суперпозиция u -u-x х = 0; ничего не меняет z' = ^ = 0. z:=0; Значит, фундаментальная система решений имеет вид: (1, 0), (0, 1), то есть базис ef( Na , у\) составляет множество N\ = [и = х, z = 0}, матрица которого И 0 -jti Р(1.1) = 0 1 0 После этого ос(1) становится равным 1, а С = 0. Таким образом, первый этап завершается. Второй этап работы алгоритма МВА начинается при С = {l,a*} uN = N\.
608 Часть III. Приложения 1. Выбираем состояние 1 и строим базис множества ef(Nb УгУ и :=л:; z := 0; После суперпозиции и := х - 1; и = и - х + 1 = 0; и := w - 1; z := у; или z' = г - у = 0. z := z + у; Значит, базис N{ составляют соотношения и=х- I, z = y, а его матрица имеет вид |1 0 -jc + ll |0 1 -у \. 2. Поскольку N Ф N\9 то строим базис пересечения: |1 0 —jcl Р(1,2) = Р(Ы) = Р(1,2) = О 1 О 1 0 -jc + ll О 1 -у О 0 1 О 1 -у| •*2+У*1- Следовательно, получаем такие соотношения: z - у + (и - * 4- 1)у = = г + и;у-лгу = 0 или z + иу = лгу. Множество С становится равным {1, а*}. 3. Выбираем состояние 1 и строим базис N\ для ef(Nb уг) при N\ = {z + «y = ^y}: г:=-му + ху; и:=и-1; и:=и-1; после суперпозиции г .= _wy + ;су + у. или z := z + у; и' = и + 1 = и; z' = Z - ху - У = иу, откуда получаем систему Yi"' +Y2Z' = 0, равносильную системе Yi" + Y2wy = 0, решая которую, получаем (у, 1). Этому решению соответствует соотношение z-xy-y + у(и + l) = z + wy-xy = 0 или z + иу = ху.
Глава 12. Основные понятия теории программных инвариантов 609 4. Поскольку базисы совпадают, то С= {а*}, выбираем а из С и строим ef(Nu e). Построение базиса этого множества сводится к добавлению соотношения и = 0 к N\9 поскольку оно не является следствием соотношений из N\. Таким образом, в состоянии а* имеют место такие соотношения: и = 0, z + иу = ху. Следствием этого множества соотношений является, в частности, соотношение z = xy9 на основе которого можно сделать вывод, что программа УМН(л:, у) правильно вычисляет результат. 12.5. Задачи и упражнения 1. Запишите fZ-У-программу Дел(гь z2) в виде регулярного выражения и составного объекта. 2. Убедитесь, что на втором этапе работы алгоритма МВА для U-Y- программы Дел(г1, Zi) множества соотношений в состояниях не зависят от выбора состояний из множества С при их генерации. 3. Примените алгоритм МВА к приведенной ниже tZ-У-программе и постройте для нее инвариантные соотношения: г := х; Пока г > у выполнять ' г := г - у; g := g + 1; КЦ; Стоп; Конец. 4. Постройте базис множества соотношений ef(N^ у*) для программы умножения матриц и проследите все шаги алгоритма генерации соотношений для данного перехода. 5. Используя информацию о вершинах, составляющих классы Аи А2, ...*Ат (А\\ А2\ ..., Ат")9 приведите вариант более быстрого алгоритма, чем алгоритм Пересечение.
610 Часть III. Приложения 6. Постройте множество инвариантов для U- К-программы деления целых чисел с остатком— программа Дел(гь zi) (алгебра данных— свободная абелева группа). 1/y,=('.:=*i; г,:=1; г4:=0; и,= (г,<гг)/уг= (г, =2гг; =2г3;) >1 ■^<г2)/(е;) и2= (г,>гг)/у3=С г -",= 1/(у. >2 ,:='.•',; J 3 = г,:=г?/2; | f3=f,/2;) X -.(r^rj/le;) u3=(r3=1/e;) ->а* Рис.12.4.4. Граф переходов L/ - У-программы Ren(z<\, z2)
Список литературы 1. Александров П. С. Введение в теорию групп. — М: Наука, 1980. — 144 с. 2. Александров А. Д., Нецветаев Н. Ю. Геометрия. — М.: Наука, 1990. — 671 с. 3. Анисимов А. В. О групповых языках // Кибернетика. — 1972. № 4. — С. 18-24. 4. Ахо А., Хопкрофт Дж., Ульман Дж. Анализ и построение вычислительных алгоритмов.— М.: Мир, 1975.—457 с. 5. Биркгоф Г., Барти Т. Современная прикладная алгебра. — М.: Мир, 1976. — 400 с. 6. Компьютерная алгебра (Символьные и алгебраические вычисления) // Под ред. Б. Бухбергера, Дж. Коллинза, Р. Лооса. — М.: Мир, 1986. —386 с. 7. Ван дер Варден Б. Л. Алгебра. — М.: Наука, 1976. — 648 с. 8. Вирт Н. Систематическое программирование. Введение. — М.: Мир, 1977. — 183 с. 9. Васильев Ю. Л., Ветухновский Ф. Я., Глаголев В. В. и др. Дискретная математика и математические вопросы кибернетики. — М.: Наука, 1974. Т.1 — 311с. 10. Виленкин Н. Я. Комбинаторика. — М.: Наука, 1969. — 161 с. 11. Виленкин Н. Я. Популярная комбинаторика. — М.: Наука, 1975. — 207 с. 12. Вирт Н. Систематическое программирование. — М: Мир, 1978. — 183 с. 13. Гизбург С. Математическая теория контекстно-свободных языков. — М.: Мир, 1970. —326 с. 14. Гладкий А. В. Формальные грамматики и языки. — М.: Наука, 1973. — 316 с. 15. Глушков В. М. Синтез цифровых автоматов. — М.: Физматгиз, 1962. — 562 с. 16. Глушков В. М. Введение в кибернетику.— Киев: Изд-во АН УССР, 1964.— 324 с. 17. Глушков В. М., Летичевский А .А. Теория дискретных преобразователей // Избр. вопр. алгебры и логики. — Новосибирск: Наука, 1973. — С. 5-39. 18. Глушков В. М., Летичевский А. А., Годлевский А. Б. Методы математической биологии. Кн. 6. Методы синтеза математических моделей биологических систем: Уч. пособие для вузов. — Киев: Вища шк., 1983. — 264 с. 19. Глушков В. М., Цейтлин Г. Е., Ющенко Е. Л. Алгебра, языки, программирование. — Киев: Наук, думка, 1985. — 431 с.
612 Список литературы 20. Годлевский А. Б., Кривой С. Л. О проектировании эффективных алгоритмов приведения автоматов для некоторых отношений эквивалентности // Кибернетика. — 1989. №6. — С. 37-43. 21. Годлевский А. Б., Кривой С. Л. Трансформационный синтез эффективных алгоритмов с учетом дополнительных спецификаций // Кибернетика. — 1986. №6. — С. 34--43. 22. Годлевский А. Б., Капитонова Ю. В., Кривой С. Л., Летичевский А. А. Итеративные методы анализа программ // Кибернетика. — 1989. № 2. — С. 9-19. 23. Гринченко Т. О., Стогний А. О. Машинный интеллект и новые информационные технологии. — Киев: Манускрипт, 1993. — 164 с. 24. Грэй П. Логика, алгебра и базы данных. — М.: Машиностроение, 1989. — 359 с. 25. Гудстейн Р. Л. Рекурсивный математический анализ. — М.: Наука, 1970. — 472 с. 26. Дэвэнпорт Сире, Турнье. Компьютерная алгебра. — М.: Мир, 1990. — 543 с. 27. Евстигнеев В. А., Касьянов В. Н. Теория графов (Алгоритмы обработки деревьев). — Новосибирск: Наука, 1994. — 360 с. 28. Ежов И. И., Скороход А. И., Ядренко М. И. Элементы комбинаторики. — М.: Наука, 1975. —79 с. 29. Емеличев В. А., Мельников О. И. и др. Лекции по теории графов. — М.: Наука, 1990. — 382 с. 30. Калужнин Л. А. Введение в общую алгебру. — М.: Наука, 1973. — 447 с. 31. Клини С. Введение в метаматематику. — М.: ИЛ, 1957. — 674 с. 32. Клини С. Математическая логика. — М.: Мир, 1973. — 480 с. 33. Кон П. Универсальная алгебра. — М.: Мир, 1968. — 351 с. 34. Котов В. Е., Сабельфельд В. К. Теория схем программ. — М.: Наука, 1991. — 247 с. 35. Кривой С. Л. Об алгоритме построения базиса пересечения конечно- порожденных свободных групп // Кибернетика. — 1982. №4. — С. 5-10. 36. Кривой С. Л. Об алгоритмах построения конгруэнтних замыканий конечных автоматов // Кибернетика и систем, анализ. — 1994. № 1. — С. 34-44. 37. Кривой С. Л. Проблема унификации в эквациональных теориях // Кибернетика и систем, анализ. — 1997. №6. — С. 143-172. 38. Кук Д., Бейз Г. Компьютерная математика. — М.: Мир, 1990. — 383 с. 39. Куратовский К., Мостовский А. Теория множеств. — М.: Мир, 1970. — 416 с. 40. Курош А. Г. Теория групп. — М.: Наука, 1967. — 648 с. 41. Курош А. Г. Общая алгебра. Лекции 1969-70 гг. — М.: Наука, 1972. — 159 с. 42. Курош А. Г. Лекции по общей алгебре. — М.: Наука, 1972. — 399 с. 43. Лавров И. А., Максимова Л. Л. Задачи по теории множеств, математической логике и теории алгоритмов. — М.: Наука, 1975. — 239 с. 44. Летичевский А. А., Годлевский А. Б., Кривой С. Л. Об эффективном алгоритме построения базиса подгруппы свободной группы // Кибернетика. — 1981. № 3. — С. 107-116.
Список литературы 613 45. Летичевский А. А., Кривой С. Л. О реализации алгоритма Нильсена в системе алгебраического программирования АПС-1 // Кибернетика.— 1994. №5. —С. 48-53. 46. Линдон Р. Заметки по логике. — М: Мир, 1968. — 128 с. 47. Лупанов О. Б. О сравнении двух типов источников // Пробл. кибернетики. — М.: Физматгиз., 1963. Вып. 2. — С. 321-326. 48. Луцкий Г. М., Кривой С. Л., Печурин М. К. Основы дискретной математики (Учебное пособие). — Киев: ВИПОЛ, 1995. — 252 с. (на украинском языке). 49. Магнус В., Каррас А., Солитэр Д. Комбинаторная теория групп.— М.: Мир, 1974. —456 с. 50. Мальцев А. И. Алгебраические системы. — М.: Наука, 1970. — 370 с. 51. Мальцев А. И. Алгоритмы и рекурсивные функции. — М.: Наука, 1986. — 367 с. 52. Марков А. А., Нагорный Н. М. Теория алгорифмов.— М.: ФАЗИСТ, 1996.— 448 с. 53. Мендельсон Э. Введение в математическую логику. — М.: Мир, 1988. — 320 с. 54. Новиков П. С. Элементы математической логики. — М.: Наука, 1973. — 399 с. 55. Озкарахан Э. Машины баз данных и управление базами данных. — М.: Мир, 1989. —695 с. 56. Оре О. Теория графов. — М.: Наука, 1980. — 336 с. 57. Павленко В. А. Комбинаторная проблема Поста для двух пар слов. — Киев, 1985. — 65 с. (Препр / АН УССР. Ин-т математики). 58. Плоткин Б. И. Универсальная алгебра, алгебраическая логика и базы данных. — М.: Наука, 1991.—446с. 59. Пост Е. Конечные комбинаторные процессы, формулировка 1 // Машины Поста / Под ред. В. А. Успенского. — М.: Наука, 1979. — С. 89-95. 60. Райзер Г. Комбинаторная математика. — М.: Мир, 1966. — 154 с. 61. Редько В. Н. Некоторые вопросы теории языков // Кибернетика. — 1965. № 4. — С. 27-33. 62. Савельев Л. Я. Комбинаторика и вероятность.— Новосибирск: Наука, 1975.— 452 с. 63. Скорняков Л. А. Элементы теории структур. — М.: Наука, 1982. — 158 с. 64. Справочная книга по математической логике. Теория рекурсии. — М.: Мир, 1983. Т.З. — С. 134-165. 65. Столл Р. Множества, логика, аксиоматические теории. — М.: Просвещение, 1968. —230 с. 66. Тейз А., Грибомон П., Луи Ж. и др. Логический подход к искусственному интеллекту. — М.: Мир, 1990. —429 с. 67. Тейз А., Грибомон П., Юлен А., Пирот А. и др. Логический подход к искусственному интеллекту (От модальной логики к логике баз данных). — М.: Мир, 1998. —494 с.
614 Список литературы 68. Уилсон Р. Введение в теорию графов. — М.: Мир, 1977. — 207 с. 69. Феллер В. Введение в теорию вероятностей. — М.: Мир, 1964. Т. 1. — 376 с. 70. Филд А., Харрисон П. Функциональное программирование. — М.: Мир, 1993. — 638 с. 71. Форд Л. Р., Фалкерсон Д. Р. Потоки в сетях. — М.: Мир, 1966. — 229 с. 72. Френкель А., Бар-Хиллел И. Основания теории множеств. — М.: Мир, 1966. — 328 с. 73. Холл М. Комбинаторика. — М.: Мир, 1970. — 234 с. 74. Хомский Н. О некоторых формальных свойствах грамматик // Киберн. сборник. — 1962. № 5. — С. 37-123. 75. Чень Ч., Ли Р. Математическая логика и автоматическое доказательство теорем. — М.: Наука, 1983. — 256 с. 76. Artificial Intel igence and Symbolic Mathematical Computing // Lecture Notes in Comput. Sci. Intern. Conf. AIMC-1, Karlsruhe, Germany, (Ed. J. Calmet, J. A. Campbell). — 1992. N 737. — 1148 p. 77. Ben-Ari M. Mathematical Logic for Computer Science. — Prentice Holl International (UK) Ltd., 1993. — 305 p. 78. Gabbay D. Elementary Logic (A procedural perspective). — Prentice Holl Europe, 1998. —359 p. 79. Goldlatt R. Logics of Time and Computation // Lecture Notes. — Center for the Study of Language and Information. — 1987. № 7. — P 243-281. 80. Letichevsky A. A., Kapitonova J. V., Konozenko S. V. Computations in APS // Infor- matikav91. Franko-Sovietique Simposium: Theoretical Computer Science & Methods of Compilation and Program Construction. — Grenoble, 1991. — P. 133-152. 81. Post E. L. A variant of a recursive unsolvable problem // Bull, of Math. Soc. — 1946, V.52, N 4. — P. 264-268. 82. Revuz D. Minimization of acyclic deterministic automata in linear time. — Theoret. Сотр. Sci., 1992. — P. 181-189. 83. Downey P. J., Sethy., Tarjan. E. Variation on the common subexpression problem // J. ASM., 1980. —P. 758-771.
Капитонова Юлия Владимировна, доктор физико-математических наук, профессор, лауреат Государственных премий СССР и Украины, заведующая отделом института кибернетики им. В. М. Глушкова Национальной академии наук Украины, автор около 250 работ в области теоретического и прикладного программирования. Кривой Сергей Лукьянович, доктор физико-математических наук, профессор, ведущий научный сотрудник института кибернетики им. В. М. Глушкова, автор более 100 работ в области теоретического и прикладного программирования. Летичевский Александр Адольфович, доктор физико- математических наук, профессор, член-корреспондент НАН Украины, лауреат Государственных премий СССР и Украины, заведующий отделом института кибернетики им. В. М. Глушкова, автор около 200 работ по теоретическому и прикладному программированию. Луцкий Георгий Михайлович, доктор технических наук, профессор, заведующий кафедрой национального технического университета "Киевский политехнический институт", автор около 350 работ в области вычислительной техники. ЛЕКЦИИ по ДИСКРЕТНОЙ МАТЕМАТИКЕ В учебном пособии представлены разделы, традиционно изучаемые в рамках дисциплины "Основы дискретной математики", и рассмотрен круг вопросов, возникающих при решении задач теоретического и прикладного характера в процессе проектирования программного и технического оборудования компьютерных систем. Содержатся сведения по общей алгебре, основам теории алгоритмов, теории автоматов, математической логике, теории графов и формальных грамматик. Содержание разделов книги взаимно связано друг с другом и иллюстрирует целостность изучаемой науки. В конце каждого раздела приведены упражнения и задачи, помогающие усвоить и закрепить излагаемый материал. ISBN 5-94157-546-7 БХВ-Петербург 190005, Санкт-Петербург, Измайловский пр., 29 E-mail: mail@bhv.ru Internet: www.bhv.ru тел.: (812)251-42-44 фате: (812) 251-12-95 My* ty\p