Text
                    Ю.А.АЛЯЕВ, С.Ф.ТЮРИН
Дискретная
математика
и математическая
логика
Допущено
Учебно-методическим объединением по образованию
в области прикладной информатики
в качестве учебника
для студентов высших учебных заведений,
обучающихся по специальности
“Прикладная информатика (по областям)”
и другим экономическим специальностям
МОСКВА
“ФИНАНСЫ И СТАТИСТИКА”
2006

УДК 51:33(075.8) ББК 22.176я73+22.12я73 А60 РЕЦЕНЗЕНТЫ: Кафедра прикладной математики и информатики Пермского государственного университета (заведующий кафедрой С.В. Русаков, доктор физико-математических наук); В.А. Харитонов, доктор технических наук, профессор кафедры недвижимости Пермского государственного технического университета, заслуженный работник высшей школы Российской Федерации Аляев Ю.А. А60 Дискретная математика и математическая логика: учеб- ник/ Ю.А. Аляев, С. Ф. Тюрин. — М.: Финансы и статистика, 2006. - 368 с.: ил. ISBN 5-279-03045-7 Рассматриваются основные темы дискретной математики и математи- ческой логики: теория множеств. Элементы комбинаторики, теория графов, теория переключательных функций и автоматов, теория кодирования, фор- мальная логика, логические исчисления, формальные теории и теория алго- ритмов, элементы теории нечетких множеств. Сложные вопросы математики рассматриваются на простых примерах. Большая часть материала снабжена методическими разработками авторов. Имеются задания для самостоятель- ной работы студентов. Для студентов вузов, обучающихся по специальностям «Прикладная ин- форматика в экономике», «Экономика и управление на предприятии», а так- же для преподавателей. 2404000000 - 166 010(01)-2006 67 - 2006 ISBN 5-279-03045-7 УДК 51:33(075.8) ББК22.176я73+22.12я73 © Аляев Ю.А., Тюрин С.Ф., 2006
СОДЕРЖАНИЕ Предисловие........................................... 9 Ч а с т ь 1. ДИСКРЕТНАЯ МАТЕМАТИКА.................... 11 1. Множества и алгебраические системы. Булевы алгебры .... 11 1.1. Основные понятия теории множеств.............. 11 1.2. Основные операции над множествами............. 13 1.3. Декартово произведение множеств............... 16 1.4. Соответствия и функции........................ 16 1.5. Отношения .................................... 19 1.6. Использование множеств в языке Паскаль........ 21 2. Элементы общей алгебры ........................... 26 2.1. Операции на множествах ....................... 26 2.2. Группа подстановок Галуа...................... 29 2.3. Алгебра множеств (алгебра Кантора)............ 32 2.4. Алгебраические системы. Решетки............... 33 2.5. Задание множеств конституентами............... 36 2.6. Решение уравнений в алгебре множеств ......... 37 3. Элементы комбинаторики ............................ 39 3.1. Комбинаторные вычисления...................... 39 3.2. Основные понятия комбинаторики ............... 40 3.3. Размещения................................... 42 3.4. Перестановки ................................. 45 3.5. Сочетания .................................... 47 3.6. Треугольник Паскаля........................... 50 3.7. Бином Ньютона ................................ 52 3.8. Решение комбинаторных уравнений .............. 54 4. Основные понятия теории графов..................... 57 4.1. Способы задания графов........................ 57 4.2. Характеристики графов......................... 63 4.3. Понятие о задачах на графах .................. 70 4.4. Задача о Ханойской башне...................... 72 3
5. Переключательные функции и способы их задания..... 76 5.1. Понятие о переключательных функциях........... 76 5.2. Двоичные переключательные функции и способы их задания ........................................ 78 5.3. Основные бинарные логические операции......... 82 5.4. Понятие о переключательных схемах и техниче- ской реализации переключательных функций......... 88 5.5. Использование логических операций в теории графов 92 6. Элементарные двоичные переключательные функции и функциональная полнота систем переключательных функций 94 6.1. Элементарные переключательные функции одной переменной ...............'........................ 94 6.2. Элементарные переключательные функции двух переменных ...................................... 95 6.3. Функциональная полнота систем переключатель- ных функций ....................................... 97 6.4. Базисы представления переключательных функций .. 100 6.5. Пример анализа и определения свойств ПФ, задан- ной десятичным номером............................ 102 7. Основные законы булевой алгебры и преобразование переключательных функций ............................. 105 7.1. Основные законы булевой алгебры переключатель- ных функций ...................................... 105 7.2. Равносильные преобразования. Упрощение фор- мул алгебры переключательных функций ............. 107 7.3. Преобразование форм представления переклю- чательных функций ............................... 112 8. Минимизация переключательных функций.............. 118 8.1. Цель минимизации переключательных функций .... 118 8.2. Основные понятия и определения, используемые при минимизации................................... 120 4
8.3. Аналитические методы минимизации переключатель- ных функций ...................................... 123 8.4. Минимизация переключательных функций по кар- там Карно......................................... 129 8.5. Метод поразрядного сравнения рабочих и запрещен- ных наборов.................................... 136 8.6. Минимизация переключательных функций, задан- ных в базисе {ф, И, НЕ} ........................ 142 8.7. Минимизация систем переключательных функций .. 142 8.8. Минимизация переключательных функций мето- дом неопределенных коэффициентов ................. 155 9. Понятие об автомате и его математическом описании. 157 9.1. Основные определения теории конечных автоматов . 157 9.2. Описание конечных детерминированных автома- тов таблицами переходов-выходов и графами ....'.. 159 9.3. Понятие о технической интерпретации конечных автоматов......................................... 164 9.4. Синтез комбинационных автоматов в заданном базисе 169 9.5. Булева производная.......................... 176 9.6. Элементарные автоматы памяти на основе комби- национного автомата и задержки ................... 179 9.7. Синтез автомата - распознавателя последова- тельности ....................................... 186 10. Элементы теории кодирования...................... 193 10.1. Понятие о кодировании ...................... 193 10.2. Системы счисления как основа различных кодов ... 194 10.3. Понятие о помехоустойчивом кодировании...... 199 10.4. Кодирование по Хэммингу..................... 202 10.5. Кодирование с использованием циклических кодов и математического аппарата умножения и деления полиномов. Сигнатурный анализ .................... 206 10.6. Понятие о криптографической защите информации 212 10.7. Понятие о сжатии информации................. 213 5
Часть 2. МАТЕМАТИЧЕСКАЯ ЛОГИКА И ТЕОРИЯ АЛГОРИТМОВ................................. 214 11. Понятие об алгоритмах. Схемы алгоритмов......... 214 11.1. Понятие об алгоритме и теории алгоритмов... 214 11.2. Схемы алгоритмов ......................... 216 11.3. Рекурсивные функции...................... 219 11.4. Машина Тьюринга............................ 224 11.5. Машина Поста ............................ 231 11.6. Нормальные алгорифмы А.А. Маркова.......... 233 11.7. Универсальная абстрактная машина........... 234 11.8. Разрешимость в теории алгоритмов. Проблема самоприменимости ................................ 236 11.9. Сложность алгоритма ...................:... 239 11.10. Представление схемы алгоритма эквивалентным автоматом........................................ 240 11.11. Представление схемы алгоритма микропрограм- мой с двумя типами микрокоманд .................. 252 12. Элементы формальной логики...................... 255 12.1. Предмет формальной логики.................. 255 12.2. Понятие и его виды ........................ 257 12.3. Отношения между понятиями.................. 258 12.4. Операции над понятиями..................... 260 12.5. Суждение и его характеристика.............. 261 13. Умозаключение................................... 268 13.1. Виды умозаключений ........................ 268 13.2. Непосредственное умозаключение............. 269 13.3. Опосредованное дедуктивное умозаключение. Фигуры силлогизма................................ 275 13.4. Дополнительные виды силлогизмов............ 277 13.5. Индуктивные умозаключения. Математическая индукция ........................................ 278 14. Логика высказываний............................. 279 14.1. Семантика логики высказываний.............. 279 14.2. Синтаксис логики высказываний. Формулы логи- ки высказываний ................................. 281 6
14.3. Формализация высказываний ................... 282 14.4. Интерпретации, разрешимость, выполнимость, общезначимость.................................... 282 14.5. Логическая равносильность. Законы логики .... 283 14.6. Формы представления формул логики высказываний 285 14.7. Проблема дедукции в логике высказываний...... 286 15. Проверка правильности логических выводов. Метод резолюций........................................ 287 15.1. Закон контрапозиции ......................... 287 15.2. Логическое следование. Проверка правильности логических выводов ............................... 288 15.3. Силлогизмы в логике высказываний ............ 288 15.4. Получение следствий из данных посылок........ 291 15.5. Метод резолюций............................. 292 16. Синтаксис и семантика языка логики предикатов..... 293 16.1. Понятие предиката............................ 293 16.2. Кванторы и связанные переменные.............. 294 16.3. Синтаксис языка логики предикатов. Формулы логики предикатов и формализация суждений......... 295 16.4. Семантика формул логики предикатов .......... 296 17. Тождественные преобразования формул логики предикатов...................................... 297 17.1. Операции над предикатами .................... 297 17.2. Основные равносильности логики предикатов ... 299 17.3. Тождественные преобразования формул.......... 302 17.4. Универсум Эрбрана............................ 305 18. Использование метода резолюций в логике предикатов ................................... 308 18.1. Подстановка и унификация..................... 308 18.2. Резольвенция и факторизация.................. 309 18.3. Метод резолюций в логике предикатов.......... 310 18.4. Принцип логического программирования ........ 312 7
19. Логические исчисления ........................... 315 19.1. Понятие о формальных теориях ............... 315 19.2. Исчисление высказываний..................... 319 19.3. Исчисление предикатов ...................... 322 19.4. Система натурного вывода.................... 325 . 19.5. Понятие о математической лингвистике......... 327 19.6. Формальный язык ............................ 328 19.7. Формальные грамматики и их свойства......... 330 19.8. Теоремы Гёделя.............................. 339 20. Неклассические логики ......................... 340 20.1. Современные модальные логики................ 340 20.2. Понятие о теории неопределенности.......... 347 20.3. Элементы теории нечетких множеств и нечет- кая логика ...................................... 348 20.4. Нечеткие алгоритмы ......................... 354 Литература........................................... 355 Приложение 1. Варианты контрольных заданий по дисципли- не «Дискретная математика»........................... 358 Приложение 2. Варианты контрольных заданий по дисциплине «Математическая логика» ............................. 361
ПРЕДИСЛОВИЕ Учебное пособие предназначено для изучения двух дисцип- лин - «Дискретная математика» и «Математическая логика». Знание дискретной математики, «цифровое мышление» — не- обходимый элемент информационной культуры специалиста. Дискретная математика — раздел математики, занимающийся изучением свойств объектов дискретного и (или) конечного ха- рактера, к которым могут быть отнесены конечные группы, ко- нечные графы, многие математические модели преобразователей информации. Все эти объекты и модели основываются на теоре- тико-множественных понятиях. Как отдельная учебная дисциплина в большинстве вузов Рос- сийской Федерации дискретная математика выделилась в 70—80-е годы XX в. Математическая логика — это логика, развиваемая математи- ческим методом. Для нее характерно использование формальных языков с точным синтаксисом и четкой семантикой, однозначно определяющими понимание формул. Потребность в такой логи- ке выявилась в начале XX в. в связи с интенсивной разработкой основайий математики, возникновением, уточнением понятия алгоритма и других вопросов математической науки. Значение математической логики для науки не исчерпывается ее математи- ческими приложениями, поскольку рассуждать и доказывать приходится во всех науках. Поэтому математическая логика с полным правом может быть охарактеризована как логика на сов- ременном этапе. Математическая логика раньше являлась отдельным разде- лом дискретной математики. Только в конце XX в. в государ- ственных образовательных стандартах даже «нематематических» специальностей она представляется как отдельная дисциплина. В последние годы пришло понимание того, что логика — еди- ная наука, поэтому формальную логику необходимо рассматри- вать как раздел математической, что и практикуется теперь в ве- дущих вузах. Это позволяет обеспечить синтез двух подходов в преподавании логики — традиционного и символического - и предоставляет возможность пояснения сложных вопросов мате- матики на простых и наглядных примерах, которые могут быть легко представлены как формально, так и неформально. 9
Авторы стремились, с одной стороны, как можно более конк- ретизировать абстрактные понятия математики на «информаци- онных» и «технических» примерах, а с другой стороны, проводи- ли идеологию цифрового и числового кодирования математичес- ких объектов. Кодирование — это и основа информационных тех- нологий новой цивилизации, и предоставление возможности формирования большого количества вариантов заданий для са- мостоятельной работы (см. приложения 1 и 2) по многим разде- лам изучаемых дисциплин. Само задание, как правило, представляется натуральным чис- лом. Таковы задания по теории множеств и переключательным функциям, где номером кодируется некоторое множество на оп- ределенном универсуме либо переключательная функция. В теме «Автоматы» задание для самостоятельной работы — последова- тельность символов, например, входных наборов. В пособии используется термин «переключательные функ- ции» в дискретной математике, который в последнее время ут- вердился и в государственных образовательных стандартах, хотя в математической логике, как правило, употребляется более конк- ретный термин — «логическая функция». Свой скромный труд авторы посвящают учителям — Л.Ф. Ви- кентьеву , ТИ. Когану, В.А. Несмелову.
Часть 1 ДИСКРЕТНАЯ МАТЕМАТИКА 1. Множества и алгебраические системы. Булевы алгебры 1.1. Основные понятия теории множеств Понятия «множество», «элемент множества» относят к ос- новным, исходным понятиям математики. Принято считать, что эти понятия, как и любые другие исходные понятия некоторой математической теории, не определяются [24]. Действительно, всякое определение содержит другие понятия, логически пред- шествующие определяемому, поэтому по крайней мере первое определение теории должно содержать неопределяемые понятия. В качестве исходных обычно выбираются понятия, в понимании которых не возникает существенных разногласий (возможные разногласия не нарушают правильности ни одного положения теории). Вообще в дискретной математике имеются специальные принципы построения математических теорий. Под множеством понимают любое собрание определенных и различимых между собой объектов, мыслимых как единое це- лое. В этом нестрогом, интуитивном определении, принадлежа- щем одному из родоначальников современной теории мно- жеств, немецкому математику Г. Кантору (1845—1918) сущест- венным является то обстоятельство, что собрание различных объектов рассматривается как один объект [24]. Нам будет впол- не достаточно интуитивного понимания понятий «множество», «быть элементом множества». Объекты, образующие множест- во, называют элементами множества и обозначаются, как пра- вило, строчными, а множества — прописными буквами латин- ского алфавита. Для обозначения принадлежности элемента m множеству М будем использовать запись me М, где знак е является стилиза- цией первой буквы греческого слова сап (есть, быть) [9—10]. 11
Множество, содержащее конечное число элементов, называ- ют конечным. В теории множеств используется и такое необычное множество, как пустое множество, не содержащее ни одного эле- мента и обозначаемое символом 0. Число элементов конечного множества М называют мощностью и обозначают |М|. Мощность бесконечного множества — более сложное понятие. Каждое множество полностью задается своими элементами. Для этого можно перечислить элементы конечного множества или указать свойства элементов. Обычно для задания множеств используются фигурные скобки {}. Например: А= {а, Ь, с, d} В = {i : i — четное число}. А — конечное множество, состоящее из четырех элементов: a, b, с, d. В — бесконечное множество, заданное свойством элементов i, которое записывается справа от двоеточия. По существу это свойство задается так называемым одноместным предикатом P(i) («быть четным числом»), о которых речь пойдет в дальнейшем. Множество может быть задано также некоторой порождающей процедурой. Весьма распространенной порождающей процеду- рой является образование множеств из других множеств с по- мощью операций над множествами. В множестве могут быть выделены подмножества. Если каж- дый элемент множества С принадлежит множеству D, то множе- ство С называется подмножеством множества D. Это обозначает- ся как С с D (D э С), где с — знак включения (вспомним знак принадлежности е). Говорят, что множества С и D находятся в отношении включения, а элементы множества к самому множе- ству - в отношении принадлежности. Если Ас В и А* В, то А называют собственным, строгим или истинным подмножеством и обозначают А с В, где с — знак стро- гого включения. Для каждого множества М существует множество, элемента- ми которого являются все его подмножества. Такое множество называется булеаном множества и обозначается В(М), а множе- ство М — универсумом (универсальным) и обозначается I [9—10]. Пусть I = {а, Ь}, тогда В(1) = {0, {а}, {Ь}, {а, Ь}}. Для I - {а, Ь, с}, В(1) = {0, {а}, {Ь}, {с}, {а, Ь}, {а, с}, {Ь, с}, {а, Ь, с}}. 12
Множества часто задают графически с помощью диаграмм Эйлера (рис. 1). Рис. 1. Пример диаграммы Эйлера для множеств {{a, b, с}, {b, d, е}} в универсуме {a, b, с, d, е} На рис. 1 заданы множества {{a, b, с}, {b, d, е}} в универсуме I = {а, Ь, с, d, е}, замкнутая линия, называемая кругом Эйлера, соответствует одному из рассматриваемых множеств и ограничи- вает его элементы, при этом рамка, в верхнем правом углу кото- рой обозначено I, ограничивает элементы универсума (универ- сального множества). 1.2. Основные операции над множествами Объединением множеств А и В называется множество AU В, все элементы которого являются элементами множества А или мно- жества В: А и В = {х : х е А или х е В}, где и — знак объединения. На диаграмме Эйлера это может быть показано штриховкой (рис. 2). Рис. 2. Объединение множеств А и В 13
Пересечением множеств А и В называется множество А О В, элементы которого являются элементами обоих множеств: АП В = {х:х е Аихе В}, где П — знак пересечения. Соответствующая диаграмма Эйлера изображена на рис. 3. Рис. 3. Пересечение множеств А Л В Разностью множеств А и В называется множество А\В, состо- ящее из элементов, принадлежащих множеству А и не принадле- жащих множеству В: А\В = {х : х е Аих ё В), где е — знак непринадлежности (отрицание принадлежности); \ — знак разности. Соответствующая диаграмма Эйлера изображена на рис. 4. Рис. 4. Разность множеств А\В Так, если А = {1, 2, 3, 4, 5}, В = {4, 6}, то А\В = {1, 2, 3, 5}, В\А = {6}. 14
Симметрической разностью множеств А и В называется мно- жество А © В = (А\В) U (В\А), изображенное на рис. 5, © - знак симметрической разности. Так, если А = {1, 2, 3}, В = {3, 4, 5}, то А © В = {1, 2, 4, 5}. Рассмотренные операции являются двухместными (бинарны- ми). Имеется одноместная (унарная) операция дополнения. Дополнением множества А является множество А, содержащее элементы универсума I, не включенные в множество А: А={х:хеА}, где- — знак дополнения, «инверсия», читается «не А». Соответствующая диаграмма Эйлера изображена на рис. 6. Рис. 6. Дополнение множества А до универсума I Так, если А = {3, 4}, а I = {1, 2, 3, 4, 5}, то А= {1, 2, 5}. Используя рассмотренные операции, можно выражать одни множества через другие, при этом сначала выполняется одноме- стная операция дополнения, затем пересечения и только потом — операция объединения (разности). Для изменения порядка вы- полнения операций в выражении используют скобки. 15
1.3. Декартово произведение множеств Одним из важных понятий теории множеств является поня- тие декартова произведения множеств. Декартовым произведением А В множеств А и В называется множество М вида М = {(a,, bj): а, е А, Ц е В}. Здесь круглыми скобками () обозначается последователь- ность, т.е. множество, в котором зафиксирован порядок элемен- тов (упорядоченное множество). Другое название такой последо- вательности — вектор (кортеж). Элементы, образующие вектор, называются координатами или компонентами, нумеруемыми сле- ва направо. Векторы длины 2 часто называют упорядоченными парами, длины 3 - тройками и т.д. Вектор U длины п иногда на- зывают n-й («энкой»). Проекцией np.U вектора U называется его i-й компонент. Таким образом, М = А • В — это множество пар. В частности, если А = В, то обе координаты принадлежат одному множеству А2 (В2). Аналогично понятию декартова произведения двух множеств определяется декартово произведение п множеств: п мгм2-...мп=пм; = i=l = М = {(ти,т;2,...,т(п):ти eMj,mi2 eM2,...,min eMn} [2-3]. 1.4. Соответствия и функции Соответствием между множествами А и В называется под- множество их декартова произведения G с А • В. Если (a, b) g G, то b соответствует а при соответствии G. Множество проекций np,G называется областью определения соответствия, множество np2G — областью значений соответ- ствия. Если np2G = А, то соответствие полностью определенное (в противном случае — частичное). Если np2G = В, то соответ- ствие сюрьективно. Множество всех b е В, соответствующих элементу а, в А на- зывается образом а в В при соответствии G. Множество всех а, которым соответствует Ь, называется прообразом b в А при соот- ветствии G. 16
Всюду определенное соответствие называют отображением и иногда записывают как Г: Хн Y, где н> — знак отображения. Подмножество FcX Y называется функцией, если для каж- дого элемента х, х е X найдется не более одного элемента у е Y в парах вида (х, у) e F. При этом если для каждого элемента х име- ется один элемент у, то функция полностью определена, в про- тивном случае — частично определена (недоопределена). Множе- ство X — область определения функции F, множество Y — область значений функции. Часто вместо записи (х, у) е F используют запись у - F(x), при этом элемент х называют аргументом или переменной, а у — значением функции F. Количество аргументов определяет местность функции. Сопоставим с декартовым произведением двух множеств пря- моугольную решетку, узлы которой взаимно однозначно соответ- ствуют элементам декартова произведения [9—10]. На рис. 7,а изображено подмножество декартова произведе- ния множеств X = {хг, х2, х3, х4} и Y = {у1; у2, у3}, не являющееся Рис. 7. Подмножества декартова произведения X • Y: а — р! с X • Y, не являющееся функ- цией, так как одному значению х мо- жет соответствовать два значения у; б — F2 с X • Y, являющееся полностью определенной функцией; в — F3 с X • Y, являющееся недоопре- деленной функцией, не определен- ной на значении аргумента х3. 2~278 17
функцией, на рис. 1,6 - являющееся полностью определенной функцией; на рис. 7,в — являющееся частично определенной функцией. Соответствие G между множествами X и Y называется взаим- но однозначным, если каждому элементу х е X соответствует определенный элемент у е Y, и, наоборот, каждый элемент у е Y оказывается поставленным в соответствие одному элементу х е X. Соответствие между множеством функций и. множеством чи- сел называется функционалом [19]. Часто говорят «функционал качества». Например, функционалом может быть определенный интег- рал, ставящий в соответствие некоторой функции число. Соответствие между двумя множествами функций называется оператором. Например, имеется оператор дифференцирования. Множество А называется эквивалентным множеству В, если существует взаимнооднозначное соответствие множеств А и В, это обозначается как А=ВилиА~В. Этот факт позволяет определять неизвестную мощность од- них множеств по известной мощности других, им эквивалент- ным. Множества, эквивалентные (равномощные) множеству на- туральных чисел, называются счетными. В счетных множествах возможна нумерация элементов. Пример множества, не являю- щегося счетным - множество всех действительных чисел отрезка [0,1]. Это доказывается теоремой Кантора [19]. Попробуем про- нумеровать это множество. Расположим все числа, изображен- ные бесконечными десятичными дробями, в порядке нумерации: 0, ап а12 а13... а21 а22 а23 ••• 0, а31 а32 а33... где первая цифра индекса - номер бесконечной десятичной дро- би. Рассмотрим теперь любую бесконечную десятичную дробь 0, Ь, Ь2 Ь3... такую, что Ь, а,,, Ь2 а22, Ь3 а33, и т.д. Такая дробь не входит в указанную последовательность, так как отличается от первого числа первой цифрой, от второго числа — второй цифрой и т.д. Следовательно, все числа из отрезка [0,1] не могут быть про- 18
нумерованы, т.е. это множество несчетно. Его мощность называ- ется континуум, и все эквивалентные ему множества называются континуальными. Так, множество всех подмножеств счетного множества континуально. 1.5. Отношения Подмножество Rc Мп называется n-местным отношением на множестве М. Говорят, что а,, ..., ап находятся в отношении п, если (аь ... an) е R. Одноместное отношение (свойство, признак) — это просто подмножество М. Наиболее часто встречающиеся и хорошо изученные — бинарные отношения, для них R с М2. Если а,Ь находятся в отношении R, то это часто записывают в виде aRb. Примеры бинарных отношений на множестве людей: «быть сыном»; «служить в одном полку»; «любить»; «дружить». Примером трехместного (тернарного) отношения является множество троек нападающих в хоккейной команде или отноше- ние «ставить оценку», определяемое следующим образом: «пре- подаватель х ставит студенту у оценку z». Можно определить обратное отношение R'1. Например, для отношения < обратным является отношение >. Рассмотрим свойства отношений. Отношение R называется рефлексивным, если для любого а е М имеет место aRa. Отношение антирефлексивно, если ни для какого a g М не выполняется aRa. Отношение < рефлексивно, а отношение «быть сыном» анти- рефлексивно. Таким образом, рефлексивность — свойство выполнимости отношения для каждого элемента подмножества R относительно самого себя. Отношение R симметрично, если из aRb следует bRa (это мо- жет быть записано с использованием стрелки следования aRb -> bRa). В противном случае отношение R несимметрично, т. е. если aRb истинно, то bRa ложно. Отношение R антисимметрич- но, если из ajRaj и ajRa, следует, что а, = а,. Отношение дружбы симметрично. Отношение любви, как правило, несимметрично. Отношение < антисимметрично, действительно, если а < b и b < а, то а = Ь. Отношение R симмет- рично тогда и только тогда,, когда R = R'1. 2* 19
Отношение R транзитивно, если для любых а, Ь, с из aRb и bRc следует aRc. Это можно записать с использованием знака конъюнкции & (союз «И») и символа -> «следует»: (aRb) & (bRc) -> aRc. Например, отношение «являться начальником» транзитивно. Отношение дружбы нетранзитивно. Для любого отношения R от- ношение R, называемое транзитивным замыканием R, определя- ется следующим образом: aRb, если существует цепочка из п элементов а = а,, а2, ..., ап_15 ап = Ь, в которой между соседними элементами выполнено R: a,Ra2, a2Ra3,..., an.[Rb. Транзитивным замыканием отношения «быть сыном» являет- ся отношение «быть прямым потомком», являющееся объедине- нием отношений «быть сыном», «быть внуком», «быть правну- ком» и т.д. Отношение называется отношением эквивалентности, если оно рефлексивно, симметрично, транзитивно. Таково отношение равенства. Отношение нестрогого порядка рефлексивно, антисиммет- рично и транзитивно. Отношение строгого порядка антирефлексивно, антисиммет- рично и транзитивно. Отношения < и > для чисел — отношения нестрогого порядка, отношения <, > — отношения строгого порядка. Пример лексикографического упорядочения слов в слова- рях: лес(лето, где ( — символ упорядочения. Отношение доминирования (например, на множестве спорт- сменов или спортивных команд) обозначается ». Это отноше- ние антирефлексивно, несимметрично и нетранзитивно. Отношения (relations) являются основным объектом совре- менных систем управления реляционными базами данных (СУБД), в которых отношения задаются, как правило, на произ- ведении различных множеств. В теории СУБД, в отличие от «ака- демической» записи отношений, принятой в математике, ис- пользуются содержательные записи, например: <Иван, Мария, цветы, восьмое марта> — четырехместное от- ношение «Дарить», <Профессор Иванов, студент Петров, отлич- но> - тернарное отношение «Ставить оценку». 20
Чаще всего отношения в СУБД задаются таблицами, столбцы которых называют также атрибутами, полями, а строки — корте- жами, записями. Реляционная база данных, т. е. база данных, основанных на отношениях, представляет собой совокупность таблиц. Табли- ца состоит из строк и столбцов. Столбец, т. е. поле, задается так называемыми реквизитами: именем, типом (числовой, призна- ковый и т.д.), длиной, точностью для числовых данных. Запись, таким образом, — это совокупность связанных полей. Таблица — совокупность записей одной структуры. Одно из по- лей является так называемым первичным ключом, значения ко- торого однозначно указывают на соответствующие ему записи (отношения). 1.6. Использование множеств в языке Паскаль В языке Паскаль множеством называется конечный неупоря- доченный набор элементов [2]. Все элементы одного множества должны принадлежать к одному и тому же типу, который называ- ется базовым типом данного множества. В качестве базового типа можно использовать любой простой тип, кроме вещественного. Множество должно быть описано в разделе описания типов. Об- щий вид описания: Туре имя=веб of 6азовый_тип; Пример. Пусть в нашем распоряжении имеется множество монет раз- личного достоинства: 1 р, 5 р и 10 р. Из этих монет можно соста- вить следующее подмножества (их число равно 23 = 8): 1 р; 5 р; 10 р; 1 р, 5 р; 1 р, 10 р; 5 р, 10 р; 1 р, 5 р, 10 р; пустое множество. Эти подмножества и будут принадлежать некоторому множе- ству sum. Сами элементы (монеты), из которых состоит подмно- жество, пусть принадлежат некоторому базовому типу monet. Тогда описание будет иметь вид: Type monet=(rl,г5,г10); Var sum:set of monet; 21
В программе значение переменной типа «множество» изобра- жается путем перечисления конкретных компонентов подмноже- ства, разделенных запятыми и заключенных в скобки [ ]. Такие изображения называются конструкторами множеств, например: [rl], [г 1, г10]. С переменной типа set допустимы следующие операции: =, О, >=, <=, In, :=. Пример испбльзования операции присваивания: Type n=1..9; Var k:set of n; к:=[3..б]; В этом случае в ячейку к будет записана комбинация [3,4, 5, 6]. Операции = и О используются для проверки эквивалентнос- ти: два значения переменной типа set считаются равными, если они состоят из одних и тех же элементов. Пример. [l,3]=[3fl] - дает True; [1..3]=[1,2,3] - дает True; [1]<>[2] - дает True; [1,2,3]=[1,4,3] - дает False. Операции >= и <= используются для проверки принадлеж- ности одного множества другому: так, если множество а содер- жится в множестве Ь, то а <= b дает True. Например: [1, 2] <= [1, 2, 3] дает True. Операция In используется для установления наличия опреде- ленного элемента в множестве. Так, если х есть элемент множест- ва Ь, то (х In b) дает True. Пример: [3] In [1,2,3] дает True. Если а и b — операнды, имеющие один и тот же конкретный тип, то к ним применимы операции: + объединение; — дополнение; * пересечение. Так, а + b представляет собой объединение множества эле- ментов, входящих в а или в b (одинаковые элементы не повторя- 22
ются); а — b — это множество элементов, которые есть в а, но от- сутствуют в b; а * b представляет собой объединение множества элементов, входящих в множества а и b одновременно. Пример. [1,3]+[1,4] - дает [1,3,4]; [1,3]-[1,4] - дает [3]; [1,3]*[1,4] - дает [1]. Операция а: = а + х добавляет элемент х к множеству а, а опе- рация а : = а — х исключает х из а. Рассмотрим несколько примеров решения задач на Паскале, использующих множества [3]. Задача 1. Задать множество целых чисел от заданного числа до числа в три раза большего, чем заданное. Решение. Используем описание множеств на языке Паскаль и операторы для работы с множествами. Если количество элементов п в множестве известно заранее, то задача решается так: const п=50; type setnum=set of byte; const mn:setnum=[n..3*n] ; {В тексте программы остается использовать создан- ное множество}. Если начальное значение задается пользователем, то задача решается так: type setnum=set of byte; var mn:setnum; n,i:byte; begin write('задайте первый элемент множества '); readin(n); if 3*n<256 then for i:=n to 3*n do mn:=mn+[i] else write('заданное количество элементов не поместится в множестве '); end. Задача 2. Вывести на экран элементы множества, содержа- щего прописные и строчные буквы латинского алфавита. 23
Решение. В цикле проверим вхождение всех элементов базо- вого типа и выведем те, которые входят в множество. var zniset of 'A'..'z'; i:char; begin for i:='A' to 'Z' do z if i in zn then write(i,' '); for i:='a' to 'z' do if i in zn then write(i,' '); end. Задача 3. Написать программу, которая в заданном слове, состоящем из строчных букв, определяет составляющие его бук- вы, глухие и звонкие согласные, затем все согласные и все глас- ные буквы. Решение. type setchar=set of char; const GL: set char = ['п','ф','к','т','ш','с','х', 'ц','ч','щ']; {множество глухих согласных} ZV:setchar=[/л'/'м,,,н',,Р,г'й,,,6,,'в,,,г,,,д', 'ж','з']; {множество звонких согласных} ALF:string='абвгдеёжзийклмнопрстуфхцчшщъыьэюя'; {строка - русский алфавит} var s:string; {заданное русское слово} i:integer; {номер обрабатываемого символа в слове} mgl:setchar; {множество глухих согласных} mzv:setchar; {множество звонких согласных} buk:setchar; {множество всех букв слова} sog:setchar; {множество согласных слова} gla:setchar; {множество гласных слова} procedure print(s:string;mn:setchar); {процедура вывода элементов множества с предшест- вующим комментарием} var i:integer; begin write(s,' '); for i:=l to length(ALF) do if ALF[i] in mn then write(ALF[i],' '); writein; end; 24
begin write('Введите русское слово '); readln(s); ’mgl: = [ ] ; mzv:=[]; buk:=[]; {вначале множества букв пусты} for i:=l to length(s) do begin buk:=buk+[s[i]]; {объединили букву с множеством букв} if s[i] in GL then mgl:=mgl+[s[i] ] {объединили глухую согласную с множеством глухих согласных} else if s[i] in ZV then mzv:=mzv+[s[i]]; {объединили звонкую согласную с множест- вом звонких согласных} end; {находим множество согласных букв} sog:=mgl+mzv; {находим множество гласных букв} gla:=buk-(sog+['ь','ъ']); print('слово состоит из букв; ',buk); print('гласные буквы: ',gla); print('согласные буквы: ',sog); print('глухие согласные: ',mgl); print('звонкие согласные; ',mzv); end. Задача 4. Написать программу для нахождения простых чи- сел с помощью «решета Эратосфена». Решение. 1. Поместим все числа между 2 и п (п <= 255) в решето. 2. Выберем из решета наименьшее из чисел. 3. Поместим этб число среди простых. 4. Переберем и вынем из решета все числа, кратные данному. 5. Если решето не пустое, то повторим шаги 2—5. const п=255; {количество элементов в множестве} var interval, {решето} prost:set of 2..n; {множество простых чисел} next:integer; {наименьшее число в решете} с:integer; {новое простое число} j:integer; {переменная для удаления из реше- та чисел,кратных текущему простому числу} 25
begin interval:=[2..n]; prost := [ ]; next : = 2; repeat {поиск очередного простого числа} while not (next in interval) do next: = succ (next); , prost:=prost+[next]; c:=2*next-l; j:=next; while j<=n do begin interval:=interval-[j]; j:=j=c; end; until intervals[]; end. 2. Элементы общей алгебры 2.1. Операции на множествах Частным случаем функции является операция, т.е. функцио- нальное отображение вида <р: Мпн> М, где знак отображения. Такая функция называется п-арной операцией, в ней области определения аргументов и область значений функции совпадают, n-местная операция по п элементам множества определяет (п + 1)-й элемент этого же множества [9—10]. Алгеброй А называется совокупность О множества М с задан- ными на нем операциями S = {фи, ф12,... Ф1П), Ф21»--- Ф2п2’ Фтр Фт2,... Фтпт}> А = <M,S>, где множество М - носитель, S — сиг- натура алгебры [9—10, 19]. Каждый первый индекс у идентифика- тора операции указывает ее местность. Алгебра типа <М, ф2>, т.е. алгебра с бинарной операцией, на- зывается группоидом. Рассмотрим квадрат с вершинами в точках а1; а2, а3, а4, прону- мерованных против часовой стрелки, и повороты квадрата вокруг центра также против часовой стрелки, переводящие вершины в другие вершины [19]. Таких поворотов бесконечное множество: на углы 0, , я, 3 у, 2п, 5 у, ..., однако они задают всего четыре различных отображения множества вершин в себя, соответству- ющих первым четырем поворотам. 26
Можно сказать, что задана алгебра А = < М, <р] > с основным множеством М = {аь а2, а3, а4} и четырьмя унарными операциями Мн М, которые обозначим буквами а, Р, v, 5. Зададим эти опе- рации табл. 1. Таблица 1 Унарные операции алгебры поворотов квадрата а Р V 8 а1 а1 а2 а3 а4 а2 а2 а3 а4 а1 аз аз а4 а1 а2 а4 а4 а1 Э2 а3 О Л Л jTt 2 2 Можно интерпретировать такие операции также циклически- ми сдвигами битов информации вида: а1а2а3а4. Множество 0 = {а, В, v, 5} отображений вершин в себя вместе с бинарной операцией О2 О последовательного выполнения отоб- ражений (выполнения поворота за поворотом, композиции пово- ротов), которую обозначим символом «И», образует алгебру с би- нарной операцией <0, П> [19]. Она задается табл. 2, в которой на пересечении строки i и столбца] записан результат операции i nj. Таблица 2 Бинарные операции О2 ь-> 0 алгебры 27
Можно представить бинарной операцией, например, смеши- вание красок, когда из двух цветов получается третий, входящий во множество всех цветов. Пусть А = <М, ф2> - группоид. Обозначим, как и в предыду- щем примере, <р2 символом О [9]. Тогда элемент n е М называется правым нейтральным элементом группоида А, если для всякого m е М выполняется равенство m О n = т. Для левого нейтрального элемента выполняется равенство п о m = т. . В дальнейшем для краткости вместо слов «все», «всякий» будем использовать символ V (перевернутая буква А — первая буква английского слова All — все, этот символ называется еще квантором общности; квантор существования обозначается 3 и означает «существует», «имеется», «есть»). Элемент п, являющийся одновременно и левым, и правым нейтральным элементом, называют двухсторонним нейтральным элементом или просто нейтральным элементом. Для смешивания красок нейтральный элемент — бесцветный лак. Если группоид <М, О> мультипликативный, т.е. его бинарная операция П имеет тип умножения (), то нейтральный элемент называется единицей и обозначается 1. Если группоид аддитив- ный, т.е. бинарная операция И имеет тип сложения (+), то нейтральный элемент называется нулем и обозначается 0 [9]. Нейтральный элемент в группоиде всегда единственный. Коммутативный группоид, т.е. группоид, в котором (Vx, у е М) (хПу = уПх), называется коммутативным или абелевым. Группоид, в котором выполняется закон ассоциативности (Vx, у, z е М) (хП (y)3z) = (xQy) 13z), называется ассоциативным или полугруппой. Полугруппа с единицей называется моноидом. В алгебре пово- ротов квадрата (см. табл. 2) единицей служит поворот на нулевой угол (а). 28
Группой называется полугруппа с единицей, в которой для каждого элемента а существует элемент а'1, называемый обрат- ным (аОа-1 = а-1С!а = п), и каждое из уравнений аПх = Ь, уПа = b обладает единственным решением [9]. В алгебре поворотов квадрата (см. табл. 2), являющейся груп- пой, обратным к данному повороту является поворот, дополняю- щий его до 2л: р-‘ = 5, v-‘ = v, 5‘1=р. Группа, все элементы которой являются степенями одного элемента а, называется циклической. Циклическая группа всегда абелева. Множество рациональных чисел, не содержащее нуля, с опе- рацией умножения является абелевой группой. Обратным к эле- 1 менту а является элемент —. а 2.2. Группа подстановок Галуа Рассмотрим знаменитую группу подстановок, которую ис- следовал выдающийся французский математик Э. Галуа (1811— 1832) [9]. Обладая феноменальными математическими способностями, он настолько опередил современников в своих теоретических ис- следованиях, что при жизни так и не был понят даже великими Фурье1 и Пуассоном2 и не был принят в Политехническую школу - центр математической мысли Франции тех лет. «Неис- товый республиканец», «любимец богов» был отважным револю- ционером, сидел в тюрьме за участие в антиправительственных выступлениях и погиб на дуэли в возрасте 20 лет. Основную часть своих результатов, согласно легенде, он записал ночью перед ду- элью, а признан был только спустя много лет после смерти. Хотя его труды составляют всего около 60 страниц, многое в них еще до сих пор не понято математиками и ждет своего разрешения. 1 Фурье Жан Батист Жозеф (1768-1830), французский математик и физик. 2 Пуассон (Poisson) Симеон Дени (1781-1840), французский математик, механик и физик. 29
Подстановкой n-й степени называется взаимно однозначное отображение множества из п элементов в себя. Рассмотрим всего три элемента: х(, х2, х3. Существует шесть вариантов последовательностей из трех элементов: Х1Х2Х3, Х2Х3Х1, Х!Х3Х2, X3XjX2, X2X!X3, Х3Х2Хк Запишем порождение этих вариантов следующим образом: <х1х2х3 <Х2Х3Х1 Эта запись означает, что Х| переходит (отображается) в х2, х2 — ВХ3, Х3 — ВХ|. Число таких возможных подстановок равно числу вариантов последовательностей из трех элементов. Обозначим возможные подстановки: [ Х1Х2Х3 | . f Х1Х2Х3 | |Х|Х2Х3 а = , b = , с = |<Х1Х2Х3 J ^Х1Х3Х2 J <X2XIX3 Х1Х2Х3>| ГХ1Х2Х3 ГХ1Х2Х3 , е = , f = Х2Х3Х|/ lx3xlx2j <Х3Х2Х1 Произведением подстановок назовем последовательное вы- полнение сначала первой, а затем второй из перемножаемых подстановок. Например, с- b = <х1х2х3 <Х2Х1Х3 'х^Хз <Х1Х3Х2 Х,Х,Х, I =е. lx3xlx2J Таким образом, имеем алгебру <П, п>, где П — множество подстановок {a, b, с, d, е, f}, И — бинарная операция П2н> П. Соответствующая таблица Кэли для алгебры постановок Галуа имеет вид табл. 3. 30
Таблица 3 Таблица Кэли для алгебры подстановок Галуа j i а ь С d е f а а ь с d е f ' ь ь а d С f е с с е а f ь d d d f ь е а С е е с f а d ь f f d е ь С а ipj В такой алгебре выполняется закон ассоциативности, но не выполняется закон коммутативности. Нейтральным элементом является подстановка а. Группа - это полугруппа взаимно однозначных преобразова- ний, причем именно однозначность гарантирует наличие обрат- ного преобразования. Можно сказать, что в группе при любом числе умножений не теряется информация об исходном элемен- те: если известно, на что умножали, всегда можно узнать, что ум- ножали. Для полугруппы это верно не всегда. Пусть дана диск- ретная система с конечным числом состояний S = {S,, ..., Sn}, на вход которой может быть подано входное воздействие из множе- ства х = {хь ..., хт}. Всякое входное воздействие однозначно пере- водит состояние системы в некоторое другое состояние, т.е. явля- ется преобразованием множества S. Последовательности воздей- ствий — композиция преобразований, поэтому множество всех последовательностей — полугруппа с образующими {хн ..., хт}. Если такая полугруппа является группой, то по любой входной последовательности и заключительному состоянию системы можно однозначно определить ее начальное состояние [19]. Алгебра <М,-,+>, которая по умножению (•) является муль- типликативным группоидом, а по сложению (+) - абелевой груп- пой, причем умножение связано со сложением законом дистри- бутивности a-(b + c) = a- b + a- c (Ь + с) • а = b а + с • а, называется кольцом. Например, числовыми кольцами являются множество целых чисел Z, множество рациональных чисел R, 31
множество действительных чисел D, множество комплексных чисел К. Кольцо, в котором все отличные от нуля элементы составля- ют группу по умножению, называется телом (имеются обратные элементы по умножению). Тело, у которого мультипликативная группа абелева, называется полем. Таковы поля Галуа. 2.3. Алгебра множеств (алгебра Кантора) Алгебра Кантора: <B(I), U, П, —> Носителем ее является булеан универсального множества I, сигнатурой — операции объ- единения U, пересечения П и дополнения [9]. Для операций алгебры Кантора выполняются следующие законы: 1) коммутативности объединения и пересечения: MaU Mb= MbU Ма, МаП Мь= МЬП Ма; 2) ассоциативности объединения и пересечения: Маи (Мьи мс) = (Маи мь) и мс, Man (Mbn мс) A(Man мь) п мс; 3) дистрибутивности пересечения относительно объединения и объединения относительно пересечения: ма П(МьиМс) = (МаПМь)ЩМаПМс), MaU(MbnMc) = (MaU мь)П(маимс), причем последнее соотношение не имеет аналога в обычной алгебре; .4) идемпотентности объединения и пересечения: маи ма = ма, ма п ма = ма, поэтому в алгебре Кантора нет ни степеней, ни коэффициентов; 5) де Моргана: МаПМь=Ма U Mb, MaUMb =Ма ПМь; 6) двойного дополнения: . Ма=Ма. 32
Выполнимы также следующие действия с универсальным I и пустым 0 множествами: 7) М и 0 = м, МП 0 = 0, М и 1 = I, м п I = м, мим = 1, МПМ=0. Все эти соотношения могут быть доказаны с использованием кругов Эйлера. Видна двойственность соотношений: они спра- ведливы как относительно объединения, так и относительно пе- ресечения. Рассмотрим дополнительные законы: 8)склеивания: - (М A A)U(M п А) = А; 9) поглощения: м и (М ПА) = М; 10) Порецкого — по фамилии российского логика, математи- ка и астронома, профессора Казанского университета Платона Сергеевича Порецкого (1846-1907 гг.): Ми(МПА) = МЦ1А. Алгебра Кантора по аддитивной операции объединения и мультипликативной операции пересечения является абелевой полугруппой, так как для этих операций выполняются законы коммутативности и ассоциативности, но она не является груп- пой, поскольку уравнения Ма U X = Mb, Ма А X = Мь не имеют решения, например, для случая, когда множества не пересекают- ся: ма А мь = 0 |9]. Поэтому алгебра Кантора по двухместным операциям А и U не является кольцом. Эта алгебра принадлежит к другому классу фундаментальных алгебр — к классу решеток. 2.4. Алгебраические системы. Решетки Выше рассматривались алгебры, т.е. множества, на которых заданы операции [19]. 3-2Ж 33
Множества, на которых кроме операций заданы отношения, называются алгебраическими системами [19]. Таким образом, ал- гебры можно считать частным случаем алгебраических систем. Другим частным случаем алгебраических систем являются моде- ли - множества, на которых заданы только отношения. Рассмотрим пример алгебраической системы, который наи- более часто встречается в теоретической алгебре и ее применени- ях [19]. Этот пример — решетка. Рассмотрим алгебраическую систему из множества М, отно- шения порядка (будем обозначать <) и некоторых операций. Го- ворят, что множество М линейно упорядочено, если любые два элемента находятся в отношении упорядоченности, иначе — час- тично упорядочено. Для элементов а и b из М их верхней гранью (мажорантой) называется любой элемент с е М, такой, что с > а, с > Ь, а их нижней гранью (минорантой) - любой элемент d е М, такой, что d < a, d < Ь. В общем случае для некоторых элементов а и b верхняя или нижняя грань может не существовать или быть не единственной, причем различные верхние (или нижние) грани могут быть несравнимыми. Во множестве верхних и нижних границ вводится понятие точной верхней (нижней) границы множества. Такая верхняя граница множества обозначается supM («супре- мум»), такая нижняя граница — обозначается infM («инфинум»). Частично упорядоченное множество называется решеткой, если у каждой пары его элементов а, b обязательно имеется един- ственная точная верхняя граница sup(a, b) или пересечение а л b и точная нижняя граница inf(a,b) или объединение a v Ь. Здесь операции л, v пока понимаются как абстрактные операции ал- гебраической системы и отличаются от теоретико-множествен- ных операций объединения и пересечения. Для алгебры мно- жеств л соответствует Q, v соответствует U. Рассмотрим пример частично упорядоченного множества — диаграмму (решетку) Хассэ [9], известную с конца XIX в. и при- меняемую в генеалогии для задания родства (рис. 8). На рис. 8 множество всех подмножеств данного множества упорядочено по отношению включения, а операции объедине- ния и пересечения элементов связаны дистрибутивными закона- ми. Нулем и единицей частично упорядоченного множества называются, соответственно, его наименьший и наибольший элементы, обычно применяются традиционные обозначения 0,1. 34
Рис. 8. Диаграмма (решетка) Хассэ для множества всех подмножеств универсального множества I = {у, х, z} Так, на рис. 8 нулем и единицей будут соответственно пустое множество 0 и данное множество (I). На решетке Хассе обычно не изображаются линии транзитив- ности и рефлексивности. В частично упорядоченных множествах с нулем и единицей вводится операция дополнения элементов. Элементы айв частично упорядоченного множества с нулем О и единицей 1 называются дополнительными друг для друга, если их пересечение равно нулевому элементу 0, а объединение дает единичный элемент 1: а л b = 0, a v b = 1. Так, {у} П {х, z} = 0, {у} U {х, z} = I на рис. 8. Дистрибутивная решетка с отличными друг от друга нулем и единицей, в которой каждый элемент имеет дополнение, называ- ется булевой алгеброй. Пример булевой алгебры - совокупность множества всех подмножеств данного множества и теоретико-множественных операций объединения, пересечения и дополнения, т.е. алгебра Кантора (алгебра множеств), рассмотренная выше. Операции объединения и пересечения являются бинарными (двухместны- ми), а операция дополнения - унарной (одноместной). Далее мы рассмотрим другой пример булевой алгебры — буле- ву алгебру логических (переключательных) функций. 3* 35
2.5. Задание множеств конституентами Формула алгебры множеств, представляющая собой пересе- чение, в которое входят по одному разу все множества (со знака- ми дополнения или без дополнений) на данном универсуме, на- зывается конституентой единицы [9]. Формула, представляющая собой объединение, в которое входят по одному разу все множе- ства (со знаками дополнения или без дополнений) на данном универсуме, называется конституентой нуля. Каждое множество, за исключением пустого, может быть задано объединением кон- ституент единицы. Каждое множество, за исключением универ- сального, может быть задано пересечением конституент нуля. Рассмотрим задание множества путем указания его конституент единицы. Пусть на некотором универсуме рассматриваются два взаимно пересекающихся множества: А и В. Зададим их графически с помощью диаграмм Эйлера (рис. 9). Рис. 9. Диаграмма Эйлера для двух взаимно пересекающихся множеств А и В на универсуме I Тогда каждый из четырех сегментов (четырех «кусочков») этой диаграммы может быть закодирован конституентой, содер- жащей символы А и В: (А Г)В) — сегмент 00 - не А и не В; (А Г) В) - сегмент 10 - А, но не В; (АГ)В)- сегмент 01 - не А и В; (А Г) В) — сегмент 11 - А и В. В таком случае заданное множество можно закодировать двоичным кодом в соответствии с тем, входят ли в него указан- ные конституенты (табл. 4): 36
Таблица 4 Задание множества А двоичным числом (АП В) (АП В) (АП В) (АПВ) И 10 01 00 23 22 2' 2° 1 1 0 0 Множество А закодировано двоичным числом 1100. Этому двоичному числу соответствует десятичное число 12. При таком задании множеств легко выполняются операции над ними. Например, получим пересечение множества № 12 и множества № 5. Результатом будет множество № 4. Действитель- но, результат пересечения — множество, в котором при его двоич- ном представлении имеются единицы в разрядах, соответствую- щих совпадениям единиц в исходных множествах (табл. 5). Таблица 5 Пересечение множеств № 12 и № 5 1 1 0 0 №12 0 1 0 1 №5 0 1 0 0 №4 = (№ 12) П (№ 5) 2.6. Решение уравнений в алгебре множеств При решении уравнений в алгебре множеств исходят из того, что: 1) два множества равны тогда и только тогда, когда их сим- метрическая разность пуста; 2) определяются условия, при которых уравнения имеют ре- шение [23]. Например, X U С = D. Преобразуем уравнение к виду (X U С) © D = 0. Любое уравнение, в правой части которого ука- зано пустое множество, может быть преобразовано в уравнение с декомпозицией по X: (FjDXlU (F2nX) = 0, где Fb F2 — формулы, не содержащие X. 37
Очевидно, что объединение пусто тогда и только тогда, когда объединяемые множества пусты: (Fj П X) = 0 и (Р2П X) = 0. Два полученных уравнения и исходное уравнение имеют ре- шение тогда и только тогда, когда F2cXcF[. Поэтому необходимо определить F|, F2, что и является ре- зультатом решения уравнения. Итак, (X U С) © D = 0. Декомпозицию по X выполним с по- мощью формулы симметрической разности двух множеств, ис- пользующей только операции объединения, пересечения и до- полнения: [(хис)П5]и[(хЦс)ПО] = 0, где [(ХиС)ПО] -разность (XUC)\D , [(XUC)DD] -разность D\(XUC) Выполним алгебраические операции: [(ХПО)и(СПВ)]и[ХПСПО]=0. В этой формуле не хватает пересечения скобки (CQD) с неизвестным множеством (или его дополнением). Его всегда можно ввести, используя пересечение с универсальным множе- ством, представленным в виде (XUX): [(xnD)U(cnD)n(XUX)]U[xncnD] =0. Далее раскрываем скобки и применяем законы алгебры мно- жеств: (xn5)U(cnDnx)U(cnonx)U(xncnD)=0. Здесь налицо поглощение (ХПО)и(СПОГ)Х)=(ХПО), поэтому: (ХПО)и(СПОПХ)и(ХПСПО) = 0. 38
Выносим X за скобку: (xnD)U{xni(cnD)U(cnD)]} =0. Обращаем внимание, что [(CnD)U(CAD)] =С ©D, поэтому: (ХП5)и{ХП|С®О]}=0. Таким образом: (X(~|D) = 0, X Q(C®D) =0, т.е. (C®D)cXc. с D - это и есть ответ. В этом случае может быть множество решений для конкрет- ных С, D. Пусть С = {2, 3, 6, 9}, D = {1, 2, 3, 5, 6, 7, 8, 9}. Тогда (С © D) = = {1,5,7, 8}cD.X может быть, например, таким: X = {1, 2, 5, 7, 8, 9}, т.е. соотношение (С© D)cXc D выполняется. Пусть С = {2, 3, 4, 6, 9}, при том же D = {1, 2, 3, 5, 6, 7, 8, 9}. Тогда (С Ф D) = {1, 4, 5, 7, 8} не включается в D = {1, 2, 3, 5, 6, 7, 8, 9}. В этом случае решения нет. 3. Элементы комбинаторики 3.1. Комбинаторные вычисления При решении теоретико-множественных задач большое зна- чение имеет определение мощности конечных множеств. Очевидно, что | A U В| = | А| + |В| — |А А В|, т.е., когда А и В в «общем положении», т.е. пересекаются. Кроме того, |А\В| = |А| - |В|, когда А включается в В, |А\В| = |А| — | А П В|, когда А и В в «общем положении», т.е. пере- секаются. Нетрудно заметить, что |А©В| = |А| + |В| - 21А П В |. В дискретной математике имеется специальный раздел, зани- мающийся подсчетом и перечислением элементов в конечных множествах — комбинаторика, или комбинаторный анализ. Вы- числения на дискретных конечных математических структурах часто называют комбинаторными вычислениями. Пусть в базе данных имеется п записей об объектах недвижи- мости (например, квартирах) в виде запроса (что требуется) и предложения (что имеется) Требуется найти такие пары записей, 39
в которых предложение первой записи совпадает с запросом вто- рой и, наоборот, предложение второй записи совпадает с запро- сом первой («подбор вариантов обмена»). Допустим, на проверку варианта обмена тратится одна мил- лисекунда. Можно показать, что при сравнении каждой записи с каждой требуется n(n— 1 )/2 сравнений. Например, п = 8: (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (2,3), (2,4), (2,5), (2,6), (2,7), (2,8), (3,4), (3,5), (3,6), (3,7), (3,8), (4,5), (4,6), (4,7), (4,8), (5,6), (5,7), (5,8), (6,7), (6,8), (7,8) - всего 28 вариантов: 8 • 7/2 - 28 = 7 + 6 + 5 + + 4 +3 + 2+1. Здесь отношение сравнения симметрично и сам с собой вариант не сравнивается. Если и = 100, то при указанном быстродействии на сравнения уйдет 4,95 с. Но если п = 100000 (в задачах реальной размернос- ти), то необходимо 1999950 с, т.е. без малого 1389 ч. Столько ждать клиент вряд ли будет. Это и есть «проклятие размерности». И это только сравнение прямых вариантов, а существуют вариан- ты, в которых число участников сделки больше двух. Поэтому комбинаторные вычисления требуют предваритель- ного анализа и ориентировочной количественной оценки исход- ных данных. Иначе можно подумать, что компьютер просто «за- вис» и не выдаёт ответа. Здесь речь идет о сложности вычислений в смысле времени решения. В ряде задач комбинаторной слож- ности необходимо время, сравнимое с геологическими эпохами. Но есть еще и пространственная сложность — в смысле объема памяти. Ведь промежуточные результаты часто надо где-то хра- нить. В ряде задач требуется объем памяти, превышающий коли- чество атомов во Вселенной. Основным инструментом такого анализа сложности вычисле- ний и является комбинаторика. 3.2. Основные понятия комбинаторики Основная задача комбинаторики как раздела дискретной ма- тематики — пересчет и перечисление элементов в конечных мно- жествах [24]. 40
Если требуется определить, сколько элементов, принадлежа- щих заданному конечному множеству, обладает некоторым свой- ством или заданным набором свойств, то это задача пересчета. Если необходимо выделить все элементы множества, удовлетво- ряющие заданным свойствам, то это задача перечисления. В некоторых задачах на исходном конечном множестве эле- ментов определена целевая функция, причем нас интересуют элементы множества, соответствующие минимальному или мак- симальному значению этой функции. В этом случае решается за- дача оптимизации. При этом под решением задачи оптимизации «в сильном смысле» понимается нахождение всех элементов минимизирую- щих (максимизирующих) целевую функцию, а под решением за- дачи оптимизации «в слабом смысле» — нахождение единствен- ного произвольного элемента [24]. Рассмотрим основополагающие правила комбинаторики — правила суммы и произведения. Пусть X — конечное множество, состоящее из п элементов х. Тогда говорят, что элемент х из X может быть выбран п способа- ми и пишут |Х| = п. Эта запись совпадает с записью мощности множества X. Пусть Хи ..., Хк - попарно непересекающиеся множества, т.е. xinxj = 0,i^j. Очевидно, что в этом случае к и Xi Таково комбинаторное правило суммы. Для к = 2 оно форму- лируется следующим образом. Если объект х может быть выбран п способами из множества X, а объект у из непересекающегося с ним множествах - другими m способами, то выбор «х или у» мо- жет быть осуществлен n + m способами. Правило произведения для к = 2 формулируется следующим образом. Если объект х может быть выбран п способами и после каждого из таких выборов объект у в свою очередь может быть выбран m способами, то выбор упорядоченной пары — вектора (х, у) может быть осуществлен п • m способами. Например, X : {х(, х2}, Y: {у,, у2}. 41
Тогда упорядоченные пары (х, у) описываются декартовым произведением X • Y= {(х„ у,), (X], у2), (х2, уО, (х2, у2)}. Выбор упорядоченной последовательности из к объектов век- тора (X], х2, хк) может быть осуществлен nf п2 •... • ^-способа- ми, где п1 - число способов выбора i-ro объекта xi5 i меняется от 1 до к (записывается: i = 1, к). В частности, если все гц равны, что может быть, например, в случае, когда элементы принадлежат одному и тому же множест- ву, т.е. рассматривается декартово произведение Хк, то число спо- собов равно пк. Набор элементов х, , ..., Xj из множества X = {х,, ..., хп} (век- тор) называется выборкой (комбинацией) объема к из п элемен- тов или, иначе, (п, к)-выборкой. Выборка называется упорядоченной, если порядок следования элементов в ней задан. Две упорядоченные выборки, различаю- щиеся лишь порядком следования элементов, считаются различ- ными. Если порядок следования элементов не является существен- ным, то такая выборка называется неупорядоченной. В выборках могут допускаться и не допускаться повторения элементов, т.е. имеются выборки с повторением и выборки без повторений. 3.3. Размещения Упорядоченная (п, к)-выборка, в которой элементы могут повторяться, называется (п, к)-размещением с повторениями. Иными словами, размещениями с повторениями из п элемен- тов по к называют векторы длины к, составленные из п элементов множества X. Число размещений с повторениями из п элементов по к опре- деляется оценкой соответствующего декартова произведения Хк n-элементного множества, обозначается Ак (по-видимому от ан- глийского слова Assing - назначать) и вычисляется следующим образом: Ак = пк. 42
Таким образом, первый элемент вектора длины к выбирается п способами, второй — п способами и т.д.: п • п •... • п = пк. Пример. Сколькими способами можно оснастить две различ- ные фирмы компьютерами трех типов? Каждый способ оснащения есть выборка (3,2), вектор длины 2, составленный из трехэлементного множества типов Т = {tj, t2, t3}. Поэтому число способов оснащения - число размещений с повторениями из 3 по 2: Д23 =32 = 9. Рассмотрим подробнее: 1)(ЧЛ1);2) (tbt2); 3) (t>, t3); 4) Сг, ЧУ 5) Сг, t3); 6) (t2, t,); 7) (t3,t3); 8)(t3, t2); 9)(t3, Получили различные упорядочения двухэлементных векто- -г2 ров из трех элементного множества, т.е. множество Т . Здесь каждый вектор соответствует способу оснащения. Вид- но, что, например, (tb t2), (t2, t,) считаются разными способами, так как фирмы предполагаются различными («первая - первым типом», «вторая — вторым» и т.д.). Имеются повторения: (Ц, t(), Ч)- В ряде задач необходимо определить число векторов длины к из п элементов данного множества без повторения элементов. Если элементы упорядоченной (п, к)-выборки попарно раз- личны, то они называются (п, к)-размещением без повторений или просто (п, куразмещением. Число таких размещений без повторений обозначается Ак. Каждое (п, к)-размещение без повторения является упорядо- ченной последовательностью длины к, элементы которой попар- но различны и выбираются из множества с п элементами. Тогда первый элемент этой последовательности может быть выбран п способами, после каждого выбора первого элемента последова- тельности второй элемент может быть выбран (п-1)-способами и т.д., k-й элемент выбирается п-(к-1)-способом: А^= п(п-1) (п-2)... [п-(к-1)]. 43
Преобразуем эту формулу, умножая и деля ее на произведение чисел 1 • 2 ••• (п-к): к п(п-1)(п-2)[п-(к-1)]1-2—(п-к) п 1-2 -(п-к) _ l -2- -(n-k)[n-(k-l)]-- (n-2)(n-l)n 1-2--(п-к) п! “(п-к)! . 1V В частности, при к = О А* =—^ = 1. Очевидно, что при к > п А„ = 0. Пример. Сколькими способами можно скомплектовать груп- пу из трех студентов для прополки клубники в составе начальни- ка и подчиненных? Речь идет о выборе упорядоченных двухэлементных подмно- жеств множества студентов, состоящего из трех элементов (К = {1, 2, 3}), т.е. о размещениях без повторений из трех элемен- тов по 2, поэтому: *2 3! 1-2-3 J (3-2)! 1! Подробнее в виде векторов из номеров студентов (например, по журнальному списку) первая компонента которого обознача- ет номер студента-начальника, вторая - подчиненного: (1,2), (1,3), (2,1), (2,3), (3,1), (3,2). Ясно, что здесь существенен порядок следования компонен- тов и не может быть повторений (один студент не может быть начальником и подчиненным одновременна), поэтому это мно- жество — подмножество декартового произведения. Пример. Сколькими способами можно провести распределе- ние 10 механизаторов по трем сушильным установкам? Один механизатор назначается на одну сушильную установку. Распределение механизаторов - размещение без повторений из 10 элементов по 3, поэтому: , 10' А?о =10-9-8 = 720 = —— = 720. 10 (10-3)! 44
3.4. Перестановки Рассмотрим различные упорядочения n-элементного множе- ства X (вектора длины п, составленные из n-элементного множе- ства). В отличие от декартова произведения полученные при этом векторы отличаются лишь порядком следования элементов и называются перестановками без повторений из п элементов. Число перестановок без повторений из п элементов обозначается Рп. К перестановкам без повторений можно прийти, полагая, что осуществляется размещение без повторений из п элементов по п: Считается, что 0! = 1. Пример. Сколько существует возможных последовательнос- тей выполнения проверок финансовой деятельности трех подраз- делений? Требуется получить число перестановок без повторений из трех элементов, т.е. Р3 = 3! = 6. Получим все эти последовательности: (1,2,3), (1,3,2), (2,3,1), (2,1,3), (3,1,2), (3,2,1). Пример. Сколько можно составить пятизначных шифров-чи- сел, не кратных 5, из цифр 1, 2, 3, 4, 5 без повторений цифр? Всего из пяти цифр можно составить Р5= 5! = 120 пятизнач- ных шифров-чисел, но они будут включать и кратные 5. Сколько будет шифров, кратных 5? — Из данного набора чисел кратными 5 могут быть числа, содержащие 5 в младшем разряде. Если циф- ру 5 записать в младшем разряде, то остальные цифры 1, 2, 3, 4 можно распределить по разрядам Р4 = 4! = 24 способами. Таким образом, число пятизначных шифров из чисел 1, 2, 3,4, 5 без пов- торения чисел и не кратных 5 будет 120 — 24 = 96. Перестановки без повторений можно интерпретировать как различные варианты векторов, состоящих из неповторяющихся компонентов, получаемые перестановкой компонентов. По аналогии при наличии одинаковых компонентов в неко- тором векторе получаем задачу оценки так называемых переста- новок с повторениями данного состава [23]. 45
Рассмотрим вначале пример: сколько различных последова- тельностей-кодов можно получить, переставляя цифры в числе 010, т.е. векторов длины к = 3 из двухэлементного множества В = {0,1}, содержащих два нуля. Имеется всего три разряда, которые обозначим р,, р2, р3. Их можно переставить р3 = 3! = 6 способами. Запишем различные получаемые сочетания разрядов и соответствующие коды: (Р1, р2, р3) - ->010 (Pi, Рз, Р2) - ->001 (Р2, Рз, Р1) - > 100 (Р2- Р1, Рз) - > 100—1 (Рз, Рь Р2) - >001 (Рз> Р2, Pi) - >010 010 ->001 100 Видно, что коды повторяются тогда, когда несущественен порядок следования разрядов с одинаковой цифрой 0 (р(, р3). Все это соответствует тому факту, что имеются два способа (2!) пере- становки этих разрядов (ри р3), (р3, р,) без изменения кода, т.е. неповторяющихся кодов будет меньше во столько раз, сколько имеется способов перестановки повторяющихся разрядов. Рассмотрим более сложный случай. Сколько различных «слов», не обязательно имеющих смысл, можно получить, переставляя буквы в слове «кишмиш»? Здесь шесть букв слова можно переставить друг с другом р6 = 6! = 720 способами, но в данном слове буквы «и» и «ш» повторяются дважды, и при их перестановке слова могут повто- ряться. Сколько же существует вариантов перестановок этих букв без изменения слова? Первый вариант - исходный, второй - по- менять местами буквы «и», третий — поменять местами буквы «ш», четвертый — поменять местами как буквы «и», так и буквы «ш». Всего четыре варианта. С учетом того, что эти четыре вари- анта участвуют в порождении 720 способов, получим 720/4 = 180 различных «слов». Можно показать, что число раз, во сколько уменьшается количество слов по сравнению с числом перестано- вок без повторений, представляет собой произведение факториа- лов количества повторяющихся букв. Таким образом, если из п элементов множества X = {хь х2, ..., хп} составлен вектор V длины к, причем каждому i-му компонен- ту можно поставить в соответствие число к15 указывающее его 46
число повторений в V, то задан вектор S = (к,, к2, кп), который называется составом данного вектора. Так, для X = {0, 1, 2, 3} и V = (010223) состав: S = (2,1, 2,1). Векторы одного и того же состава, отличающиеся лишь по- рядком компонентов, называются перестановками с повторени- ями данного состава. Общая формула числа перестановок с повторениями данного состава имеет вид P(k„k2,..,kn) = (к] +к2 +... +кп)! k,!k2!...kn! к! к1!к2!...кп!' Пример. Сколько различных кодовых последовательностей можно получить перестановками кода 102202030? Такому вектору, составленному из элементов множеств {0, 1, 2, 3}, соответствует вектор состава (1, 4, 3, 1), поэтому число раз- личных кодовых комбинаций определяется как число перестано- вок с повторениями этого состава л+4 + 3 + 1)! QI P(1,4,3,1) = U ''=—=2520. 1!4!3!1! 3!4! 3.5. Сочетания В ряде комбинаторных задач требуется определить число к- элементных подмножеств множества из п элементов. В этом слу- чае порядок следования компонентов несущественен, т.е. произ- водится неупорядоченная выборка. В результате получают так называемые сочетания без повторения. Сочетаниями без повторений из п элементов по к называются отличающиеся друг от друга хотя бы одним элементом выборки длины к, составленные из n-элементного множества. Число сочетаний без повторений из п элементов по к, обозна- чаемое как С„, определяется исходя из числа размещений без повторений с учетом того, что различных неупорядоченных век- торов (подмножеств исходного множества) будет меньше в число раз, соответствующее числу перестановок без повторений из к элементов: Ск А* = п! п Рк к!(п-к)! 47
Пример. Определить число двухэлементных подмножеств множества, состоящего из трех элементов. Перечисляем все двух- элементные подмножества множества X = {х1; х2, х3}: {Х],Х2}, {Х],Х3}, {х2,х3}. Здесь мы имеем дело с сочетаниями из трех по 2: С2- 3! - 3! -3 3 2!(3-2)! 211! Это величина в 2! раза меньше, чем число размещений из А3, поскольку компоненты двухэлементных векторов можно пере- ставить Р2 = 2! способами. Пример. Сколькими способами можно выбрать 3 различных комбайна.из 5 имеющихся? Число размещений из пяти по 3 без повторений: А3 = 5 • 4 • 3 = = 60. Один и тот же набор комбайнов можно получить различными способами, например, векторы (а, Ь, с) и (Ь, а, с) дают один и тот же набор. Поскольку три элемента можно переставить Р3 = 3! = 6 спо- собами, то число способов выбора различных трех комбайнов равно сз=^1=60 = ю 5 Рз 6 В ряде комбинаторных задач требуется подсчитывать число различных .составов векторов длины к из n-элементного множе- ства. Такие векторы-составы называются сочетаниями с повторе- ниями из п элементов по к. Например, требуется составить механизированные бригады из трех комплексов двух типов и определить количество таких бригад. Порядок следования комплексов в векторе бригады роли не играет, а каждая бригада задается вектором длины 3 из двух элементов, порядок компонентов которого роли не играет. Получаем сочетания с повторениями из двух элементов по 3: (ГП|, ГЛ], ГП]), (Ш], т2, т2), (т,, Ш], т2), (т2, т2, т2), где т означает тип комплекса. 48
Итак, можно построить бригаду из трех комплексов первого типа, трех комплексов второго типа, двух комплексов второго ти- па и одного первого и, наконец, двух комплексов первого типа и одного второго, т.е. четырьмя способами. Определение числа сочетаний с повторениями можно произ- вести следующим образом [24]. Каждому сочетанию с повторениями из двух по 3 ставится в однозначное соответствие вектор длины п + к-1 = 2 + 3-1 = 4, состоящий из трех нулей и п— 1 = 1 единицы (табл. 6). Таблица 6 Определение числа сочетаний с повторениями Количество комплексов 1-го типа Разделитель Количество комплексов 2-го типа Состав вектора бригады ООО 1 (гл,, mb m,) 0 1 00 (гл,, m2, m2) 00 1 0 (mb гл,, m2) 1 ООО (m2, m2, m2) с повторениями и три нуля), т.е. В таком случае число сочетаний с повторениями, которое обозначается Cj, равно числу перестановок данного состава (вектор имеет одну единицу 4' P(31) = J—= 4. 3!1! В общем случае это выражение имеет вид (п + к-1)! к!(п + к-1-к)!’ что соответствует выражению С~ к _z^k п “ ^п+к-1 • Например, требуется составить подразделения из 6 рабочих четырех специальностей и определить количество способов фор- мирования таких подразделений. Получаем сочетания с повторениями из четырех элементов по 6: С4=Сб+41=С|=—-—= — = 11^=84. 9 6!(9-6)! 613! 1-2-3 4-278 49
3.6. Треугольник Паскаля Сочетаниями без повторений занимался еще великий Пас- каль. Он предложил специальную таблицу значений сочетаний без повторений. Значения С„ представлены в табл. 7, которая называется тре- угольником Паскаля. Табл и ца 7 Треугольник Паскаля \ к п\ 0 1 2 3 4 5 6 7 8 0 1 1 1 1 2 1 2 1 3 1 3 3 1 4 1 4 6 4 1 5 1 5 10 10 5 1 6 1 6 15 20 15 6 1 7 1 7 21 35 35 21 7 1 8 1 8 28 56 70 56 28 8 1 Заметим, что С° =1,С° = 1,С" =1. Этот треугольник удивительно красив своей математической красотой, и в его числах можно при желании отыскать различные закономерности. Его можно представить несколько иначе — в виде [26]: равнобедренного треугольника (рис. 10). 1 1 1 1 2 1 13 3 1 1 4 6 4 1 Рис. 10. Треугольник Паскаля 50
Здесь каждое число, кроме единиц на боковых сторонах, яв- ляется суммой двух чисел, стоящих над ним. Поэтому: Cj, +С1;1 = С‘п+1:—-—+--------------= n n n+1 il(n-i)! (i-l)!(n-i+l)! = ci , Ci-i _n!(n-i + l) + n!i n n i!(n-i + l)! (приводим к общему знаменателю) _ n!(n -i + 1 + i) _ i!(n-i + l)! (выносим n! за скобку в знаменателе) n!(n +1) = (п+1)! j — i!(n-i+l)! i!(n -i+1)! n+” Из этого соотношения и вытекает эффективный способ рекуррентного вычисления значений биномиальных коэффи- циентов. 1. Докажем соотношение Ck =Cn~k: п! п! k!(n — к)! (п — к)!к! Это может использоваться при вычислениях, например, вместо с’оо можно вычислить С]200. 2. Докажем соотношение С„Ск = СкС|п~_кк: п!________i! = п! = с i ск = i!(n-i)! (k)!(i-к)! (n-i)!k!(i-к)! п ‘ п!_________(n-к)! zckCbk п! к!(п-к)! (i-k)!(n-к-i+к)! nn-k (n -i)!k!(i -к)!' 4* 51
3.7. Бином Ньютона Имеется формула, называемая биномом Ньютона, которая использует выражения числа сочетаний без повторений С„: (а + Ь)п = £С^ап-ф‘, (п =1,2,...), i=o где а, b — действительные или комплексные числа. Например: (а + b)2 =С2а2-0 ч-С^а^'Ь1 тС^а2'2!)2 =а2 +2аЬ +Ь2, (ач-b)3 =Сза3“° +Сза3_1Ь' ч-С2а3-2Ь2 ч-Сза3-3Ь3 =а3 +3a2b ч-ЗаЬ2 +Ь3, (ач-b)4 =с2а4~0 ч-С‘а4-’ь' +С^а4~2Ь2 +С3а4’3Ь3 +С44а4Л4 = = а4+4a3b+6a2b2+4аЬ3+Ь4. Коэффициенты С„ называются биномиальными. Докажем формулу бинома Ньютона по индукции. Доказа- тельство по индукции предполагает: 1) базис индукции — доказательство того, что формула верна для конкретного п, например, для n = 1. В нашем случае мы убедились, что формула верна для п = 2, 3, 4. Убедимся, что она верна и для n = 1. а + Ь= £С;амЬ‘ =С?а1-0Ьв +С'1а|-|Ь| =а+Ь; i=0 2) индукционный шаг. Предполагая, что формула верна для некоторого п, убеждаются, что тогда она верна и для n + 1; 3) при истинности шагов 1 и 2 заключают, что формула верна для любого п. Приступим к индукционному шагу. Возьмем выражение (a + b)n = £Спап"'Ь' и получим из него i=0 выражение для n + 1. Очевидно, что это можно сделать путем умножения на (а + Ь): (ач-Ь)п+1 =(a + b)n(a+b) = ZC^a^b^a ч-b). i=0 52
Преобразуем полученное выражение: (a + b)n+l = icj1an-ibi(a+b)=£(Cinan+l'ibi +C'1an‘,bi+1). (1) i=0 i=0 Для выполнения индукционного шага необходимо показать, что это выражение равно выражению п+1 , . . ЕС'+1а"+1-'Ь'. 1=0 Рассмотрим подвыражение выражения (1): Cnan~'b'+I и заме- ним i на i— 1. Получим С'“1ап~'+|Ь', т.е. одинаковые коэффициенты ап-'+1Ь' перед выражениями С^1, С„ для числа сочетаний в первом и втором подвыражении выражения (1). Это позволит вынести an~1+lb1 за скобку. Но в C,n“lan"'+1b' не учтен n-й член под- выражения Cnan"'b'+I (суммирование идет до n): С"а°Ьп+|; тогда, учитывая его, получаем: 2ДСпа b +Сп a b )+Спа b = 1=0 = i(Cj, +cj;l)an+l~ibi +C"a°bn+I. 1=0 Нетрудно видеть, что Cna°bn+I можно заменить на С"+]а(п+|)~(п+|)Ьп+|, кроме того, мы уже доказали, что z^i-1 z-i! V оп+1—iui , л^п+1 rt(n+l)—(п+1) t_n+l Сп+Сп =Сп+|, поэтому: ЕСп+|а b +Сп+|а' 7Ь , что, i=0 очевидно, равно выражению Сп+|ап+,-'Ь'. i=0 По индукции получаем, что формула бинома Ньютона верна для любого п. 53
С использованием бинома Ньютона докажем следствие № 1 о количестве подмножеств множества из п элементов: 2n = f ci,=(i+i)n=f c;1in4ii=f ci, = i=0 i=0 i=0 n! n! n! n! “ 0!(n-0)! +l!(n -1)! +2!(n -2)! +"' +n!(n -n)!' Рассмотрим следствие № 2: £(-])'€], =0. i=0 0 = (l-l)n = ici,(+l)n-i(-l)i =£(-1)*С*п. i=0 1=0 На использовании бинома Ньютона основано понятие про- изводящей функции — функции, позволяющей получать комби- наторные числа без вычисления факториала: (l + x)n = £Ci,ln-1x' =SCnX'. Здесь (1 + х)п - функция, произво- i=0 i=0 дящая биномиальные коэффициенты. При n = 1 получаем 1 + х, т.е. С° = 1 (коэффициент перед 1), С) = 1 (коэффициент перед х). При п = 2 получаем (1 + х)2 = 1 + 2х + х2, т.е. С2° = 1, С2* = 2, С22 = 1 и т.д. 3.8. Решение комбинаторных уравнений В комбинаторике тоже могут решаться уравнения, особен- ностью которых является то, что неизвестная принадлежит мно- жеству натуральных чисел. Например, уравнения вида С *7* =21, х е N, где N — множество натуральных чисел, или вида 7 C2nn+l:C2nn-:, =-, х е N. 54
При решении комбинаторных уравнений часто необходимо уметь выполнять действия с факториалами типа: n! l-2-3---(n-2)(n-l)n . ------=----------i---—------= (n -1) n (n-2)! - (п-2)! или: (n + З)! 1-2-3 •n(n+l)(n+2)(n+3) 2------ =------------------------- =(n +l)(n +2)(n +3). n! п! В комбинаторике рассматриваются и другие типовые комби- наторные комбинации, например, разбиения п-элементного множества на к подмножеств, которые' называются блоками разбиения. В информатике вычисления на конечных математических структурах часто называют комбинаторными вычислениями, и они требуют комбинаторного анализа для установления свойств и оценки применимости используемых алгоритмов. На рис. 11 приведен один из возможных вариантов классификации основ- ных комбинаций. 7 k к л k n! Ak„=nk A„=---------- n n (n-k)! P(n) = A"=n! P(k„k2,...,kп) W-kn! Комбинаторные задачи могут быть решены, например, систе- мой компьютерной математики Matematica (3,4) фирмы Wolfram Research,Inc. — пакет расширения «Дискретная математика» (DiscreteMath) — комбинаторика и ее функции (Combinatorica, CombinatorialFunctions): функции перестановок и сочетаний и др. 55
Рис. 11. Основные комбинации
4. Основные понятия теории графов 4.1. Способы задания графов Совокупность множества М с заданным на нем бинарным От- ношением Т с: М2 [9] называется графом G = < М,Т>, где М - носитель графа - множество вершин, изображаемых точками; Т - сигнатура графа - множество линий, обозначающих отношения и называемых ребрами. Между элементами М и Т определено отношение инцидент- ности, т.е. связи между двумя элементами множества М через один элемент множества Т (рис. 12). Примеры графов: отноше- ния отцовства и материнства на множестве людей, отношения подчиненности, карты дорог местности, электрические схемы соединений приборов и т.д. Рис. 12. Пример графа «звезда» М = {1,2, 3,4, 5}, Т = {(1,3), (1,4), (2,4), (2,5), (3,1), (3,5), (4,2), (4,1), (5,3), (5,2}). Множество линий-ребер в Т задается обозначением пары (i, j), где i, j — смежные вершины, отношение Т — «быть связан- ным». 57
Теорию графов начали разрабатывать для решения некоторых задач о геометрических конфигурациях, состоящих из точек и ли- ний. В этих задачах несущественно, соединены ли точки конфи- гурации отрезками прямых или они криволинейны, какова длина линий и другие геометрические характеристики конфигурации. Важно лишь, что каждая линия соединяет какие-либо две из за- данных точек [24]. Первые серьезные результаты теории графов связаны с реше- нием задач построения электрических цепей (Г. Кирхгоф) и под- счета числа химических соединений с различными типами моле- кулярных связей (А. Кэли). Изобразите в виде графа молекулу С2Н4! В ЗО-е годы XX в. благодаря трудам Д. Кенига [19] теория графов стала развиваться как самостоятельный раздел матема- тики. Широкое развитие теория графов получила с 50-х годов XX в. в связи с появлением такой науки, как кибернетика. Графы при- меняют при анализе функционирования систем. С отдельными компонентами изучаемой системы удобно связывать вершины графа, а с парами взаимодействующих компонентов — его ребра. Такой граф называют структурным графом системы. В некоторых задачах существенно направление ребер графа. Направленные ребра называют дугами, а содержащий их граф — ориентированным (орграфом). Таким графом может быть изоб- ражена диаграмма Хассе. Соответственно граф с неориентиро- ванными ребрами называется неориентированным. Множество ребер может быть пусто. Если же множество вер- шин пусто, то пусто и множество ребер. Такой граф называется пустым. Линии, изображающие ребра, могут пересекаться на изображении графа, но точки их пересечений не являются вер- шинами. Различные ребра могут быть инцидентны одной и той же паре вершин, в этом случае они называются кратными. Граф, содержащий кратные ребра, называют мультиграфом (псевдогра- фом). Ребро (дуга) может соединять некоторую вершину саму с собой, такое ребро (дуга) называется петлей. Будем рассматри- вать конечные графы, содержащие конечные множества вершин и ребер (дуг). Рассмотрим предложенную фон Нейманом архитектуру ЭВМ, которая состоит из множества устройств М = {a, b, с, d, е}, где а — устройство ввода, b — арифметическое устройство (про- 58
цессор), с — устройство управления, d — запоминающее устрой- ство, е — устройство вывода [9—10]. Информационный обмен между этими устройствами задается графом (рис. 13). Рис. 13. Граф, описывающий архитектуру фон Неймановской ЭВМ Вершины графа на рис. 13 для удобства изображены кружка- ми, а не точками, как на рис. 11. Граф можно задать так называемой матрицей смежности, каждой i-й строке (j-му столбцу) которой однозначно сопостав- ляют элемент множества М, между которыми выполняется отно- шение смежности. Две вершины, инцидентные одному ребру, смежны. Два ребра, инцидентные одной вершине, тоже смежны. Тогда каждая клетка b,j взаимно однозначно соответствует элементам множества М • М = М2. Клетку by, которая соответ- ствует элементу, принадлежащему бинарному отношению Т с М2, отмечают, например, единицей, а в остальные клетки записывают нули. 59
Рассмотрим матрицу смежности В для графа, изображенн на рис. 13. Устройства i, j находятся в отношении Т, если устройства i информация поступает в устройство]. abed 0 111 0 0 11 110 1 0 110 0 0 10 е 0 а 1 b 1 с 1 d 0 е Граф можно задать и с использованием перечисления его дуг, как это сделано на рис. 13: М = {а, Ь, с, d, е}, Т = {(а, Ь), (а, с), (a, d), (b, с), (b, е), (b, d), (с, а), (с, b), (с, d), (с, е), (d, с), (d, b), (d, е), (е, с)}. Граф можно задать в виде так называемого фактор-множест- ва, представленного парами «элемент множества М — подмноже- ство М, представляющее собой окрестность единичного радиуса этого элемента»: [<а, {Ь, с, d}>, <b, {с, d, е}>, <с, {a, b, d, е)>, <d, {b, с, е}>, <е, {с}>]. Ориентированный граф может быть задан и матрицей инци- дентности А размерностью п • т: А = ||ау ||, где n = | М|, т = | Т |, у которой ' 1, ‘ 1, о, если вершина а, является концом дуги ф если вершина а; является началом дуги t,; если вершина а, не инцидентна дуге tj, i = l,n, j = l,m. Так, для ориентированного графа (рис. 14) матрица инци дентности имеет вид: 60
t] t2 t3 t4 -10 1 1 X! 1-10-1 x2 0 1 -1 0 x3 Рис. 14. Некоторый ориентированный граф В описанном виде матрицы инцидентности применимы толь- ко к графам без петель, в случае наличия которых матрицу надо разбить на две полуматрицы: положительную и отрицательную. Ориентированный граф также может быть задан матрицей смеж- ности. Для графов с кратными ребрами в матрице смежности указы- вают кратность ребер, например, для графа, изображенного на рис. 15, матрица смежности представляется в виде: *1 х2 *3 Х1 х2 х3 1 2 0 ООО 2 3 2 Такой граф называют мулътиграфом. Граф называется нагруженным, если каждому ребру (дуге) поставлено в соответствие некоторое действительное число (дли- на дуги, вес дуги, стоимость дуги и т.д.). 61
Рис. 15. Некоторый ориентированный мультиграф Представим в виде графа некоторые бинарные отношения [9]. Отношение Т в множестве М рефлексивно, как мы уже зна- ем, если для каждого элемента m е М справедливо (m, т) е Т. На графе это изображается петлей (рис. 16, о). На матрице смежнос- ти графа с рефлексивным отношением все элементы, лежащие на главной диагонали, отмечены единицами. Отношение во множестве М называется симметричным, если из (гл,, nij) е Т следует (гп;, nij) 6 М, гл,* nij (рис. 16, б). Матрица смежности симметричного отношения симметрична относитель- но главной диагонали. Отношение Т в множестве М называется транзитивным, если из (nip гл,) е Т, (гл,, mk) е Т следует (ГЛ;, mk) е Т m,, nij, mk 6 М, гл,* nij, гл,* mk, nij* mk (рис. 16, в). В графе, задающем транзитивное отношение Т, для всякой пары дуг, таких, что конец первой совпадает с началом второй, существует транзитивно замыкающая дуга, имеющая общее на- чало с первой и общий конец со второй. Рис. 16. Изображения бинарных отношений в виде графа а - рефлексивное отношение; б — симметричное отношение; в — транзитивное отношение 62
4.2. Характеристики графов Подграфом GA графа G = < М, Т > называется граф, в который входит лишь часть вершин графа G, образующих множество А, вместе с ребрами (дугами), их соединяющими. Так, карта шоссейных дорог Пермской области является подграфом графа «Карта шоссейных дорог Российской Федера- ции» [18]. Частичным графом GA по отношению к графу G называется граф, содержащий только часть ребер (дуг) графа G. Так, карта главных дорог России — частичный граф карты шоссейных дорог России [18]. Если две вершины соединены ребром, то говорят, что каждая вершина инцидентна этому ребру, а соответствующие вершины — смежны (две вершины, инцидентные одному ребру, - смежны). Два ребра, инцидентные одной вершине, также смежны. Маршрут — чередующаяся последовательность вершин и ре- бер, в которой два соседних элемента инцидентны [26]. Если’начальная вершина маршрута равна конечной, то марш- рут замкнут, если иначе — открыт. Если все ребра различны, то маршрут называется цепью. Если все вершины (а значит, и ребра) различны, то маршрут называется простой цепью. Замкнутая цепь — это цикл. Граф без циклов называется ациклическим. В ориентированном графе цепь называется путем, а цикл — контуром. Степенью вершины х, обозначаемой deg(x), называют число ребер, инцидентных ей. Если degx = 1, то вершина х тупиковая, если degx = 0, то вершина изолированная. Если G - неориентированный граф с п вершинами и m реб- рами, a degj - степени j-й вершины, то сумма степеней вершин равна удвоенному количеству ребер: Xdegj = 2m. j=i Это следует из того, что каждое ребро добавляет единицу к степени каждой из двух вершин, которое оно соединяет, т.е. до- бавляет 2 к сумме уже имеющихся' вершин. Следствием этого факта является то, что в каждом графе число вершин нечетной степени четно. Для ориентированного графа вводятся понятия полустепень исхода и полустепень захода. 63
Деревья. Лес Граф связен, если любые две его вершины можно соединить цепью. Если граф не связен, то его можно разбить на отдельные связные подграфы, которые называются компонентами связности. Связный граф, не имеющий циклов (ациклический), называ- ется деревом (рис. 17). Деревом может быть задано отношение подчинения в трудо- вом коллективе, в государстве. Простейшее дерево состоит из двух вершин, соединенных ребром. Каждый раз, когда добавляется еще одно ребро, в конце его прибавляется также и вершина. Следовательно, дерево с п вершинами имеет п-1 ребро. В теории графов доказывается, что число различных деревьев, которые можно построить на m вершинах, равно rnm'2. Много де- ревьев — это лес. Дипломатическое число Пусть G — неориентированный связный граф, имеющий п вершин и m ребер. Цикломатическим числом связного графа G с п вершинами и m ребрами называется число v(G) = m - n + 1. Это число имеет интересный физический смысл: оно равно наибольшему числу независимых циклов в графе [18]. При расче- 64
те электрических цепей цикломатическое число используется для определения числа независимых контуров. Рассмотрим примеры подсчета числа независимых циклов. В графе, состоящем из одной вершины и одного ребра, один цикл (рис. 18, о). В графе, состоящем из одной вершины и трех ребер, три цик- ла (рис. 18, б). В графе, состоящем из двух вершин и двух ребер, один цикл (рис. 18, в). В графе, состоящем из двух вершин и пяти ребер, четыре цик- ла (рис. 18, г). В графе, состоящем из трех вершин и трех ребер, один цикл (рис. 18, д). В графе, состоящем из трех вершин и четырех ребер, два цик- ла (рис. 18, е). В графе, состоящем из четырех вершин и четырех ребер, один цикл (рис. 18, ж). В графе, состоящем из четырех вершин и пяти ребер, два цик- ла (рис. 18, з). В графе, состоящем из четырех вершин и шести ребер, три цикла (рис. 18, и). Цикломатическое число дерева равно нулю. Рис. 18. Примеры циклов в графах: а, в,д,ж — один цикл; б, и - три цикла; г — четыре цикла; е, з — два цикла 5-278 65
Плоские (планарные) графы Граф называется плоским (планарным), если он может быть изображен на плоскости так, что все пересечения ребер являются вершинами (без пересечения ребер). Аналогично можно ввести понятие объемного, т.е. трехмер- ного, графа и т.д. Хроматическое число графа Граф G называют р-хроматическим, где р — натуральное чис- ло, если его вершины можно раскрасить р-различными цветами так, чтобы никакие две смежные вершины не были раскрашены одинаково. Наименьшее число р, при котором граф является р-хроматическим, называют хроматическим числом графа и обоз- начают X(G). Если X(G) = 2, то граф называют дихроматическим. Необходимым и достаточным условием бихроматичности явля- ется отсутствие в графе циклов нечетной длины. Граф на рис. 19, а - бихроматический, его вершины «раскра- шены» двумя «цветами», обозначенными 0,1. a Рис. 19. Примеры раскраски графов: а - бихроматический граф; б — граф, раскрашенный тремя цветами Граф на рис. 19, б можно «раскрасить» тремя цветами, напри- мер, черным (ч), красным (к) и белым (б). Изоморфизм графов Как мы убедились, граф может быть задан различными спо- собами. Он может быть изображен на чертеже, задан матрицей инцидентности, списком ребер или матрицей смежности, фак- тор-множеством и т.д. Вид чертежа зависит от формы линий и 66
взаимного расположения вершин [24]. Иногда не так легко по- нять, одинаково ли графы, изображенные разными чертежами. Вид матриц и списка ребер зависит от нумерации вершин и ребер графа. Строго говоря, граф считается полностью заданным, если нумерация его вершин зафиксирована; графы, отличающиеся только нумерацией вершин, называются изоморфными. Например, графы, изображенные на рис. 20, изоморфны [24]. 1 2 3 4 5 6 0 0 0 0 1 1 1 0 0 0 0 1 1 2 0 0 0 0 0 1 3 0 0 0 0 1 0 4 110 10 15 1110 10 6 1 2 3 4 5 6 0 10 10 11 1 0 0 0 0 1 2 0 0 0 0 0 1 3 1 0 0 0 0 0 4 1 0 0 0 0 1 5 1110 10 6 Рис. 20. Изоморфные графы: а — перенумерация вершин 5 -> 1; б — нумерация вершин 1 -> 5 Если граф ориентированный, то направление дуг в изоморф- ных графах должно совпадать. Чтобы узнать, представляют ли две матрицы смежности изо- морфные графы, можно произвести всевозможные одинаковые перестановки строк и столбцов. 5* 67
Если после одной из этих перестановок возникнет матрица, совпадающая с заданной, то сравниваемые графы изоморфны. Для этого требуется максимум п! перестановок, где п — число вер- шин графа. Иногда для определения изоморфности определяют парамет- ры обоих графов: число вершин, число ребер, число компонентов связности, последовательность степеней вершин в убывающем порядке. Если какие-то из этих параметров разл'ичны, то эти графы различны. Однако если все параметры у двух графов совпали, это не гарантирует изоморфности, т. е. это необходимое, но недоста- точное условие [24]. Так, на рис. 21 приведены два графа, у ко- торых эти параметры совпадают, и тем не менее они различны. Рис. 21. Пример неизоморфных графов а — конверт; б - ромб На рис. 22 приведен граф, изоморфный графу «пятиконечная звезда» (см. рис. 12). Рис. 22. Граф, изоморфный графу «пятиконечная звезда» 68
Двудольный граф (биграф, четный граф) - граф, который мо- жет быть представлен двумя непересекающимися подмножества- ми вершин, причем все ребра соединяют вершины из разных подмножеств. Псевдограф содержит и ребра, и дуги. Тривиальный граф содержит только одну вершину. Иногда граф задают в виде множества образов Г или прообра- зов Г-1. Множеством внутренней устойчивости графа называется подмножество таких его вершин, которые несмежны между собой. Множеством внешней устойчивости графа называют такое подмножество его вершин, если любая вершина, не принадлежа- щая этому подмножеству, смежна с вершинами из этого подмно- жества. Множество внешней устойчивости, содержащее наименьшее число вершин, называют наименьшим внешне устойчивым множе- ством, а число элементов этого множества — Числом внешней устойчивости графа. Операции над графами Полный граф — это граф, в котором все вершины связаны друг с другом. Очевидно, что это аналог универсума в теории мно- жеств. Поэтому можно ввести операцию дополнения графа до полного, например, в матрице смежности неориентированного графа нули заменяются на единицы, а единицы — на нули, иск- лючая главную диагональ. Вводятся также операции объединения графов, когда объеди- няются множества вершин и заданных на них отношений, и соединение графов, когда находится пересечение указанных множеств. Используются и такие операции, как удаление вершины, уда- ление ребра, добавление вершины, добавление ребра. В настоящее время в ЭВМ графы чаще всего задаются спис- ками смежности и массивом указателей на эти списки [26]. Задачи на графах могут быть решены, например, системой компьютерной математики Matematica (3,4) фирмы Wolfram Research,Inc. — пакет расширения «Дискретная математика» (DiscreteMath) — представление графов, создание графов, свой- ства графов, алгоритмическая теория графов. 69
4.3. Понятие о задачах на графах Одной из первых задач в теории графов считается задача Эйлера (1736 г.) - задача о кёнигсбергских мостах [19, 26]. Ее решение Л. Эйлер опубликовал, когда работал в Российской академии наук. Расположение мостов в г. Кёнигсберге на реке Преголь в то время приведено на рис. 23, а, а соответствующий неориентированный граф - на рис. 23, б. Требуется пройти каж- дый мост по одному разу и вернуться в исходную часть города. Рис. 23. Задача о кёнигсбергских мостах: а — расположение мостов в г. Кёнигсберге на реке Преголь; б — соответствующий неориентированный граф Обходу мостов соответствует последовательность ребер гра- фа, в которой два соседних ребра имеют общую вершину. Так как в конце обхода нужно вернуться в исходную часть города и на каждом мосту побывать по одному разу, такой обход должен быть простым циклом, содержащим все ребра графа. В дальнейшем та- кие циклы стали называть эйлеровыми, а графы, имеющие эйле- ровые циклы, — эйлеровыми графами. Эйлеров цикл можно вычертить, не отрывая пера от бумаги, причем процесс вычерчивания начинается и заканчивается в од- ной точке. Таков граф «звезда», изображенный на рис. 12. Оказывается, конечный неориентированный граф G эйлеров тогда и только тогда, когда он связен и степени всех его вершин четны [19]. В графе, соответствующем задаче о кёнигсбергских мостах, все вершины нечетны. Следовательно, эта задача неразрешима. 70
Граф только с двумя нечетными вершинами можно начертить «одним росчерком пера», но при этом начало будет в одной вер- шине, а конец — в другой. Пример — граф из двух вершин и одно- го ребра. С другой задачей — задачей раскраски графов — связана «за- дача четырех цветов» [19]. Это задача раскраски карты, т.е. раз- биения плоскости на связные области. Достаточно ли четырех цветов для раскраски любой карты? По некоторым сведениям, еще в 1840 г. об этой задаче знал известный немецкий математик А.Ф. Мёбиус. Только сравнительно недавно два американских математика доказали разрешимость этой задачи, использовав компьютер. В практических приложениях имеет большое значение задача нахождения кратчайшего пути между двумя вершинами связного неориентированного графа. К такой задаче сводятся многие зада- чи выбора наиболее экономичного (с точки зрения расстояния, времени (числа шагов) или стоимости энергозатрат, трудоемкос- ти) маршрута по имеющейся карте дорог (задача коммивояжера), многие задачи выбора наиболее экономичного способа перевода ‘ системы из одного состояния в другое и т.д. Имеется транспортная задача, решение которой определяет рациональный план перевозок, который обеспечивает, например, их минимальную стоимость или доставку в кратчайшее время. Другая задача - о наибольшем потоке в частном классе гра- фов - транспортной сети - формулируется следующим образом. При заданной конфигурации транспортной сети и известной пропускной способности ее дуг найти наибольшее значение по- тока, который может пропустить сеть, а также распределение это- го потока по дугам транспортной сети [18]. Здесь используется дополнительное понятие — разрез сети, который рассекает все пути, ведущие от начальной вершины - истока, к конечной, на- зываемой стоком. Такие задачи часто решаются в экономике. Графы используются при анализе и синтезе систем с конеч- ным числом состояний. Вершины графа в этом случае соответ- ствуют состояниям дискретной системы, а дуги, например, усло- виям перехода между состояниями или вероятностям перехода между ними. Часто также используются граф-схемы алгоритмов, о которых речь будет идти в дальнейшем. Графом можно описать схемы технических устройств, напри- мер, линии связей печатной платы, топологию микросхем и т.д. 71
4.4. Задача о Ханойской башне Рассмотрим пример представления графом изменения состо- яний дискретной системы [18]. Это так называемая задача о Ханойской башне. Имеются три стержня, на первом из них нани- зано п дисков, диаметр которых убывает снизу вверх. Ставится цель: перекладывая диски по одному, расположить их в таком же порядке на третьем стержне, используя в качестве промежуточ- ного второй стержень и соблюдая условия, чтобы ни на каком шаге больший диск не оказался выше меньшего ни на одном из стержней. Оптимизация заключается в достижении цели за наименьшее число шагов. Легенда гласит, что в одном буддийском монастыре во Вьет- наме на первом стержне нанизано 64 диска. Если переложить все их по указанным правилам на третий стержень, то наступит ко- нец света. Конец света — вопрос философский, но, тем не менее, не будем испытывать судьбу и рассмотрим задачи с меньшим числом дисков. Рассмотрим n = 1 (рис. 24). Рис. 24. Задача о Ханойской башне для n = 1: а — исходное состояние; б - целевое состояние Задача для п — 1 решается за один шаг, но возможен и неопти- мальный вариант — два шага, т.е. сначала диск устанавливают на второй стержень, а потом на третий. Обозначим X, Y и Z множества дисков, надетых соответ- ственно на первый, второй и третий стержни. Состояние такой системы будем описывать набором элементов этих множеств (X,Y,Z). 72
Тогда возможные состояния такой системы имеют вид: XYZ (1,0,0) — исходное, (0,0,1) - целевое, (0,1,0) - промежуточное. Представим состояния системы в виде графа с использовани- ем координатной плоскости с осями X и Z (рис. 25). Такое пред- ставление избавляет нас от необходимости указывать состояние вершин. Рис. 25. Представление графом задачи о Ханойской башне при n = 1 Третья ось на рис. 25 не указана, множество Y всегда можно получить как дополнение множеств X, Z до полного множества дисков. Тогда путь 11 соответствует оптимальному решению зада- чи, а путь 101 — неоптимальному. Рассмотрим случай п = 2. Будем описывать элементы мно- жеств в виде столбца цифр, соответствующих убыванию диамет- ра дисков: XYZ 1 (2,0,0) - исходное состояние, (2,1,0) - 1-й шаг, (0,1,2) - 2-й шаг, 1 (0,0,2) — 3-й шаг, целевое состояние. Это оптимальное решение задачи за 3 шага. Возможны также неоптимальные последовательности. Изобразим вначале все воз- можные последовательности в виде графа и обозначим все ребра следующим образом (рис. 26). 73
а б Рис. 26. Возможные последовательности решения задачи о Ханойской башне для п=2: а — для трех множеств X, Y, Z; б — для двух множеств X, Z Представим теперь случай п — 2 на координатной плоскости, используя координаты — множества X, Z (первая и третья коор- динаты). Получим рис. 27, на котором отмечены дуги, соответ- ствующие рис. 26, б. Видно, что этот граф как бы содержит в себе три графа для n = 1, а оптимальное решение соответствует 1 1 последовательности дуг а,Ь,с (2,0; 2,0; 0,2; 0,2). Общий способ решения задачи о Ханойской башне может быть получен путем анализа трансформации графа для п дисков при переходе к диску n + 1. Граф в задаче о Ханойской башне имеет такую особенность, что все ребра имеют одинаковую длину, равную единице, что со- ответствует одному шагу состояния дискретной системы. Оптимальный переход осуществляется всегда из нижней ле- вой точки крайнего правого треугольника. Степени всех вершин, кроме крайних, равны 3. Есть три пути, как у витязя на распутье. Кратчайший путь для данных графов можно найти полным пере- 74
Рис. 27. Представление графом задачи о Ханойской башне для п = 2 бором возможных путей. Рассмотрим систематический метод оп- ределения этого пути. Общее правило нахождения кратчайшего пути в графе с ребрами единичной длины состоит в том, чтобы каждой вершине Xj приписать индекс равный длине кратчай- шего пути из данной вершины в конечную: 1) конечной вершине приписывается индекс 0; 2) всем вершинам, из которых идет ребро в конечную верши- ну, приписывается индекс 1; 3) всем вершинам, еще не имеющим индексов, из которых идет ребро в вершину с индексом л, приписывается индекс Xi+). Так продолжается до тех пор, пока не будет помечена началь- ная вершина. По окончании разметки индекс начальной верши- ны будет равен длине кратчайшего пути. Сам кратчайший путь найдем, двигаясь из начальной верши- ны в направлении убывания индексов. Такой способ определения кратчайшего пути является част- ным случаем нахождения оптимального решения по методу динамического программирования Р. Веллмана. 75
Подобную задачу должен решать интеллектуальный транс- портный робот на складе при перекладке, например, ящиков раз- личной величины с одной площадки на другую с использованием одной промежуточной площадки. Рассмотрим нахождение кратчайшего пути в графе с ребрами неединичной длины. Если граф имеет ребра неединичной длины, то подобное присвоение индексов должно учитывать их длину, причем индексы эти могут уменьшаться в ходе разметки вершин с учетом индексов всех соседних вершин [18]. Оптимальный путь ищут, двигаясь из начальной вершины в сторону тех вершин, ин- декс которых равен индексу текущей минус длина ребра. Может быть, таких оптимальных (кратчайших) путей будет и не один, но все они имеют длину, равную индексу начальной вершины после завершения разметки. 5. Переключательные функции и способы их задания 5.1. Понятие о переключательных функциях Функция, принимающая значение из множества {0, 1, j, k-1], аргументы которой принимают значения из этого же множества, называется переключательной функцией (ПФ), или функцией k-значной логики [9]. Это может быть тернарное множество Т = {0, 1,2} или мно- жество Q = {0, 1,2, 3}, или другое k-элементное множество. Такая функция может быть задана таблицей из kn строк, где п — количество аргументов. Например, переключательная функ- ция для п=2 (переменные а, Ь) и к=3 представлена в табл. 8. В табл. 8 число строк равно числу размещений с повторения- ми из тернарного множества по двум местам. Подобные таблицы называются таблицами истинности или соответствия. Получим номер ПФ в троичной системе счисления: 222111000. Здесь каждый разряд соответствует степени числа 3: З22, З21, З20, З12, 3й, З10, З2, 31,3°. При этом 22, 21, 20, 12, 11, 10, 2, 1,0 — троичные числа, соответствующие значениям перемен- ных а, Ь. 76
Таблица 8 Некоторая трехзначная переключательная функция двух переменных f(ab) Можно получить номер ПФ в десятичной системе счисления: 2,з(23|+2-3°) +2.3(2-з|+1.з°) +2 ,з(2-3'+0 3°) +1.3(1-3|+2 3О) + +1.3(1-3'+1-зО) +1 .з<13,-03°) +о.З(О-3'+2-зО) +0 .З<оз1+оз°> +о-з(1-3'+1-зО). Здесь степени числа три - 8, 7, 6, 5, 4, 3, 2, 1, 0. Если различных двухзначных ПФ22 , то число различных k-значных ПФ равно кк . Выделяется ряд различных элементарных функций [9]: 1) X, л х2 = min(xt, х2) - конъюнкция; 2) X] v х2 = max(xt, х2) — дизъюнкция; 3) X] +х2 (modk) — сумма по модулю к — остаток от деления суммы (Xj + х2) на к; . 4) Xj = Xj + l(modk) - цикл - циклический сдвиг значений; 5) константы 0, 1, 2,к-1. Sj Одноместные функции имеют вид Xj, где 5j — показатель зна- чения переменной: х- = 0, если 8j * Xj, иначе xj = к — 1, 8j = {0, 1,... к-1}. 77
Часто таблицы переключательных функций представляют для компактности, как показано в табл. 9—11. Таблица 9 Трехзначная ПФ «дизъюнкция а, Ь» Таблица 11 Т]рехзначная ПФ «а плюс 1 по модулю 3 - циклический сдвиг а» а (а + l)mod3 0 1 1 2 2 0 Функция переключательного типа может быть проиллюстри- рована блоком «решение» в схемах алгоритмов [11]. 5.2. Двоичные переключательные функции и способы их задания Функция f, зависящая от п переменных, называется двоичной переключательной (булевой), если она и любой из ее аргументов X], 1 = 1,п принимают значение только из конечного множества, содержащего два элемента. Таким множеством может быть бинарное множество В = {0,1}. 78
Произвольная переключательная функция задается одним из способов: матричным (табличным), геометрическим, аналити- ческим. При матричном способе переключательная функция f(xb ..., хп) задается таблицей ее значений - таблицей истинности - одномерной или двухмерной (картой Карно), где указываются наборы переменных и соответствующие значения функции. Под двоичным набором S = (Sb S2,... 5n,>, S e {0,1} понимает- ся совокупность значений аргументов xt, х2,..., хп ПФ. Иногда двоичные наборы в таблицах истинности удобно представлять номерами наборов: № набора^ б,?""1 + 522п~2 + ... + 5П2°. Значения функций на 2п-наборах также могут быть заданы де- сятичным номером: № функции = f2„.,2n-1 +f2„.22n'2 +"-+f02°. При геометрическом способе ПФ задается с помощью соот- ветствующей отметки вершин n-мерного куба, который по сути является решеткой Хассэ, представляющей собой частично упо- рядоченное множество наборов (каждая вершина - точка п-мер- ного пространства) [9]. Каждый путь из вершины, соответствую- щей нулевому набору в вершину единичного набора, соответ- ствует увеличению сравнимых наборов (рис. 28, отношение >). Рис. 28. Геометрическое представление переключательной функции 79
Этот рисунок изображает частично упорядоченное множест- во наборов ООО, 001, 010, 011, 100, 101, НО, 111, на которых задана переключательная функция трех переменных, например, а, Ь, с. Вершины, на которых функция равна 1, должны быть как-то отмечены. Переключательная функция может быть задана и некоторым словесным описанием, указывающим, на каких наборах аргумен- тов какое значение она принимает, и исключающим неверное толкование, всякую двусмысленность. Переключательная функ- ция может быть задана перечислением ее рабочих (единичных), запрещенных (нулевых) и условных наборов (на этих наборах функция не определена). Для упорядоченного задания п-мерных наборов переменных функции f(xb х2, ..., хп) удобно рассматри- вать их в виде целого неотрицательного числа. При этом млад- ший разряд располагается справа. Например, для переменных х5, Х4, х3, х2, X! конкретное их значение истинности 1, 0, 0, 1, 1 соот- ветствует двоичному числу 10011. Это число еще называют номером набора. Для компактной записи наборов значений пере- менных логической функции целесообразно представлять их номерами — числами в десятичной, восьмеричной, шестнадцате- ричной системах счисления. Такой номер-набор называют еще весовым состоянием, или весом этого набора. Так, 100112<-> 1910«-> 238«-> 1316, «-> знак эквивалентности. В случае использования десятичной системы счисления каждой переменной соответствует степень числа 2 (вес разряда) в зависимости от номера переменной, например, в порядке 24 23 22 21 2°. Зафиксированный порядок переменных, каждая из которых имеет свой вес, называется базой функции (старший вес — слева). Как мы знаем, переключательная функция может быть задана таблицей истинности, которая иногда еще называется таблицей соответствия. Рассмотрим таблицу истинности некоторой недо- определенной логической функции (табл. 12). Этой таблице соответствует переключательная (логическая) функция z(x3 х2х0 = 2,5[0,4,7] {1,3,6}. Здесь зафиксирована база переменных функции z - х3 х2 Х| (в табл. 12 над этими переменными указан их вес и введен столбец весового состояния ВС), перечислены рабочие наборы в десятич- ном коде - 2,5, запрещенные наборы в квадратных скобках - 0,4,7, и условные наборы в фигурных скобках - 1,3,6. Такое зада- ние функции будем называть символической формой. 80
Таблица 12 Таблица истинности 22 *3 21 х2 2° Х1 ВС Z 0 0 0 0 0 0 0 1 1 0 1 0 2 1 0 1 1 3 1 0 0 4 0 1 0 1 5 1 1 1 0 6 1 1 1 7 0 Пусть задана переключательная функция f(x5x4x3x2X|) рабо- чими двоичными наборами 10011, 01010, 11000 и двоичными запрещенными наборами 00111, 00101. Тогда в восьмеричной системе счисления имеем следующую символическую форму: f(x5x4x3x2x1)8 = 23, 12, 30[07, 05], а в шестнадцатеричной форме f(x5x4x3x2x1)16= 13, 0А,18[07, 05]. Очевидно, что для задания логической функции одно из ука- занных множеств можно опустить (табл. 12). При задании симво- лической формы функции в десятичной форме знак указания системы счисления опускают. У полностью определенной логи- ческой функции можно указывать одно из множеств. Таблицу истинности можно представить в двухмерном виде, который, как уже говорилось, называется картой Карно (табл. 13-14). Около карты Карно (табл. 14) иногда указываются области единичного значения переменных. Каждая клетка такой таблицы соответствует одному набору значений переменных, весовое сос- тояние которого указано в правом верхнем углу, и в ней простав- лено значение функции на таком наборе. б~278 81
Таблица 13 Одномерная таблица истинности некоторой функции 22 *3 2* *2 2° Х1 ВС Z 0 0 0 0 0 0 1 0 2 1 1 0 0 4 0 1 0 1 5 1 1 1 1 7 0 Таблица 14 Двухмерная таблица истинности х2 Переключательная функция может быть представлена в виде формулы, такое представление носит название аналитического. Например, переключательная функция, заданная табл. 13-14, может быть представлена формулой xjx, vx2xi =х2 Фхь т.е. дан- ная функция не зависит от х3. 5.3. Основные бинарные логические операции Конъюнкцией называется бинарная логическая операция, соединяющая две двоичных переменных а и Ь, принадлежащих множеству {0,1}, в такую переключательную функцию с, которая 82
равна 1 (истинна) только тогда, когда равны 1 (истинны) обе пе- ременных. Операция конъюнкции обозначается символом л (&) или просто «•». В ряде случаев точку также опускают. Конъюнкция может быть представлена таблицей, подобной таблице Кэли1 для абстрактных алгебраических операций, назы- ваемой двухмерной таблицей истинности (табл. 15). Таблица 15 Таким образом, конъюнкция — это операция В2 н> В, где В - двухэлементное множество {0,1}, где 0,1 - значения истинности переменных. Известна также другая форма таблицы истинности — одномерная (табл. 16). Таблица 16 Бинарная конъюнкция а ь с = а л b 0 0 0 0 1 0 1 0 0 1 1 1 Конъюнкция п переменных истинна тогда и только тогда, когда все составляющие ее переменные истинны (равны 1). Логическая операция, соответствующая союзу «или» в нераз- делительном смысле, называется дизъюнкцией (disjunctio — разде- ление). Дизъюнкцией называется логическая операция, соединяющая две переменные а и b в такую переключательную функцию с, ко- 1 Кэли (Кейли) (Cayley) Артур (1821-1895) — английский математик. 6* 83
торая равна 0 (ложна) только тогда, когда ложны обе переменные (равны 0). Дизъюнкция обозначается символом v. В латыни союзу «или» в неразделительном смысле соответ- ствует слово vel. Символ v происходит от первой буквы этого слова. Таблица истинности дизъюнкции (одномерная) имеет вид табл. 17. Таблица 17 Бинарная дизъюнкция а ь с = a v b 0 0 0 0 1 1 1 0 1 1 1 1 Дизъюнкция п переменных ложна тогда и только тогда, когда все составляющие ее переменные ложны. Логическая операция, соответствующая частице «не», слово- сочетанию «неверно, что», называется инверсией. Пример инвер- сии: «Студент Петров не отличник», «Неверно, что студент Ива- нов является спортсменом». Инверсией называется также переключательная функция (ПФ), полученная отрицанием данной ПФ. Инверсию а обозначают а, используя знак дополнения мно- жеств. Таблица истинности унарной операции инверсии В В име- ет вид, представленный в табл. 18. Таблица 18 Бинарная инверсия а с = а 0 1 1 0 Логическая операция, соответствующая союзу «если, ...то», называется импликацией. Примеры импликации: «Если вы будете хорошо заниматься в семестре, то сдадите экзамен по дискретной математике». 84
Импликацией называется также логическая операция, соеди- няющая две переменных а и b в такую переключательную функ- цию с, которая равна 0 (ложна) только тогда, когда а истинно, а b ложно. Импликация обозначается символом Таблица истинности импликации имеет вид, представленный в табл. 19. Таблица 19 Импликация а ь. с = а -> b 0 0 1 0 1 1 1 0 0 1 1 1 Приведенное выше высказывание преподавателя будет рас- ценено студентами как ложь, если они действительно хорошо занимались в семестре, а на экзамене получили неудовлетвори- тельные оценки. Логическая операция, соответствующая союзу «тогда и толь- ко тогда, когда», называется эквиваленцией (эквивалентностью). Пример эквиваленции (эквивалентности): «Я поеду к морю тогда и только тогда, когда сдам экзамен по дискретной матема- тике». Эквиваленцией (эквивалентностью) называется также логи- ческая операция, соединяющая две переменных в такую ПФ, которая истинна тогда, когда обе образующих ее переменных одновременно истинны или одновременно ложны. Эквивален- ция обозначается символом <->. Таблица истинности эквиваленции имеет вид, представлен- ный в табл. 20. Таблица 20 Эквиваленция а ь с = а <-» b 0 0 1 0 1 0 1 0 0 1 1 1 85
Далее мы познакомимся с другими логическими операциями, которым нет простого эквивалента в разговорной речи, напри- мер, суммой по модулю 2 (исключающее ИЛИ). Заметим, что операции могут быть выражены через другие операции, например, импликация а -» b может быть представле- на в виде a v Ь, что может быть доказано построением соответ- , ствующих таблиц истинности. Область определения ПФ п переменных — множество всех возможных наборов длины п при матричном задании ПФ, а при геометрическом способе задания — множество всех вершин п-мерного куба. Переключательную функцию, определенную на всех своих наборах, называют полностью определенной. Вырожденные функции зависят не от всех переменных. Например, для бинарной ПФ: вырожденная ПФ (табл. 21) — такая функция, которая зависит не от всех п переменных. Таблица 21 столбцу х3, т.е. z = х 3, от х2, х3 - z не зависит! Двоичные ПФ описывают элементную базу электронной вы- числительной техники и устройств автоматики и телемеханики - комбинационные и последовательностные автоматы, которые будут рассмотрены в дальнейшем. 86
Итак, основные двоичные логические операции: 1) дизъюнкция v («ИЛИ»); 2) конъюнкция & («И»); 3) инверсия, или отрицание " («НЕ»); 4) импликация -> («ЕСЛИ, ТО»); 5) эквиваленция <н> («ТОГДА И ТОЛЬКО ТОГДА, КОГДА»). Кроме того, имеется операция: 6) сумма по модулю 2 Ф («НЕВЕРНО, ЧТО ТОГДА И ТОЛЬ- КО ТОГДА, КОГДА» «ИЛИ-ИЛИ»), Имеются также специальные операции: 7) стрелка Пирса Ф («ИЛИ-НЕ»); 8) штрих Шеффера | («И-НЕ») и др. Алгебра, несущим множеством которой является множество ПФ, а операциями — дизъюнкция, конъюнкция и инверсия, называется булевой алгеброй ПФ. ПФ можно описать некоторые условия, например, равенства (неравенства) некоторых битов, значения отдельных битов 0 или 1, например: ai(a2a3 va2a3) = ai(a2 Фа3) означает, что бит а] должен быть равен нулю и при этом биты а2 и а3 равны. Решить логическое уравнение - значит определить значения переменных, при которых соответствующая ПФ — 1 (истинна), где 1 — константа. Решить систему логических уравнений - значит определить значения переменных, при которых соответствующие ПФ = 1. Пример. Дана таблица истинности для трех ПФ (табл. 22). Таблица 22 Таблица истинности трех ПФ ВС zi z2 z3 Яз а2 Я1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 1 0 2 0 1 0 0 1 1 3 0 0 1 1 0 0 4 0 1 0 1 0 1 5 0 0 1 1 1 0 6 1 0 1 1 1 1 7 0 1 0 87
Zj = 0,6[1, 2, 3, 4, 5, 7]; z2=l,2, 4, 7[0, 3, 5, 6] = а1Фа2Фа3=1; z3 = 0, 3, 5, 6[1,2,4,7]. Здесь указаны номера наборов, на которых ПФ равны едини- це. Это так называемая символическая форма задания ПФ (СФ ПФ). Видно, что общих решений нет. Если же взять z2 - aj Ф а2 Ф а3 = 1, то получим z2 = 0, 3, 5, 6[1, 2, 4, 7], т.е. решение системы zb z2, z3 = 0,6. Если же в уравнении указывается равенство с другой пере- менной или функцией, то, как мы уже знаем из теории множеств: а| Ф а2 Ф а3 а3, а^ Ф а2 Ф а3 Ф а3 0, а^ Ф а2 0. Решение: 01, 10 (а, а2). 5.4. Понятие о переключательных схемах и технической реализации переключательных функций Исторически первое практическое применение теория перек- лючательных функций нашла в так называемых переключатель- ных схемах (ПС, контактных схемах). Такие схемы построены на механических переключателях и реле (дистанционных переклю- чателях), содержащих контакты двух типов: замыкающие, обоз- j начаемые:----, и размыкающие, обозначаемые: При этом параллельное соединение контактов соответствует дизъюнкции, а последовательное - конъюнкции. а Например, переключательная схема, реализующая имплика- | цию Х| -> х2, представлена на рис. 29. Такая схема проводит ток, если х2 замкнут (сработал) или х( замкнут (не сработал). 88
*1 Рис. 29. Переключательная схема, реализующая импликацию xt -» х2 Переключательная реализация функции f2(X[X2) = х(х2 пред- ставлена на рис. 30. Рис. 30. Переключательная реализация f2(XjX2) = xtx 2 Предполагается, что контакты срабатывают, когда подается напряжение на обмотки соответствующих реле, не изображен- ных на рис. 29—30, или нажимаются соответствующие кнопки, включаются соответствующие тумблеры, и т.д. Иногда с целью упрощения переключательные схемы изобра- жают в виде только символов контактов (рис. 31). Рис. 31. Упрощенная переключательная схема эквиваленции Xj<-»x2 89
Таким образом, каждой такой последовательно-параллельной схеме можно поставить в соответствие некоторую переключа- тельную функцию (формулу логики). Переключательная схема - схема из замыкающих, размыкаю- щих и переключающих контактов, показана на рис. 32. Рис. 32. Переключательная схема Последовательно-параллельная контактная схема соответ- ствует конкретной ПФ. Упрощенная ПС изображается в символах переменных (рис. 33). Рис. 33. Упрошенная переключательная схема Применяя равносильные преобразования ПФ, которые рас- сматриваются далее, можно упрощать ПС, уменьшая число кон- тактов. Возможна реализация ПФ схемами из функциональных эле- ментов, программно. Техническая реализация базисных логичес- ких функций может быть основана на использовании различных физических явлений, например, базисы И-НЕ, ИЛ И-НЕ - явле- ний в полупроводниках, импликация — магнитных явлений. В ряде случаев используются пневматическая реализация (струйные элементы), гидравлическая реализация, оптическая реализация. Переключательные (логические) элементы изображают в ви- де прямоугольников, в которых инверсные входы и выходы изоб- ражают в виде кружков, а символы логических операций указы- вают в верхней части прямоугольника. Это условное графическое обозначение логических элементов (рис. 34). 90
а б в г де ж з и Рис. 34. Условное графическое обозначение логических элементов по стандарту РФ: а — константа 1; б — константа 0; в — конъюнкция; г — дизъюнкция; д - инверсия; е - x]-X2-x1vx2; ж— X|VX2 = X|-x2; з - X! © х2; и = х, © х2 = X! ’-> х2 Путем соединения логических элементов получают схему, ре- ализующую требуемую логическую функцию в виде суперпози- ции базисных функций, каждая из которых реализуется опреде- ленным логическим элементом. В электронных приборах конъюнкция и дизъюнкция реали- зуются соответственно последовательным и параллельным соединением ключевых полупроводниковых элементов, отрица- ние — включением нагрузки в коллекторную цепь транзистора [9]. Так, переключательная функция f(abcd) = a d v be реализует- ся, как показано на рис. 35. Здесь кружки - это транзисторы, т. е. элементарные бескон- тактные переключатели (ключи), прямоугольники - это резисто- ры. На один из полюсов схемы подается напряжение питания, на другой — «нуль вольт». Реализация импликации может быть основана на исполь- зовании магнитных процессов. Представление функции a v be в виде суперпозиции операций -» выглядит следующим образом; a v be = а -» Ьс = = а-> be =а ->(b vc) = = a-»(b-»c). 91
Рис. 35. Реализация ПФ транзисторной схемой Переключательные схемы и схемы из функциональных эле- ментов реализуют так называемые конечные автоматы, которые будут рассмотрены далее. 5.5. Использование логических операций в теории графов Логические операции используются в алгоритмах на графах, например, при поиске путей в графе. При этом матрица смеж- ности графа умножается сама на себя. Умножение проводится по правилам обычной алгебры с тем исключением, что операция суммы заменяется дизъюнкцией, а операция умножения - конъ- юнкцией. Тогда квадрат матрицы смежности представляет мат- рицу всех путей длиной 2, куб - длиной 3 и т.д. Рассмотрим при- мер (рис. 36). 92
х1 Х2 х3 О 1 О 1 О 1 1 о о Х1 Х2 хз Рис. 36. Ориентированный граф и его матрица смежности Найдем все пути длиной 2: Х1 х2 х3 0 1 0 Х1 м2 = мм = 1 1 0 1 х2' 1 0 0 х3 X] х2 х3 О 1 0 х, 1 0 1 х2 1 0 0 х3 Х1 х2 х3 1 0 1 X] 1 1 0 х2 О 1 0 х3 Получили матрицу М2 всех путей в графе длиной 2. Процесс получения первой строки М2 подробно рассмотрен в табл. 23. Таблица 23 Вычисление первой строки М2 0 1 0 Первая строка М Л Л Л Поразрядная конъюнкция 0 1 1 Первый столбец М 0 V 1 V 0 = 1, т.е. имеется путь из Xjbx, по двум дугам: tj, t4 Дизъюнкция результатов 93
6. Элементарные двоичные переключательные функции и функциональная полнота систем переключательных функций 6.1. Элементарные переключательные функции одной переменной Переключательные (логические) функции, соответствующие логическим операциям В2н> В, называют элементарными. Коли- чество переключательных (логических) функций от п перемен- ных определяется выражением 22П, поскольку |ВП| = 2П, а на каждом из 2П наборов переключательная (логическая) функция может принимать одно из значений из того же множества В (табл. 24). Таблица 24 Переключательные функции от п переменных № . п/п Набор значений переменных Номер логической функции 0 1 2 3 22 -1 1 00...00 0 1 0 1 1 2 00...01 0 0 1 1 1 3 00...10 0 0 0 0 1 4 00...11 0 0 0 0 1 2" 11...11 0 0 0 0 1 Например, рассмотрим все переключательные (логические) функции одной переменной (табл. 25). 94
Таблица 25 Переключательные функции одной переменной X Переключательная (логическая) функция ,o 5 Вес разряда 52 вектора значения функции f0(x) f|(x) G(x) f3(x) 0 0 1 0 1 1 0 0 i 1 Поскольку 22' ~ 4, то имеются четыре логических функции одной переменной, две из них - константы: f0(x) = 0, f3(x) = 1 (f0(x) - константа нуля, f3(x) - константа единицы). Здесь номер функции означает десятичное число, соответствующее двоично- му числу, записанному в соответствующем столбце табл. 25. Функция f2(x) = х, т.е. совпадает со значением переменной. Эта функция называется функцией повторения. Функция f((x) = х нам уже известна - это инверсия. Можно заметить, что для каждой функции одной переменной существует инверсная ей функция: f0(x) = f;(x); f3(x) = f0(x); f,(x) = f2(x); f2(x) = fj(x). 6.2. Элементарные переключательные функции двух переменных Рассмотрим все функции двух переменных (табл. 26). Таблица 26 Переключательные функции двух переменных 2° 21 22 23 Набор Название функции Формула (Вебба) xi 0 1 0 1 *2 0 0 1 1 f0 0 0 0 0 Константа 0 0 fl 1 0 0 0 Функция Пирса (Вебба), «стрелка Пирса», ИЛИ-НЕ х14х2= х,х2 95
Продолжение Набор Название функции Формула (Вебба) Х| 0 1 0 1 *2 0 0 1 1 f2 0 1 0 0 Запрет х2 Х]Х2 G 1 1 0 0 Отрицание х2 *2 f4 0 0 1 0 Запрет X, Х,Х2 f5 1 0 1 0 Отрицание Xj Xj f6 0 1 1 0 Сложение (сумма) по mod2 Х1 © х2= XjX2V Х|Х2 f7 1 1 1 0 Функция Шеффера, «штрих Шеффера», И-НЕ Х| 1 х2 = X] V х2 f8 0 0 0 1 Конъюнкция, И х,х2 <9 1 0 0 1 Эквиваленция (эквивалентность) X] о х2= Х|Х2 V Х| х2 Go 0 1 0 1 Повторение х. X] f.i 1 1 0 ] Импликация х2 в Xj X2-> X] Х2 V X! fl2 0 0 1 1 Повторение х2 Х2 Пз 1 0 1 1 Импликация х, в х2 Х| -> х2 Xj vx2 f|4 0 1 1 1 Дизъюнкция, ИЛИ X] V х2 fl5 1 1 1 1 Константа 1 1 -2 4 Всего таких функций имеется 2 =2=16. Есть функции, зави- сящие только от одной переменной. Есть функции, не зависящие от переменных, - константы 0, 1. Такие функции называют вы- рожденными'. 96
f3(x, x2) =x2; f5(x! x2) =x,; fl0(x, x2) = x^ futa) = x2; fo(xi хг) = 0; fis(xi хг) ~ 1- Некоторые функции мы уже знаем: конъюнкцию fg(x, х2) = Х|Х2 (точку между х( и х2 опускаем); эквиваленцию (эквивалент- ность) f9(x, х2) = Х| <-> х2 = х,х2 v х, х2 (здесь эквиваленции пред- ставлена в виде дизъюнкции двух конъюнкций, что можно доказать, составив таблицу истинности); импликацию fj |(х( х2) = х2-»Х] = х2 v X,, f,з(Х] х2) = X] -» х2 = X, v х2; дизъюнк- цию f14(Xj х2) = X] V х2. Кроме этого, имеются другие функции, зависящие от двух пе- ременных: f^X] х2) = XjX2 - функция Пирса1 («стрелка Пирса»); f2(x, х2) = х,х2 - запрет х2; f4(xj х2) = х,х2 - запрет х^ f6(x, х2) = X] ® х2 - сложение по модулю 2 (функция, инверсная эквиваленции); f7(x( х2) =Xj v х2 - функция Шеффера («штрих Шеффера»). 6.3. Функциональная полнота систем переключательных функций Элементарные переключательные функции позволяют полу- чить сложные функции от большего числа аргументов путем подстановки в данную функцию вместо ее переменных других функций. Такой метод получения функций называется суперпози- цией. Например, имея элементарные функции двух переменных г, = XjX2 и z2= х3 v х4, можно получить функции z3 — Х|(х3 v х4), z4 = х3 v Х|Х2, зависящие от трех переменных. При использовании суперпозиции возникает следующая проблема: каким должен быть минимальный состав элементар- ных логических функций, который позволяет путем их суперпо- зиции получить любую, сколь угодно сложную логическую функ- цию от конечного числа переменных. Эта проблема называется проблемой функциональной пол- ноты переключательных функций. Для ее решения были выделе- ны следующие классы логических функций. 1 Пирс Чарльз Сандерс (1839-1914) - американский философ-идеалист, логик, математик и естествоиспытатель, родоначальник прагматизма. 7-278 97
1. Класс функций, сохраняющих константу 0. В этот класс входят функции, которые на нулевом наборе переменных прини- мают нулевое значение: f(00...0) = 0. Такова, например, конъюнк- ция f8(00) = 0-0 = 0. 2. Класс функций, сохраняющих константу 1. В этот класс входят функции, которые на единичном наборе переменных принимают единичное значение: f(l 1 ... 1) = 1. Этим свойством также обладает конъюнкция f8(l 1) = 1-1 = 1. Классы 1, 2 легко устанавливаются по таблице истинности. 3. Класс самодвойственных функций. Переключательные функции f(xI х2... хп) и g(X]X2... хп) называются двойственными, если имеет место равенство f(x( х2... xn) =g(x, х2... хп), т.е. когда одна функция получается из другой, если провести замену всех переменных на их инверсии и провести инверсию функции. На- пример, f8(x( х2) = х1 х2 и fl4(X] х2) = X] v х2 двойст- венны: xi v Х2 = х,х2. Это можно доказать, построив таблицу ис- тинности (табл. 27). Таблица 27 Таблица истинности Х| х2 Х| VX2 = X|X2 х,х2 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 Переключательная функция называется самодвойственной, если__она_двойственна по отношению к самой себе: f(xf х2... хп) = = f(x,x2 ...хп). Такова, например, функция f|0(X| х2) = = х,: fio(xiX2) = xi =хР Самодвойственность устанавливается по таблице истинности следующим образом: значения функции, симметричные относи- тельно середины таблицы, инверсны. Например, для f10(X] х2) значения функции представляют собой вектор'01 01', каждый раз- ряд которого является инверсным по отношению к симметрич- ному разряду относительно середины, отмеченной пунктиром. 98
Эти разряды соответствуют инверсным наборам х,х2: 00-11, 01-10. Самодвойственны функциих2, х|; х2, хг 4. Класс линейных функций. Переключательная функция называется линейной, если возможно представление в виде линейного полинома, использующего функцию сложения по мо- дулю 2: f(x, х2) = с0® с|Х, ® с2х2, где с0, с,, с2 - константы 0, 1. Например, для функции f6(x,x2) = х, ® х2 при с0 = 0, С| = с2 = 1: f6(x,x2) = 0 © 1 • Х] © 1х2. Получим все линейные функции двух переменных, задав все возможные значения с0С]С2 (табл. 28). Таблица 28 Линейные функции двух переменных с0 С1 с2 Вид полинома Можно доказать, используя, например, таблицу истинности, что: 0 0 0 0 0 0 1 *2 0 1 0 *1 0 1 1 Xj © Х2 = Xj <-> Х2 =х2 =Xj © х2 = Xj <-> х2 1 0 0 1 1 0 1 1 © х2 1 1 0 . 1 © X] 1 1 1 1 © Х| © х2 Из табл. 28 видно, что каждая линейная функция имеет ин- версную ей функцию: константа 0 - константа 1; повторение х,, х2 - инверсия Х|,х2; сложение по модулю 2 х, © х2 - эквиваленция X] <-> х2. 5. Класс монотонных функций. Монотонная функция на большем сравнимом наборе переменных принимает не меньшие значения. Это удобно проверять на решетках Хассэ. Так, для двух переменных решетка имеет вид, как на рис. 37. На рис. 37 проставлены значения монотонной функции х,. Видно, что 11 >01 >00, 11 > 10 > 00 (частично упорядоченное множество наборов). 7* 99
1jWl,X2} °{x2}(0j) 06) {x^l (00) {0} Рис. 37. Решетка Хассэ для двух переменных с указанием значений fj0(Xj х2) = х. Очевидно, что константы 0, 1 - монотонные функции, дизъ- юнкция и конъюнкция - монотонные функции, повторения Х|, х2 - монотонные функции. Система логических функций называется функционально пол- ной, если любая произвольная переключательная функция от любого числа переменных может быть представлена в виде супер- позиции функций из этой системы. Функционально полная система логических функций назы- вается минимальной, если удаление из нее хотя бы одной функции превращает ее в неполную. Критерий функциональной полноты устанавливает теорема Поста, в которой утверждается, что для функциональной полноты систем переключательных функций необходимо и достаточно, чтобы они содержали следующие функции: • не сохраняющую константу 0; • не сохраняющую константу 1; • несамодвойственную; • нелинейную; • немонотонную. 6.4. Базисы представления переключательных функций Функционально полные системы переключательных функций представляют собой базис. Всего можно получить 17 различных минимальных базисов из логических функций двух переменных. Имеются функции, обладающие всеми пятью отмеченными свойствами. Таковы функции fl(X|X2) = х,х2 и f?(xix2) ~ xi v х2 (см. табл. 26). Часто их называют соответственно ИЛИ-НЕ, 100
И-НЕ. Таким образом, это базисы, состоящие из одной функции (базис Вебба и базис Шеффера). Этот факт очень важен при тех- нической реализации дискретных устройств: достаточно иметь элементы, реализующие только одну из этих функций, чтобы построить любую, сколь угодно сложную схему. Имеются базисы, состоящие из двух функций: (И | ИЛИ [НЕ,[НЕ.. Иногда используется не минимальный базис — из трех функ- ций: • и или НЕ. Имеется и довольно экзотический базис Жегалкина: '© • И НЕ. В дальнейшем нам пригодится так называемый импликатив- ный базис: {не. Если рассматривать переключательные функции большего числа аргументов, то можно поставить задачу отыскания базисов, не зависящих от некоторых модификаций соответствующих функций. Такие модификации могут быть, например, вызваны подстановкой констант 0, 1 и инверсией переменных, что проис- ходит при некоторых отказах (дефектах) соответствующих логи- ческих элементов [34]. Такие базисы называют толерантными. Например, переключательная функция четырех переменных X] Х2 v Х3Х4 ~ толерантный базис — функционально полная толе- рантная функция, которая при подстановке констант вместо 101
переменных или при инверсии переменных модифицируется также в базисную функцию: х| = 1,х2 = 1 х3х4 базис ИЛИ-НЕ х3=1,х4 = 1 Х]Х2 базис ИЛИ-НЕ X] = 0 ' — —► X2VX3X4 ' _ _ х2 = 0 - - базисные X] Х2 V х3 х4 — х3 = 0 —► X1VX3X4 , функции х4 = 0 x,x2vx4 трех переменных — —► Xj х2 vx3 J 6.5. Пример анализа и определения свойств ПФ, заданной десятичным номером Дано; двоичная переключательная функция № 17410. Получим соответствующий двоичный код: 10101 1102(27 + 25 + 23 + 22 + 21). Таблица истинности ПФ № 174|0 показана в табл. 29. Таблица 29 Таблица истинности Переменные ВС f(abc) а ь с 0 0 0 0 0 0 0 1 1 1 0 1 0 2 1 0 1 1 3 1 1 0 0 4 0 1 0 1 5 1 1 1 0 6 0 1 1 1 7 1 Получим восьмеричный код ПФ: 256g. Получим шестнадцатеричный код ПФ: АЕ16. Получим символическую форму: f(abc)10= 1, 2, 3, 5, 7 [0, 4, 6]. В двоичном виде: f(abc)2 = 0012 v 0112 v 1012 v 1112 v 0102. 102
Определим свойства ПФ №17410. 1. Поскольку на наборе ООО ПФ равна 0, то ПФ обладает свой- ством сохранения константы «О». 2. Поскольку на наборе 111 ПФ равна 1, то ПФ обладает свой- ством сохранения константы «1». 3. Рассмотрим все возможные линейные ПФ от трех аргу- ментов в зависимости от значений коэффициентов полинома ко Ф kjC Ф к2Ь Ф к3а (табл. 30). Таблица 30 Переключательные функции от трех аргументов Значение коэффициентов Линейная функция ко к| ^2 к3 0 0 0 0 = 0 0 0 0 1 а 0 0 1 0 ь 0 0 1 1 а Ф b 0 1 0 0 С 0 1 0 1 с Ф а 0 1 1 0 с Ф b 0 1 1 1 с Ф b Ф а I 0 0 0 = 1 I 0 0 1 а = аФ 1 1 0 1 0 ЬФ 1 = b 1 0 1 1 аФЬФ1=аФЬ 1 1 0 0 1 Ф с = с 1 1 0 1 сФаФ1= с Ф а 1 1 1 0 1ФЬФс=ЬФс 1 1 1 1 сФЬФаФ1=сФЬФа Проверим, не равна ли наша функция функциям аФЬ, аФс, ЬФс, аФЬФс и их инверсиям: аФЬ, аФс,ЬФс, аФЬФс 103
Для этого получим соответствующие векторы этих линейных ПФ (табл. 31). Таблица 31 Векторы переключательных функций Переменные а Ф Ь, а ф с, b Ф с, а Ф b Ф с а Ф Ь, а Ф с, b Ф с, а® ЬФ с а ь с 0 0 0 0 0 0 0 1 1 1 ' 1 0 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 0 1 1 I 0 0 1 1 0 1 0 0 1 0 I 0 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 Видим, что ни один из полученных векторов этих восьми ли- нейных ПФ не совпадает с вектором нашей функции. Следовательно, функция № 174|0 — не линейная. 4. Определим, обладает ли наша ПФ свойствами самодвой- ственности. Для этого проанализируем ее вектор в дзоичном коде (рис. 38). Видим, что симметричные разряды 5 и 2 неортогональны. Следовательно, ПФ — несамодвойственна. У самодвойственной ПФ симметричные разряды ортогональны (противоположны). 104
5. Определим, монотонна ли наша ПФ. Посмотрим на куб соседних чисел. Монотонная функция по всем возможным путям из вершины (ООО) в вершину (111) моно- тонна. Однако наша функция на наборе (010) принимает значе- ние «1», а на большем сравнимом наборе (НО) — «0». Следова- тельно, она не монотонна. Представим вектор свойств ПФ (табл. 32). Таблица 32 Вектор свойств ПФ I 2 3 4 5 Номер свойства I I 0 0 0 Наличие свойства В восьмеричном коде вектор свойств равен 30g, а в шестнад- цатеричном — 1816. 7. Основные законы булевой алгебры и преобразование переключательных функций 7.1. Основные законы булевой алгебры переключательных функций Формулы ПФ ft и f2 равносильны, если их эквиваленция является тождественно истинной (тавтологией). Равносильность, как правило, обозначается =, но мы будем «нестрого» использо- вать в дальнейшем и простое равенство =. Равносильность — это некоторое отношение, которое облада- ет следующими свойствами: а) оно рефлексивно, т.е. f = f, всякая формула f равносильна самой себе; б) оно симметрично: если f, = f2, то f2 = f,; в) оно транзитивно: если f] = f2 и f2 = f3, то f, = f3. Равносильности формул алгебры логики часто называют за- конами. Они подобны законам алгебры множеств. Говорят, что булева алгебра логических (переключательных) функций изо- морфна булевой алгебре множеств. Законы булевой алгебры: 1) х = х — закон тождества. Закон тождества означает, что мысль, заключенная в некотором высказывании, соответствую- щем двоичной переключательной функции, остается (считается) неизменной на протяжении всего рассуждения; 105
2) х х 0 — закон противоречия. Закон противоречия гласит, что никакое предложение не может быть истинным одновремен- но со своим отрицанием; 3) х v х = 1 — закон исключенного третьего. Закон исключен- ного третьего говорит о том, что для каждого высказывания име- ется лишь две возможности: быть либо истинным, либо ложным. Третьего не дано; 4) х = х— закон двойного отрицания; 5) х х = х; xv х = х — закон идемпотентности (от латинского idem — то же, potentio — сила). Этот закон рассматривается отно- сительно операций конъюнкции и дизъюнкции. В силу закона идемпотентности в алгебре логики, как и в алгебре множеств, нет показателей степеней, коэффициентов. Оказывается, основные законы алгебры логики двойственны (справедливы относительно конъюнкции и дизъюнкции); 6) х у = у • х; xv у = у v х — закон коммутативности (перемес- тительности); 7) х (у z) = (х • у) z; x v (у v z) = (х v у) v z - закон ассоциа- тивности (сочетательности); 8) х (у v z) = ху v xz; х v yz = (х v у) v (х v z) — закон дистри- бутивности (распределительности). Закон дистрибутивности от- носительно дизъюнкции не имеет аналога в обычной алгебре; 9) х-у = xvy; хvy =х у — закон Де Моргана. Отрицание конъюнкции высказываний равносильно дизъюнкции отрица- ний этих высказываний. Отрицание дизъюнкции высказываний равносильнО-КОнъюнкции отрицаний этих высказываний; 10) х v х у = х; х(х v у) = х — закон поглощения. Короткий член конъюнкции (дизъюнкции) поглощает длинный член, содержа- щий короткий в качестве составной части; 11) х у v ху = х; (х v у) (х v у) = х — закон склеивания. Здесь скле- ивание производится по переменной у; она исключается, если вхо- дит в члены дизъюнкции (конъюнкции) с разными знаками, а ос- тальные элементы в конъюнкции (дизъюнкции) с ней одинаковы; 12) ху vxzvyz^xy vxz; (х vy)(x vz)(y vz) =(х vy)(x vz) — за- кон обобщенного склеивания, т.е. в дизъюнкции конъюнкций «лишней» является конъюнкция, полученная в результате конъ- юнкции членов перед инверсной и неинверсной переменной в двух других конъюнкциях. То же можно сказать и о конъюнкции дизъюнкций, в которых имеются дизъюнкции с такими перемен- ными. 106
Еще раз отметим двойственность законов алгебры логики: они действуют как относительно дизъюнкции, так и относитель- но конъюнкции. Кроме перечисленных законов, которые можно доказать, например, построив соответствующие таблицы истинности (со- ответствия), большое значение имеют так называемые соотноше- ния 0 и 1, полученные на основе законов алгебры логики: х v 1 = 1; х 1 = х; х vO = x; х • 0 = 0; х v х = 1; х • х = О, причем х е {х, х, 0, 1}; два' последних соотношения — это закон исключенного третьего и закон противоречия. Так, например: lvO= 1; 1-0 = 0; 0 v 1 = 1; 0-1=0. Здесь мы стали применять простое равенство (=). Рассмотренные законы применимы не только к отдельным переменным, но и к группам переменных, объединенных опера- циями, т.е. х, например, может быть в свою очередь конъ- юнкцией ab, а х =ab =а vb. В алгебре переключательных функций установлен порядок выполнения действий. При отсутствии в выражении скобок пер- выми выполняются операции отрицания (инверсии), затем опе- рации конъюнкции и последними — дизъюнкции. При наличии в выражении скобок в первую очередь выпол- няются операции внутри скобок. 7.2. Равносильные преобразования. Упрощение формул алгебры переключательных функций Равносильные преобразования — это замена одной формулы другой, равносильной формулой. Если в равносильные формулы всюду вместо какой-нибудь переменной подставить одну и ту же формулу, то вновь полученные формулы также окажутся равно- сильными. 107
Под упрощением формулы будем понимать равносильные преобразования, приводящие к формуле, содержащей меньшее число переменных, чем исходная. Такие преобразования формул логики необходимы при синтезе, анализе, контроле дискретных устройств, а в последнее время — в системах искусственного ин- теллекта (логического вывода). Мощным аппаратом для таких равносильных преобразова- ний, помимо рассмотренных законов алгебры логики, являются так называемые основные формулы равносильных преобразова- ний, полученные с использованием этих законов [34]. Пусть х — некоторая переменная, причем символ ~ означает, что неважно, инверсная она или нет, т.е. х е {а, а}; тогда х е {а, а}. Пусть f [(х, х), у, z ...®] — некоторая функция, зависящая как от переменной х и ее инверсии х, так и от других переменных у, z ... ®. Под одноименностью будем понимать и соответствие знаков инверсии (т.е. одновременное наличие или отсутствие). Тогда, если переменная х находится в конъюнкции с некоторой функцией, зависящей от данной переменной и от других пере- менных, то в этой функции все одноименные переменные х за- меняются на константу 1, а все переменные х, инверсные однои- менной, — на константу 0. Сама же переменная перед функцией остается без изменения. Таким образом: а г x f[(x,:i), у, z... Й] =x-f[(l, 0), у, z... Й]. Такая запись означает, что Of 1 x-f[(: ,;;), у, z... й] =x-f[(l, 0), у, z... Й]; О x-f[(:,::), у, z... й] =x f[(0, 1), у, z... Й]. 1 Условно замену переменных на константу в функции f обоз- начаем стрелками. Примеры. 1f о. fj (abc)=a(b v 11)(; i v c)=a(b v l)(0 v c)=ac; Of 1 f2(abc)=a(b v i i)(i. v c)=a(b v 0)(l v c)=ab. 108
Для облегчения запоминания рекомендуется мнемоническое правило [34]. Представим формулу равносильного преобразова- ния относительно конъюнкции из вида переключательной схемы, в которой конъюнкции 7 и функции f соответствует их последовательное соединение. Такое соединение напоминает символ 1 (рис. 39). Для простоты на рис. 39 не указаны перемен- ные функции f. Это значит, что одноименные переменные х в f заменяются на константу 1. Соответственно переменные х в f заменяются на константу 0. Рис. 39. Иллюстрация мнемонического правила для формулы равносильных преобразований относительно конъюнкции Рассмотрим формулу равносильных преобразований относи- тельно дизъюнкции. Если переменная х находится в дизъюнкции с функцией, зависящей от данной переменной и от других пере- менных, то в этой функции все одноименные переменные х заменяются на константу 0, а все переменные х, инверсные одно- именной, заменяются на константу 1. Сама же переменная оста- ется без изменения: Of 1* х v f[(:5'), у, z... й] =х v f[(0,1), у, z... й]. Это означает, что 0а 1а v f[(x, ц), у, z... Й] =х V f[(0, 1), у, z... й]; 1f Of v й), у, z... й] =х v f[(l, 0), у, z... й]. 109
Примеры. °t 1t f(abc) = a v (b v: ,)(| v c) = a v (b v 0)(l v c) = a v b. f(abc) = ab v (b v a) (a v c). В этой функции в явном виде нет отдельной переменной (х), однако нетрудно заметить, что ab = (b v а). Поэтому обозначим ab, например, х: f(acx) = х v i :(а v с) = х v a v с. Отсюда: f(abc) = abvavc=l-bvavc = avbvc. Имеется соответствующее мнемоническое правило. Предста- вим формулу равносильного преобразования относительно дизъ- юнкции в виде переключательной схемы, в которой дизъюнкции х и функции f соответствует их параллельное соединение. Такое соединение напоминает символ 0 (рис. 40). Это значит, что одно- именные переменные^ в f заменяются на константу 0. Соответ- ственно переменные х в f заменяются на константу I. х f Рис. 40. Иллюстрация мнемонического правила для формулы равносильных преобразований относительно дизъюнкции Основные формулы равносильных преобразований можно до- казать методом подстановки в них вместо переменной х ее возмож- ных значений 0, 1 и сравнения правой и левой частей уравнения. 110
Докажем, например, формулу xvf((x,x),y,z...6] =х vf[(0,l),y,z...aj. Пусть х = 0; тогда левая часть формулы 0vf[(0,l),y,z...w], а правая 0 vf[(0,l),y,z...6], т.е, равенство справедливо. Пусть х = 1; тогда левая часть формулы 1 vf[(l,0),y,z...6] =1, а правая часть формулы lvf[(0,l),y,z...6]=l, Равенство также справедливо, несмотря на отличия в функ- ции f. Аналогично доказывается формула для конъюнкции, напри- мер: x-f[(x,x),y,z...6] =х •f[(l,O),y,z...aj. При х = 0: 0 • f ((0,1), у, z... 6] = 0 f [(1,0), у, 1... 63 =0, равенство справедливо, несмотря на отличия в функции f. При х = 1: l-f[(l,0),y,z...6] =1 f[(l,O),y,z... й], равенство также справедливо. Основные формулы равносильных преобразований имеют следствия, которые позволяют разложить функцию по любой переменной. 111
Следствие 1. f[(x,x),y,z...co] =х f[(l,O),y,z... 63 vx f[(0,1), y,z...w]. Следствие может быть доказано путем конъюнкции функции с тождественно истинной формулой х v х и последующего при- менения формул равносильного преобразования: f[(xvx) = ix vfx = xf[(l,0),y,z...o>| vx f[(0,l),y~z~. .6]. Это известное разложение Шеннона. Пример 1. Разложить логическую функцию по переменной Ь: f(abcd) = a b v (a v b)c[a b v d(a v_b)] = = b{a- 0 v (a v 1)с[а 0 vd(a v 1)]} v b{a-1 v (avO) • c[a -1 v d(a vO)]} = ъ =b{0v 1 с[0 v d 1]} v b {a v । . 0л 1 i с[а v d ; .]} =bcd v b (a v cd). Следствие 2. f[(x,x),y,z...co] ={x vf[0,l),y,z...a>]}{x vf[(l,0 ),y,z...w]}. Доказательство: f = f vO =f vx-x =(f vx)(f vx) = = {x vf[(O,l),y,z...6j]}{x vf[(l,0),y,z... <»]}. Пример 2. Разложим ту же функцию f(aecd) (пример 1) по пе- ременной а с помощью следствия 2: f(abcd) = {a v 0 • b v (1 v b) • с[0 • b v d(l v b)]} {a v 1 b v (0 v b) • c[I • b v d(0 v b)]} = ъ {avcd} {a v lj> v I . 0 ю[1 ъ > v dl >] }=(a v cd)(a vbv cd). 7.3. Преобразование форм представления переключательных функций Одним из способов задания переключательных функций яв- ляется их представление в виде аналитических выражений (фор- мул). Существуют дизъюнктивная, конъюнктивная и смешанная (скобочная) формы. 112
Рассмотрим дизъюнктивные формы представления переклю- чательных функций. Выражение вида хк • х( •... • хт, содержащее множество попарно различных переменных или их инверсий, на- зывается элементарной конъюнкцией (ЭК). Под х понимается либо сама переменная х, либо ее инверсия х. Если функция, зависящая от п переменных, записана в виде дизъюнкции элементарных конъюнкций ЭК! v ЭК2 v ... v ЭКГ и хотя бы одна ЭК не содержит все п переменные, то такая форма задания называется дизъюнктивной нормальной формой (ДНФ). ДНФ — дизъюнкция конечного множества попарно_различных элементарных конъюнкций. Например: f(abcd) = av b v bd. Произвольная функция, например, скобочная форма, может быть приведена к ДНФ следующим образом: • выполнить все операции инверсии, применяемые к логи- ческим выражениям (группе переменных); • раскрыть все скобки; • в полученном выражении произвести все упрощения. Например: f(X|X2x3) = Х| vх2х3 vx)x3 = = Х1(Х2Х3) VXjX3 =Х*1(х2 vx3) VX*|X3 = = Х|Х2 V Х|Х3 VX]X3 = Х,Х2 vx,x3. Получили ДНФ функции f(xt х2 х3). Если все элементарные конъюнкции, входящие в ДНФ, со- держат все п переменных, от которых зависит функция, то такая форма называется совершенной дизъюнктивной нормальной формой (СДНФ). СДНФ может быть получена по рабочим (единичным) наборам функций, например, по таблице истинности, и наобо- рот, если задана СДНФ, можно получить таблицу истинности. Однако если не оговорены условные наборы, все остальные набо- ры, кроме наборов, соответствующих членам СДНФ, будут счи- таться запрещенными. Пусть задана таблица истинности функции сложения по мо- дулю 2 (®) (табл. 33). 8~278 1 13
1 Таблица 33 Таблица истинности а ь z = a$b 0 0 0 0 1 1 I 0 1 1 1 0 Тогда z(ab)= a b v а b, т.е. это СДНФ. Первый член СДНФ соответствует строке 01, второй - строке 10. Элементарные конъюнкции, входящие в функции СДНФ, называются конституеюпами единицы (или минтермами). Конс- титуента единицы обращается в 1 (истинна) на единственном на- боре значений переменных. Так, подстановка входного набора 01 (база ab) обращает в 1 конституенту а b (0 1 = 1). Если считать вы- ражение z(ab) уравнением, то наборы 01, 10 — его решения. От СДНФ легко перейти к номерам рабочих наборов в раз- личных системах. Так: z(ab) -> 012 v 102 —> 1 ю v 210. Аналогично по СДНФ можно получить рабочие наборы, счи- тая остальные запрещенными: z(ab) = 1,2[0,3]. Получили символическую форму задания функции в деся- тичных номерах рабочих и запрещенных наборов. Очевидно, не составляет труда и обратный переход — от символической фор- мы, от номеров наборов - к СДНФ. Для преобразования ДНФ в СДНФ можно выполнить конъ- юнкцию каждой элементарной конъюнкции, не содержащую 1-ю переменную, с тождественно истинным выражением х, v х,. Та- ких переменных может быть несколько, будет несколько и тожде- ственно истинных выражений. После этого раскрываются скоб- ки и производятся необходимые упрощения. Пример 1. ^Х]Х2Хз)=Х1 Х2 VX1 х3= =XjX2(x3 VX3)VX1X3(X2VX2)= 0 =Х1Х2Х3УХ)Х2Х3 VX)X2X3 V Xig2X3 = =Х1Х2Х3 VXjX2X3 VXjX2X3. Получили СДНФ. 114
Имеется способ получения СДНФ из ДНФ с использованием обобщенного кода, в котором для обозначения недостающих пе- ременных в соответствующих позициях используются знаки «—» (или «~» — «тильда»), а для остальных — символы 0,1. Пример 2. Функцию f(xj х2 х3) = Xj х2 v *1хз представим в виде: 00-v0-l. Тогда, подставляя вместо «—» всевозможные комбинации 0,1, получим: 00-—> 0-1 0 0/6) 0 0^ 0/6\1 0(1^1 Таким образом, получили номера 000, 001,011, которые соот- ветствуют членам СДНФ. СДНФ переключательной функции, тождественно равной 1 (тождественно истинной), содержит 2П конституент (п — число переменных). Переключательная функция может быть представлена в конъюнктивной форме. Выражение вида xk v х, v ... v xm, содержащее множество по- парно различных переменных или их инверсий, называется эле- ментарной дизъюнкцией (ЭД). Если переключательная функция, зависящая от п перемен- ных, записана в виде конъюнкции элементарных дизъюнкций ЭД, • ЭД2 •... ЭДГ и хотя бы одна ЭД не содержит все п перемен- ных, то такая форма задания называется конъюнктивной нормаль- ной формой (КНФ). КНФ - конъюнкция конечного множества попарно различных элементарных дизъюнкций. Например: f(abcd) = a(b v c)(b v d). Произвольная функция, например, скобочная форма, может быть всегда приведена к КНФ следующим образом: • заданную функцию инверсировать, получить ДНФ инверс- ной функции; • ДНФ инверсной функции инверсировать еще раз, получить тождественную исходной функцию в КНФ; • на каждом этапе следует производить необходимые упроще- ния. 8* 115
Пример 3. f(x1x2x3) = x1 vx2x3 vX]X3; f(x1x2x3)=x1 vx2x3 VX,X3 = (x, vx2x3)x"jx3 =(x, VX2X3)(X! vx3) =X! vx2x3; f (x1x2x3)=x1 vx2x3 =X|(X2 vx3). Получили КНФ. Второй способ получения КНФ заключается в выполнении всех операций инверсии, применяемой к группе переменных (ло- гическим выраженииям), затем используется распределительный закон. Пример 4. f(xlx2x3)=x1 VX2X3 VX,X3 = = x1(x2x3)vx1x3 = X](X2 VX3)VX,X3 = = X|X2 VXjX3 VX]X3 =X[X2 V X[X3 = = У1х2ух1)(х,х2 vx3) = VX3) = X,(x2 VX3). Если все элементарные дизъюнкции, входящие в КНФ, со- держат все п переменных, от которых зависит функция, то такая форма называется совершенной конъюнктивной нормальной (СКНФ). СКНФ может быть получена по запрещенным (нулевым) наборам функции, например, по таблице истинности. Для полу- чения СКНФ по таблице истинности необходимо составить элементарные дизъюнкции всех переменных для каждой строки таблицы, в которой функция равна 0. При этом в дизъюнкцию входит сама переменная, если ее значение равно 0, и отрицание переменной, если ее значение равно 1. Так, для функции сложения по модулю 2 (табл. 33) СКНФ имеет вид z(a,b)=(avb)(a vb). . 116
Элементарные дизъюнкции, входящие в СКНФ функции, на- зываются конституентами нуля (макстермами). Конституента нуля обращается в нуль на единственном набо- ре переменных, который является запрещенным (нулевым) набо- ром функции. Например, для функции сложения по модулю 2 конституента нуля (a v b) обращается в 0 на наборе 00, а консти- туента нуля (a v Ь) - на наборе 11. От СКНФ можно перейти к номерам запрещенных наборов в различных системах счисления. Для получения двоичных номе- ров в порядке базы функции (например, ab) необходимо заме- нить символы переменных с инверсией на 1, а без инверсии — на 0 и записать вместо элементарных дизъюнкций соответствующие совокупности двоичных чисел. Если дополнительной информации нет, то все остальные чис- ла из области задания функции считаются рабочими. Для преобразования КНФ в СКНФ можно выполнить дизъ- юнкцию каждой элементарной дизъюнкции, не содержащей i-ю переменную, с тождественно ложным выражением х • х. Таких недостающих переменных может быть несколько; тогда надо до- бавлять соответствующие тождественно истинные выражения. Затем применяется распределительный закон и производятся необходимые упрощения. Например: f(x1_X2X3) = X1(x2VX3) = = (х-j V х2х2 V х3х3)(х2 V Х3 V Х-| Х-|) = = (х-1 V х2х2 V x3)(xi V х2х2 V х3)(х2 V Xj V X, )(х2 V х3 V X.-J) = 1 = (х-| V Х2 V Х3)(Х-1 V Х2 V хД^ V х2 v x3)(xi V Х2 V Х3)(х.| V х2 v х3)(хр4^ГхД. Соответствующие запрещенные наборы: 100, НО, 101, 111, 010 (база X] х2х3). Получим СДНФ и СКНФ ПФ, заданной десятичным номе- ром № 17410. Таблица истинности ПФ № 17410 показана в табл. 34. СДНФ — совершенная дизъюнктивная нормальная форма: f(abc) = abc vabc vabc vabc vabc. СКНФ — совершенная конъюнктивная нормальная форма: f(abc) =(avb'vc)(avbvc)(avbvc). 117
Таблица 34 8. Минимизация переключательных функций 8.1. Цель минимизации переключательных функций При технической реализации переключательных функций, широко используемых в вычислительной технике, системах авто- матического (автоматизированного) управления и контроля воз- никает задача нахождения наиболее экономичного представле- ния соответствующих переключательных функций. По существу решается задача оптимизации, причем минимизируется стои- мость реализации. Понятие стоимости устройства, реализующего переключательную функцию, — дискретного устройства — отно- сительно. Для переключательных схем, реализуемых в виде ре- лейно-контактных схем, для схем из корпусных транзисторов и резисторов, из микросхем логических элементов малой степени интеграции минимизация числа реле, контактов, транзисторов, числа микросхем и означает снижение стоимости [28]. Это было особенно актуально на ранних этапах развития дискретной, циф- ровой техники. Для современных цифровых автоматов на боль- ших и сверхбольших интегральных схемах (БИС и СБИС) стои- 118
мость определяется площадью схемы на кристалле кремния и не- посредственно не связана с числом микротранзисторов и других элементов. Нередко схема с большим числом элементов, но обла- дающая высокой регулярностью, занимает небольшую площадь, кроме того, она выгодна с точки зрения проектирования, ведь стоимость проектирования, как и стоимость изготовления, вхо- дит в суммарную стоимость устройства [28]. При построении устройства из дискретных компонентов в це- лях повышения надежности наряду с уменьшением их числа (что увеличивает вероятность безотказной работы) большое значение придается уменьшению числа соединений между компонентами (это также увеличивает вероятность безотказной работы). Кста- ти, эта задача решается на соответствующем графе - он разбива- ется на подграфы, минимально связанные между собой. Однако для БИС надежность соединений внутри кристалла достаточно высока по сравнению с надежностью соединений между кристал- лами. В связи с этим большое значение приобретает деление системы на БИС таким образом, чтобы уменьшить число точек соединений между ними. Ограничимся в дальнейшем целью нахождения наиболее простого представления переключательной функции в смысле наименьшего числа входящих в нее символов (букв). Процесс получения такого представления будем называть минимизацией. Под различными символами (буквами) будем понимать вхожде- ния одной и той же переменной в различные дизъюнктивные (конъюнктивные) члены функции. Так, функция z^abc) = = ab va с v be содержит шесть букв, а функция z2(abc) = ab vac — четыре буквы, хотя обе функции зависят от трех переменных а,Ь,с (закон обобщенного склеивания z, = z2). Методы минимизации разрабатываются применительно к каждой отдельной функциональной полной системе элемент- ных переключательных функций. Наиболее детально такие мето- ды разработаны для систем из дизъюнкции, конъюнкции и инверсии. При этом задача минимизации переключательной функции сводится к нахождению такой ее формы, которая содержит наи- меньшее число дизъюнкций, конъюнкций и инверсий. Нахождение минимального представления функции в виде ДНФ или КНФ связано с решением двух основных задач [ 17]. Во- первых, это определение конъюнкций (дизъюнкций), входящих 119
в ДНФ (КНФ), каждая из которых содержит минимальное число букв. Во-вторых, это определение ДНФ (КНФ), содержащей ми- нимальное число различных элементарных конъюнкций (дизъ- юнкций). Будем рассматривать в основном минимизацию переключа- тельных функций в классе ДНФ, не требуя минимизации числа инверсий. 8.2. Основные понятия и определения, используемые при минимизации При минимизации переключательных функций существен- ную роль играют понятия импликанты, простой импликанты, имплиценты и простой имплиценты [14]. Пусть f(x), g(x), р(х) — полностью определенные функции, причем под х понимается не- который набор из п переменных (Х]Х2...хп). Функция f(x) опреде- лена на рабочих (единичных) наборах М, [f(x)J и множестве зап- рещенных (нулевых) наборов M0[f(x)]. Функция g(x) определена на множестве рабочих (единичных) наборов М । [g(x)J, а функция р(х) — на множестве запрещенных (нулевых) наборов М0[р(х)]. Переключательная функция g(x) называется импликантой переключательной функции f(x), если множество рабочих (еди- ничных) наборов функции g(x) совпадает или является подмно- жеством множества рабочих наборов функции f(x), т.е. M,[g(x)] с МДЦх)], где с - знак включения в множество, означающий, что всякий элемент левого множества является элементом правого множества. При этом говорят, что M,[f(x)] содержит М) [g(x)], т.е. в соответствии с определением импликации g(x) -> f(x). Переключательная функция р(х) является имплицентой пе- реключательной функции f(x), если множество запрещенных (нулевых) наборов функции р(х) совпадает или является подмно- жеством множества запрещенных (нулевых) наборов функции f(x), т.е. М0[р(х)] с M0]f(x)]. Пусть функция в СДНФ имеет вид f(x1x2x3) = Xj х2 х3 v X] х2х3 v Х]Х2х3; I g[(x) =Х[ х2 х3 (конституента СДНФ); I g2(x) = X! х2х3 (конституента СДНФ); 1 g3(x) = Xj х2 х3 (конституента СДНФ); j g4(x) = f(x), т.е. сама функция в СДНФ. 120
Из СДНФ можно получить другие импликанты путем всевоз- можных группировок ее членов и многократного использования (по возможности) закона склеивания, пока не останется конъ- юнкций^ отличающихся значениями одной переменной (х, в одной, \ в другой, если остальные члены конъюнкции одина- ковы). Так, g5(x) = Х!Х2Х3 VX]X2X3 = х,х2(х3 vx3) =xtx2; g6(x) = X]X2X3 VX,X2X3 =(x, VXj)x2X3 =x2x3. Группировка первой и второй конституент не позволяет при- менить закон склеивания: g7(x) = XjX2X3 VXjX2X3. Других вариантов комбинаций и склеиваний для f(x) нет. Простой импликантой функции f(x) называется любая эле- ментарная конъюнкция в g(x), являющаяся импликантой функ- ции и обладающая тем свойством, что никакая ее собственная часть уже не является импликантой. В примере импликанты g5 = Х]Х2, g6 = х2х3 являются простыми импликантами функции f. Импликанты gb g2, g3, g7 и, естественно, g4 не являются просты- ми, так как их части являются импликантами функции f: напри- мер, g5 является частью g2 (g3). Говорят, что простые импликанты покрывают или поглощают соответствующие конституенты. В булевой алгебре переключательных функций утверждается и доказывается: 1) дизъюнкция любого числа — импликант пе- реключательной функции — также является импликантой этой функции; 2) любая переключательная функция равносильна дизъюнкции всех своих простых импликант, и такая форма ее представления называется сокращенной ДНФ (СкДНФ). Рас- смотренный перебор всех возможных импликант переключатель- ной функции f дает возможность убедиться, что простых импли- кант всего две: g5, g6. Тогда сокращенная ДНФ функции f имеет вид: f = g5 v g6 = XjX2 v x2x3. Рабочими наборами функции f(XjX2x3) являются ОН, ПО, 111 (табл. 35). Из таблицы видно, что импликанты g5, g6 в совокуп- ности покрывают своими единицами все единицы функции f, т.е. рабочие наборы сокращенной ДНФ = 110, 111,011, 111, послед- 121
ч ний повторяется дважды. Получение сокращенной ДНФ — пер- вый этап минимизации. Иногда из сокращенной ДНФ можно убрать одну или нес- колько простых импликант, не нарушая количества необходимых рабочих наборов. Такие простые импликанты назовем лишними. В нашем случае их нет. Исключение лишних простых импликант из сокращенной ДНФ — второй этап минимизации. Табл и ца 35 Таблица истинности импликант Х| х2 *3 f Импликанты gi ё2 ёз g4=f ё5 ёб g? 0 0 0 0 0 0 0 0 0 0 0 0 0 I 0 0 0 0 0 0 0 0 0 I 0 0 0 0 0 0 0 0 0 0 I I I 1 0 0 1 0 1 1 I 0 0 0 0 0 0 0 0 0 0 I 0 I 0 0 0 0 0 0 0 0 I I 0 I 0 1 0 1 1 0 1 I I I 1 0 0 1 1 1 1 0 Сокращенная ДНФ переключательной функции называется тупиковой, если в ней отсутствуют лишние простые импликанты. Устранение лишних простых импликант из сокращенной ДНФ переключательной функции не является однозначным про- цессом, т.е. переключательная функция может иметь несколько тупиковых ДНФ. Тупиковые ДНФ, содержащие минимальное число букв, яв-. ляются минимальными. Минимальных ДНФ тоже может быть несколько. Минималь- ная ДНФ функции, найденная путем построения и перебора всех тупиковых ДНФ и выбора из них самой минимальной, называет- ся общей (абсолютной) тупиковой ДНФ. Поиск минимальной ДНФ всегда связан с перебором реше- ний. Существуют методы уменьшения перебора, но он всегда имеется. Как правило, ограничиваются нахождением одной или нескольких тупиковых ДНФ, из которых выбирают минималь- 122
ную — ее называют частной минимальной ДНФ и считают близкой к общей (абсолютной). При минимизации не полностью определенных переключа- тельных функций особенностью является то, что необходимо найти такое ее доопределение за счет условных наборов, которое соответствует минимальной ДНФ, содержащей наименьшее чис- ло букв. 8.3. Аналитические методы минимизации переключательных функций Метод Квайна Метод основан на попарном сравнении и склеивании при возможности всех конституент (членов СДНФ). Для этого каждая конституента сравнивается с последующими, что приводит к по- лучению импликант. Полученные импликанты вновь подверга- ются сравнению и при возможности склеиваются — и т.д. до тех пор, пока оставшиеся импликанты уже не будут поддаваться склеиванию. Это и есть простые импликанты, их дизъюнкция представляет собой сокращенную ДНФ. Для упорядочения целесообразно разбивать конституенты на группы по числу неинверсированных переменных. В этом случае каждая очередная конституента, начиная сверху, сравнивается только с конституентами группы, соседней снизу, с числом неин- версированных переменных на единицу больше. Пусть имеется переключательная функция, заданная СДНФ: ^^2X3X4) = х1х2х3х4 vX|X2x3x4 vx1x2x3x4 v VX[X2X3X4 VX]X2X3X4 VX[X2X3X4. Разобьем конституенты на группы по числу неинверсирован- ных переменных. Римская цифра номера группы соответствует числу неинвер- сированных переменных. Проведем линии, указывающие склеи- ваемые конституенты. Результатом склеивания является всегда элементарная конъюнкция, представляющая собой общую часть исходных конъюнкций (в частности, конституент). 123
1 11 III IV 1) 2) 3) 4) 5) 6) *1X2X3X4 Xi x2x3x4 XiX2X3X4 Xi x2x3x4 x1 x2x3x4 Xi x2x3x4 x2x3x4 X1 x2x3 X-) x2x4 *1 x3x4 X1 x3x4 x1 x2x4 X-j x4 X1X4 Полученные импликанты также допускают склеивание, при- чем в результате получается одна и Ya же импликанта Х]Х4. Дальнейшие склеивания невозможны, поэтому полученные импликанты — простые, а сокращенная ДНФ имеет вид Х\Х4 VX2X3X4 VXjX2X3. Первый этап выполнен. На втором этапе необходимо исклю- чить лишние простые импликанты. Это делается с помощью спе- циальной импликантной таблицы Квайна (таблицы покрытий). Строки таблицы отмечаются простыми импликантами переклю- чательной функции, т.е. членами сокращенной ДНФ, а столб- цы — конституентами единицы, т.е. членами СДНФ переключа- тельной функции. Как уже отмечалось, простая импликанта поглощает некото- рую конституенту единицы, если является ее собственной частью. Соответствующая клетка импликантной таблицы на пе- ресечении строки данной простой импликанты и столбцов с конституентами единицы отмечается, например, знаком «+». Минимальные ДНФ строятся по импликантной таблице следую- щим образом: 1) ищутся столбцы импликантной таблицы, имеющие только один крестик, соответствующие этим крестикам простые импли- канты называются базисными и составляют так называемое ядро переключательной функции. Ядро обязательно входит в мини- мальную ДНФ; 124
2) рассматриваются различные варианты выбора совокупнос- ти простых импликант, которые накроют крестиками остальные столбцы импликантной матрицы, и выбираются варианты с ми- нимальным суммарным числом букв. Ядром нашей функции (табл. 36) являются импликанты х)х4 и XjX2x3, т.е. функция имеет единственную тупиковую и мини- мальную ДНФ: f(x1x2x3x4) =Х]Х4 VXjX2X3. Таблица 36 Импликантная таблица Квайна Простые импли- канты Конституенты 1 (члены СДНФ) Х1Х2Х3Х4 Х1 Х2Х3Х4 х1х2х3х4 Х1Х2Х3Х4 Х1Х2Х3Х4 Х1Х2Х3Х4 Х,Х4 + + + + х2х3х4 + + Х1Х2Х3 + + Видно, что импликанта х2х3х4 является лишней, так как она покрывает конституенты, уже покрытые импликантами xjx4, xix2x3: Число крестиков в строке является степенью числа 2; можно убедиться, что оно равно N = 2n'k, где к - число букв в простой импликанте, п — число переменных, от которых зависит функ- ция. Если вначале не задана СДНФ, то ее надо получить, исполь- зуя, например, уже известные нам методы. Ясно, что для больших импликантных таблиц трудно визуаль- но выявить варианты с минимальным числом букв. Поэтому используется метод Петрика, позволяющий получать все тупико- вые ДНФ по импликантной таблице путем построения так назы- ваемого конъюнктивного ее представления. Для этого все прос- тые импликанты обозначаются разными буквами (А, В, С в табл. 36), а затем для каждого столбца строится дизъюнкция всех букв, обозначающих строки таблицы, пересечение которых с Данным столбцом отмечено крестиком. Конъюнктивное пред- ставление импликантной матрицы образуется как конъюнкция 125
построенных дизъюнкций для всех столбцов. К конъюнктивному представлению импликантной таблицы могут быть применены все соотношения булевой алгебры переключательных функций с целью его упрощения. После раскрытия скобок и выполнения всех возможных поглощений получается дизъюнкция конъюнк- ций, каждая из которых содержит все импликанты тупиковой ДНФ. К = А А А(А v В) С(В v С) = V В) <р(В V = АС. Это означает, что тупиковая ДНФ содержит две простые имп- ликанты (А — 3(|Х4 и одновременно С = Х]Х2х3) и имеет вид \ f = XjX4 V X]X2X3. Метод Квайна - Мак-Класки Метод представляет собой формализацию метода Квайна, ориентированную на использование ЭВМ. Формализация зак- лючается в записи конституент единицы (членов СДНФ) их дво- ичными номерами. Все номера разбиваются на непересекающие- ся группы по числу единиц в двоичном номере. Склеивания производятся только между соседними группами. Ликвидируе- мый разряд обозначается знаком «—» («тире»). Дальнейшие груп- пы из полученных импликант образуются с учетом одинакового расположения тире. Такое обозначение импликант называется обобщенными кодами. Пусть задана функция f(X!X2Х3) — X]X2Х3 VX]X2X3 VX[X2X3 VX]X2X3 vx,x2x3 —> -»111 V 101 V 001 V 000 V ПО. Сгруппируем эти конституенты единицы по числу единиц: I 000--—>--00- II 001 ___01 III 101<2 IV 111 ===- 11- Обобщенные коды импликант в базе Xi х2х3 126
Дальнейшие склеивания невозможны. Нахождение мини- мальных ДНФ далее производится по импликантной таблице (табл. 37): К = (С V ^)(В у С)(^У В)АР = (В у C)AD = BAD v CAD. Это означает, что тупиковые ДНФ содержат по три простые импликанты и имеют вид fj = XjX^ vxjx2 v Х|Х2 (две инверсии); f2 = Х]Х3 vX|X2 vXjX2 (три инверсии). Таблица 37 только при соответствующем их расположении, например: 00-- 01-- >0 ’-01 >--01 0-01 Можно выбрать любую из полученных ТДНФ, а с учетом меньшего числа инверсий — первую. Метод Блейка - Порецкого Метод позволяет получать сокращенную ДНФ булевой функ- ции по ее произвольной ДНФ, а не по СДНФ, как в методах Квайна и Квайна - Мак-Класки, используя закон обобщенного 127
склеивания [28]. В основу метода положено следующее утвержде- ние: если в произвольной ДНФ булевой функции провести все- возможные операций, обратные обобщенному склеиванию, а за- тем выполнить все поглощения, то в результате получится сокра- щенная ДНФ-функции. Пусть задана ДНФ функции: f(X]X2X3) =Х[Х2 VXjX2X3 vx,x2. Видно, что к первой и второй конъюнкциям можно приме- нить закон обобщенного склеивания по переменной х,; получим: Х]Х2 VX[X2X3 =Х[Х2 vx1x2x3 vx2x3. Аналогично для первой и третьей конъюнкций: о по Xj-X]X2 VX]X2 = X]X2 vxIx2vx?X2 = X[X2VX[X2; о ПО Х2-Х[ х2 V Xj Х2 = Xj х2 V Xj х2 V^fXj = Xj Х2 V Xj Х2 , т.е. все остается, как есть! Вторая и третья конъюнкции допускают обобщенное склеи- вание по х2: Х[Х2Х3 VX]X2 =Х]Х2Х3 VXjX2 VXjX3. Переходим к ДНФ: .о _ _ _ о Х1 х2 V ХЛ*2Х3 V Х2Х3 V Х1 х2 ° 0 0 V V х^х3 v^ff2 v X] х3. о После применения закона идемпотентности (повторения) и поглощения получаем: f = XjX2 VX2X3 VXjX2 VXjX3. Попытки дальнейшего применения обобщенного склеивания и поглощения не дают результата. Следовательно, получена сок- ращенная ДНФ функции. 128
Далее задача поиска минимальной ДНФ решается с помощью импликантной таблицы так же, как в методе Квайна, причем не- обходимо получить конституенты единицы исходной функции (табл. 38). Таблица 38 Импликантная таблица для иллюстрации метода Блейка — Порецкого Простые импликанты Наборы функции и ее значения Х1 *2 Х3 ООО 1 001 1 010 0 он 0 100 1 101 0 по 1 111 1 0 0 — + + — 0 0 + + 1 1 — + + 1 — 0 + + Таким образом, рабочие (единичные) наборы можно покрыть тремя простыми импликантами, например, XjX2, *2*3, xix2- В ядро входят импликанты XjX2, xix2- Тогда тупиковые ДНФ имеют вид f[ =XjX2 vXjX2 vx2x3; f2 = X[X2 v x,x2 v x,x3 (лучше по числу инверсий). 8.4. Минимизация переключательных функций по картам Карно При решении задач минимизации как полностью определен- ных, так и не полностью определенных переключательных функ- ций, зависящих от небольшого числа переменных, широкое при- менение находят графические методы. Чаще всего эти методы применяются для минимизации переключательных функций че- тырех переменных, однако при соответствующем навыке их мож- но применять и для функций пяти-шести переменных. При боль- шом числе переменных графические методы теряют свое основ- ное достоинство — наглядность. 9~278 129
Метод минимизации по картам Карно позволяет графически получать экономное покрытие переключательной функции пра- вильными конфигурациями ее единиц. Карта Карно — это табли- ца истинности специального вида, в которой переменные функ- ции расположены не одномерным, а двумерным массивом (по горизонтали и вертикали), причем каждому набору переменных поставлена в соответствие одна клетка. В эту клетку записывает- ся значение функции (0 или 1) на данном наборе. Входные пере- менные располагаются по внешним сторонам карты напротив ее строк и столбцов. При этом единичное значение переменной тра- диционно обозначается скобкой или линией «влияния» на стро- ки или столбцы, для остальных строк (столбцов) значение этой переменной равно нулю. Каждая из входных переменных делит карту Карно на две раз- ные части, в одной из которых значение этой переменной равно 1, а в другой 0. Каждой клетке карты Карно соответствует один определен- - ный набор, а каждая сторона клетки представляет собой границу между значениями переменных. Карты Карно для одной и двух переменных изображены на рис. 41. . а . . b . 1 0 (а) 1 (а) 00 (ab) 01 (ab) 10 (ab) 11 (ab) Рис. 41. Карты Карно для одной и двух переменных В правом углу для пояснения указаны наборы переменных, соответствующих клеткам, в базе переменных «аЬ» («а» имеет вес 21, «Ь» -2°). Задание переключательных функций картами Карно является более компактным, а самое главное — более наглядным с точки зрения визуального выделения групп рабочих (единичных) набо- ров. Число клеток карты Карно равно числу таблицы истинности, т.е. 2П, где п — число входных переменных. В каждой новой пере- менной число клеток удваивается, т.е. карта увеличивается вдвое. 130
Пусть задана таблица истинности функции трех аргументов, равная единице тогда, когда две и более входных переменных равны единице. Это так называемая мажоритарная функция, или функция голосования по большинству «2 из 3» (табл. 39). Таблица 39 Мажоритарная функция Входной набор Z а ь с 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 I 0 0 0 I 0 1 1 1 1 0 1 1 1 1 0 Представим эту функцию в виде карты Карно (рис. 42). ООО 0 001 0 011 1 010 0 100 0 101 1 111 1 110 1 Рис. 42. Задание мажоритарной функции картой Карно Если функция задана СДНФ, ее также просто представить в виде карты Карно. Если функция задана в ДНФ, то необходимо проставить единицы в те клетки, которые соответствуют облас- тям конъюнкции соответствующих переменных. Пусть задана та же функция «голосование по большинству голосов» («2 из 3», или мажоритарная функция): f(abc) = ab v be v ас. Тогда в карте Карно на три переменных единицы простав- ляются в клетках, соответствующих пересечению «областей влияния» одновременно двух переменных: а и b, b и с, аис (рис. 43). 9* 131
110 1 ас Рис. 43. Задание картой Карно f(abc) = ab v be v ас Можно получить СДНФ, рабочие наборы этой функции: Z(abc) = abc vabc vabc v abc —>110 2 vl 112 vlOl 2 v0112. Аналогично может быть получена СКИФ функции: Z(abc) =(а vb vc)(a vb vc)(a vb vc)(a vb vc). Для неполностью определенной переключательной функции проставляются знаки «~» («тильда») в клетках, соответствующих условным наборам. Карта Карно на четыре переменных содержит 16 клеток (рис. 44). Рис. 44. Карта Карно на четыре переменных Такая таблица гораздо компактней, чем таблица истинности из 16 строк. Заметим, что переменные в.карте Карно проставля- ются в определенном порядке так, чтобы каждая покрывала по- ловину карты и не повторяла других переменных. Переменные базы в карте Карно четырех переменных следуют: по вертикали — снизу вверх, по горизонтали — справа налево (кстати, карты Кар- но и подобные им карты Вейча отличаются способом кодиров- ки — вариантами проставления переменных). 132
Карты Карно имеют замечательное свойство, заключающееся в том, что наборы значений переменных для клеток, стоящих рядом (соседние клетки), отличаются значением лишь одной переменной. При переходе от одной клетки в соседнюю всегда изменяется значение лишь одной переменной («1» на «О» или наоборот). Так, для карты четырех переменных (см. рис. 44) для второго столбца и третьей строки получаются следующие конституенты или наборы переменных номера клетки (рис. 45). Очевидно, что наборы переменных (соответствующие конс- титуентам переключательной функции) двух соседних клеток от- личаются друг от друга значением только одной переменной. Та- кие наборы, отличающиеся значением одной переменной, назы- ваются соседними наборами (кодами). Таким образом, соседние клетки карты Карно имеют соседние коды (наборы). Можно также сказать, что между соседними кодами имеется кодовое расстояние, равное единице (кодовое расстояние равно количе- ству разрядов, в которых коды отличаются друг от друга). Сосед- ними являются также крайние левые клетки карты Карно с крайними правыми клетками и крайние верхние клетки с край- ними нижними (как если бы карта была свернута по вертикали и по горизонтали). В этом легко убедиться, сравнивая наборы (рис. 45). abed abed abed abed abed abed abed Рис. 45. Иллюстрация соседних клеток карты Карно abed -abed (соседние по переменной а), abed -abed (соседние по переменной с). 133
На картах Карно до четырех переменных соседние клетки расположены рядом, граничат друг с другом, т.е. соседство оче- видно. На картах Карно пяти и более переменных соседние клетки, отличающиеся значением только одной переменной, не всегда расположены рядом, т.е. их соседство не очевидно. Поэтому чаще всего минимизиция по картам Карно используется для функций, зависящих не более чем от четырех переменных. Минимизация переключательной функции по карте Карно в классе ДНФ заключается в покрытии ее единиц минимальным количеством максимальных правильных контуров. В эти конту- ры могут включаться и условные наборы. Контуры могут пересе- каться, но не могут включаться друг в друга — иначе не получатся простые импликанты. Правильными контурами для карты четы- рех переменных могут быть следующие: одноклеточный — одна клетка с единицей, окруженная ну- лями; двухклеточный — две соседние клетки, окруженные нулями; четырехклеточный — квадрат из четырех соседних клеток, ок- руженных нулями; восьмиклеточный — куб из восьми соседних клеток, окружен- ных нулями; сверхкуб (гиперкуб) — соответствует вырожденной функции четырех переменных, не зависящей от переменных, — нет ни одного нуля. Он используется для функций пяти и более пере- менных. Типичные конфигурации максимальных правильных конту- ров представлены на рис. 46-48 [17]. XiX2 X3X4 00 01 11 10 00 0 0 11 01 0 0 0 11 0 д. 0 0 10 0 0 0 0 *1 *2 Х3Х4 00 01 и 10 00 0 UU 0 0 01 0 0 И 1) 11 0 0 0 0 10 0 И 0 0 а б Рис. 46. Двухклеточные контуры: a — пример 1; б — пример 2 134
*1*2 X3X4 00 01 11 10 00 0 И 0 01 ТГ 1 1 l_LL 11 0 0 0 0 10 0 к 11 0 *1*2 X3X4 00 01 11 то 00 “П 0 0 гг 01 0 0 0 0 11 0 0 0 0 10 1 0 0 □Z Рис. 47. Четырехклеточные контуры: а - пример 1;б — пример 2:в — пример 3 б Рис. 48. Восьмиклеточные контуры: а - пример 1; б — пример 2; в — пример 3 На этих рисунках изображена цифровая кодировка карт. Осо- бое внимание следует обращать на контуры, которые имеют ви- димый разрыв, так как объединяемые ими соседние клетки нахо- дятся в крайних строках или столбцах карты Карно. Найдем имп- ликанты соответствующих функций для рис. 46, а. Воспользуем- ся методом Квайна - Мак-Класки: f(X] х2х3х4) = 0000 v 0010 v 0101 v 1101. Ясно, что наборы 0000 и 0010 склеиваются по перемен- ным X] х2 х4 (00-0), а наборы 0101 и 1101 - по переменным х2 х3 х4 (-101). Получаем две импликанты: f(x1x2x3x4) = x1x2x4 vx2x3x4. Однако нет необходимости производить склеивания - нетрудно убедиться, что простая импликанта легко находится по карте следующим образом: в нее входят те переменные, которые во всех клетках данного контура не меняют своего значения (речь идет о номере клетки!). Для рис. 46, б получаем: f(xjx2x3x4) =(011-)v( -001) =XjX2x3 vx2x3x4. Для рис. 47,о: f(x,x2x3x4)=( 1 -0-)v( --10) =Х]Х3 vx3x4. Для рис. 47,5: f(X]X2x3x4) =(01 --) v( -0 -1) =XjX2 vx2x4. 135
Для рис. 47,в: f(XjX2x3x4) =( -0-0) =х2х4. । Для рис. 48,а\ f(x,x2x3x4) = (О-)v(-----1)=х^х4. I Для рис. 48,5: f(x,x2x3x4) =(-О--) =х2. ] .4 Для рис. 48,»: f(x,x2x3x4)=(----0)=х4. 1 По карте Карно удобна также минимизация в классе КНФ. В этом случае каждому контуру из нулей с возможным добавле- нием «тильд» соответствует имплицента - член КНФ, которая строится также из переменных, не меняющих своего значения в номере клеток «нулевого» контура, только, если переменная в номере клетки равна нулю, то в КНФ она будет без инверсии, а если равна единице - то в КНФ она будет с инверсией. Так, для рис. 46,5 Г(Х]Х2ХзХ4) получим имплиценты: Л 1) (х2 v х4) — угловые клетки; ” 2) (х2 v х3) - квадрат (0100,1100,0101,1101); 3) (х, v х3) — квадрат (1111,1110,1011,1010); 4) (х2 v х3) - квадрат (0011,0010,1011,1010). Таким образом: 3 f(XjX2X3X4) = (х2 vx4)(x2 vx3)(x, vx3)(x2 vx3). 8.5. Метод поразрядного сравнения рабочих и запрещенных наборов Несложные функции удобно минимизировать путем сравне- ния рабочих и запрещенных наборов. Задача заключается в том, чтобы в каждом рабочем наборе оставить минимальное количест- во переменных, позволяющих отличить этот набор от всех запре- щенных наборов. Покажем это на примере минимизации функции «имплика- ция х в у»: 136
Здесь отдельно записаны три рабочих (единичных) набора: 00, 01, 11. Набор 10 - запрещенный (нулевой). Видно, что в набо- ре 00 достаточно оставить переменную х, поскольку значение этой переменной в одном-единственном запрещенном наборе равно 1. Таким образом, получили импликанту (0—). Эта же импликанта покрывает и набор 01. Тогда для набора 11 необходимо оставить переменную у, т.е. получили импликанту (—1). Таким образом, импликация представлена в виде (0-) v (-1), т.е. х -> у = х v у. Часто такую минимизацию удобно выполнять графически, например, на кубе соседних чисел, и объединять рабочие верши- ны в фигуры, покрываемые одной импликантой. Для функции трех переменных возможны следующие фигуры: вершина, ребро, сторона. Пример Минимизации двоичной переключательной функции, заданной своим десятичным номером по решетке Хассэ (кубу соседних чисел) Дано: двоичная переключательная функция (ПФ) № 17410 (табл. 40). \ Получим соответствующий двоичный код: 10101 1 102(27 + 25 + + 23 + 22+ 2‘). \ 1 Таблица 40 ' Таблица истинности ПФ № 17410 Переменные ВС f(abc) а ь с 0 \ 0 0 0 0 0 0 I I I 0 I 0 2 I 137
Продолжение Рис. 49. Минимизация ПФ № 174)0по решетке Хассэ Квадрат 111 v 011 v 101 v 001 соответствует обобщенному ко- ду - импликанте (----1). Ребро соответствует обобщенному коду - импликанте (01-). Таким образом, ДНФ ПФ имеет вид (-------------1) v (01—), т.е. f(abc) = с v а Ь. На использовании куба соседних чисел основан метод пораз- рядного сравнения рабочих и запрещенных восьмеричных набо- ров - метод Л.Ф. Викентьева {6, 17]. 138
Минимизация переключательных функций на основе поразрядного сравнения рабочих и запрещенных восьмеричных наборов Основа метода заключается в том, что минимизация пере- ключательной функции большого числа переменных сводится к минимизации нескольких переключательных функций, завися- щих не более чем от трех переменных. В свою очередь, для упро- щения эти отдельные функции минимизируются по кубу сосед- них чисел, т. е. исходную функцию необходимо задать в символи- ческой форме в восьмеричной системе счисления. Тогда для каждого разряда восьмеричного рабочего числа функции определяются запрещенные цифры, т. е. такие, которые в совокупности с другими разрядами восьмеричного рабочего числа приведут к получению запрещенных чисел функции. За- тем, используя куб соседних чисел, следует минимизировать функцию трех переменных (определить покрытие данного разря- да). Так минимизируются все разряды. По полученным обобщен- ным кодам для каждого восьмеричного разряда определяется ДНФ для всего рабочего числа. По полученному покрытию опре- деляют, какие рабочие числа покрывает дополнительно получен- ная импликанта (кроме данного числа). Числа, покрытые полу- ченной импликантой, удаляют. Оставшиеся числа вновь подвер- гают минимизации, пока не будут покрыты все рабочие наборы. Метод особенно эффективен для недоопределенных функций. Пример 1. Задана функция в восьмеричной системе счис- ления: f8(x6x5x4x3x2x1) = 56(26]. Всего существует 64 набора переменных для функции 6 пере- менных. Как видно, используется только один рабочий и один запрещенный, остальные наборы — условные. Каждое рабочее число соответствует члену СДНФ. Восьме- ричная система позволяет очень легко переходить к СДНФ. Каж- дый разряд восьмеричного числа - это три разряда двоичного числа. В данном примере шесть переменных: f8 (х6х5х4х3х2х1) = (101110) = х6 х5х4х3х2 х,. Таким образом, считается, что ранг такого представления равен 6. 139
Определим запрещенные числа для старшего разряда числа 56, т.е. для 5. Будем подставлять вместо первого разряда возмож- ные числа, а их всего 7 — система-то восьмеричная! Получаем: 06, 16, 26, 36, 46, 66, 76. Видим, что число 2 - за- прещенное, в совокупности с ним второй разряд (6) приводит к получению запрещенного набора 26. Результат анализа запишем следующим образом: 56 -> -|б. Цифра 5, стоящая над чертой, указывает заданное значение старшего разряда рабочего числа, а цифра 2, стоящая под чер- той, - запрещенное значение этого разряда. Минимизируем функцию трех переменных f8 (х6х5х4) = 5[2] по кубу соседних чисел (см. рис. 49). Получаем возможное пок- рытие (1 v 3 v 5 v 7) и импликанту (-1). Запишем это таким образом: 56 -> (1 v 3 v 5v 7)г. Эта запись означает, что функцию, заданную одним рабочим числом 56, мы доопределили до четырех рабочих чисел: 16, 36, 56, 76. Число 56 - рабочее — вошло в покрытие, а вот запрещенное 26 - нет. Теперь нужно аналогичным образом минимизировать млад- ший разряд рабочего числа. Определим возможные наборы, кото- рые могут получиться путем соединения покрытия (1 v 3 v 5 v 7) и второго разряда; этот разряд может принимать значения 0,...,7: 10, ..., 17,30, ..., 37,50, ..., 57,70, ..., 77. Очевидно, что ни в одном случае мы не получим запрещенного набора 26, а значит, запре- щенных чисел для второго разряда 6 рабочего числа 56 нет, пос- кольку запрещенный набор начинается на число 2, а двойки в покрытии (1 v 3 v 5 v 7) нет. Запишем результат следующим образом: 56-»(lv3v5v7)£-»(l v3v5v7)-(0./.7), где (0...7) = (0vlv2v3v4v5v6v7). Здесь прочерк под цифрой 6 означает отсутствие запрещен- ных разрядов. 140
Таким образом, доопределили функцию до 32 наборов, но набор 26, естественно, не вошел в покрытие; Пользуясь кубом соседних чисел, минимизируем второй разряд: f8(x3 х2х,) = 6. Здесь нет запрещенных чисел, поэтому получаем импликанту (—), которая соответствует объединению всех вершин куба (пол- ный куб): f8(x3x2x,)=(—-). Тогда f8(x6x5x4x3x2xi) = (-l)(—) = xi. Получено одно из возможных решений, представляющее со- бой простую импликанту переключательной функции, покрыва- ющую рассмотренное восьмеричное рабочее число. Минимизация методом поразрядного сравнения не одноз- начна, возможны различные варианты решений. Можно было при минимизации первого разряда взять другие квадраты (4 v 5 v 6 v 7), (0 v 1 v 4 v 5), тогда ответ был бы другим, но все равно ранг его был бы равен 1. Пример 2. Минимизировать переключательную функцию, за- данную в символической форме в восьмеричной системе счисле- ния: f8(x5x4x3 x2Xj) = 37,22,31[00,16,10]. Минимизируем рабочее число 37: 37_>27_>(0...7)-2-->(0...7)(1 v3 v5 v7) =(-)(— 1) • - О, о Проверим, какие рабочие числа покрывают этот член ДНФ (простая импликанта). Из выражения (O...7)(l v 3 v 5 v 7) видно, что покрываются рабочие числа 37 и 31. Осталось число 22. Рас- смотрим его: 2 2 22 ->-2 ->(0...7)—— ->(0...7)(2 v3) =(-)(01 Д . - О, о Итак, f8(x5x4x3x2x1) = (-)(---1) v (--)(01---) = х, v х3х2. Здесь в первом разряде обобщенных кодов два (символов «тире»), так как функция зависит от пяти переменных. Говорят, что старшая триада неполная. Теперь начнем минимизацию той же функции с младшего разряда: 37 -> 3 — -1-(0...7) ->(2 v3 v6 v7)(0...7) =(14( — 4 141
Получили х5. Очевидно, х5 покрывает все рабочие числа 37, 22, 31. Видим, что данный вариант дает самую минимальную форму. 8.6. Минимизация переключательных функций, заданных в базисе {©, И, НЕ} В этом случае необходимо также подобрать минимальное ко- личество импликант, причем каждая из них также должна быть минимальной. Сумма по модулю 2 этих импликант должна рав- няться сумме по модулю 2 конституент. Особенностью минимизации в этом базисе является то, что в покрытие можно добавлять запрещенные вершины, но так, что- бы их (одинаковых запрещенных вершин) было четное количест- во — т. е. чтобы они как бы компенсировали друг друга. Ведь сум- ма по модулю 2 четного количества одинаковых чисел равна ну- лю [30]. Пусть задана функция f(xj х2х3) = Ф 0,1,5,6 [2,3,4,7]. Ранг та- кого представления =12 (12 букв): f(x1x2x3) = x1x2x3 ®Х|Х2х3 ®Х|Х2х3 Фх(х2х3. Рассмотрим геометрическое представление этой функции (рис. 50). Рис. 50. Задание кубом соседних чисел функции f(X| х2 х3) = Ф 0, 1,5,6 [2, 3, 4, 7] 142
Видно, что возможны покрытия (ООО Ф 001) Ф (101) Ф (110). В отличие от минимизации в ДНФ вершину (001) можно включить в покрытие один раз. Тогда получаем: Цх^Хз) = = х1х2Фх1х2х3 ©X^jXp Ранг такой функции равен 8. А теперь добавим запрещенную вершину (Ж) четное число раз (в нашем случае два раза) так, чтобы получить сторону куба: (000 Ф 001 Ф 101 Ф 100) Ф (ПО Ф 100). Получаем: (-0-) Ф (1-0): f(x,x2x3) = х2 Фх,х3. Ранг такой функции равен 3. 8.7. Минимизация систем переключательных функций При минимизации систем ПФ необходимо учитывать вхож- дение конъюнкций в разные функции системы. Дело в том, что раздельная минимизация каждой функции системы может при- вести к тому, что ранг (сложность) каждой отдельной функции будет минимальным, а ранг системы — нет. В случае представле- ния системы ПФ схемой это означает, что она будет состоять из изолированных подсхем, в то время как реализация с исполь- зованием объединения одинаковых участков подсхем будет проще [31]. Для минимизации систем ПФ используют, например, моди- фицированный метод Квайна — Мак-Класки. При этом из функ- ций системы ПФ формируется псевдофункция <р, содержащая множество А конъюнкций системы. Сумма рангов (число букв) конъюнкций множества А является показателем эффективности минимизации. Пример [31]: Дана система из двух функций, заданных двоич- ными рабочими наборами: f,(x3 х2 х,) = (000) v (101) v (110) v (111); f2(x3x2x,) = (000) v (010) v (011) v (101). Получим множество конъюнкций А: А= {000(1,2), 010(2), 011(2), 101(1,2), 110(1), 111(1)}. 143
Здесь указаны индексы вхождения конъюнкций в функции. Например, конъюнкция ООО (1,2) входит и в первую, и во вторую функцию. Псевдофункция <р выглядит следующим образом: Ф = 000(1,2) v 010(2) v 011(2) v 101(1,2) v 110(1) v 111(1). Склеиваться могут только конъюнкции с одинаковыми ин-. дексами! Проводим склеивания с учетом индекса вхождения в функ- ции: 1 - 2: (0-0)(2) v (010)(2) v (000)(1,2); 2-3: (01-)(2) v (010)(2) v (011)(2); 4-6: (1-1)(1) v (101)(1,2) v (111)(1); 5 - 6: (11-)(1) v (110)(1) v (111)(1). После выполнения всех поглощений с учетом индекса каж- дой конъюнкции получаем сокращенную псевдофункцию: Ф = (0-0)(2) v (000)(1,2) v (01-)(2) v (1-1)( 1) v (101)(1,2) v (11-)(1). Строим таблицу покрытий (табл. 41). Таблица 41 Импликантная таблица системной минимизации Простые импликанты Наборы функции 000 010 ОН 101 ПО 111 I 2 2 2 I 2 I I 0-0 + + 0 0 0 + + 0 I + + I - I + + I 0 I + + i i + + 144
Выделяем ядро покрытия и убеждаемся, что оно покрывает все конституенты <р: Ф = (000)(1,2) v (01—)(2) v (101)(1,2) v (11-)(1). Ранг такой функции равен 10. Таким образом, получаем: fi(x3x2Xj) = (ООО) v (101) v (11-); f2(x3x2x,) = (ООО) v (01-) v (101). В случае раздельной минимизации, например, по кубу сосед- них чисел, получаем: f^x^) = (ООО) v {(101) v(111)} v{(l 10) v (111)}; f/XjXjX!) = {(000) V (010)} V {(010) V (011)} V (101). Поэтому: f,(x3x2X|) = (000) V (1-1) V (11—); f2(x3x2x() = (0-0) v (01-) v (101), т.е. в случае раздельной минимизации получаем ранг 14. Минимизация систем переключательных функций преобразованием таблиц соответствия Часто переключательные функции задаются обобщенными таблицами состояний [6], т.е. такими таблицами состояний, в ко- торых состояния входов и выходов задаются с помощью обоб- щенных кодов. Обобщенным кодом (ОК) называется позиционный п-разряд- ный код ® = еп... е2е3, в каждой позиции которого находится сим- вол gj е{0, -, 1, 0}. Отсюда видно, что двоичный код а = оп...о2Оц о, е {0,1} является частным случаем обобщенного кода. Символы ОК в i-м разряде имеют следующий физический смысл: «0» — выключенное состояние соответствующего дискретного элемента х, (нулевое значение сигнала х,), или переменная со зна- ком инверсии; 10~278 145
«1» — включенное состояние соответствующего дискретного элемента х, (единичное значение сигнала х^, или переменная без знака инверсии; «—» (тире) — безразличное состояние дискретного элемента X; (безразличное значение сигнала х,), или логическая единица, т.е. дизъюнкция переменной без инверсии и переменной с инверси- ей: XjV.Xj; «0« (символ «пусто») — противоречивое состояние дискрет- ного элемента х, (невозможное значение сигналах,), или логичес- кий нуль, т.е. конъюнкция переменной без инверсии и перемен- ной с инверсией: X; л х,. Обобщенный код, содержащий хотя бы один символ 0, при- нято называть пустым или мнимым, что сокращенно записывает- ся в виде А = 0. Обобщенные коды А и В равны между собой тогда и только тогда, когда они совпадают во всех разрядах, и не равны между собой во всех остальных случаях. Например: 0—0— —01 = = 0-0--01 *-00- -01. С обобщенными кодами могут производиться различные ло- гические операции: поразрядная инверсия (полная или частич- ная), поразрядная конъюнкция, поразрядная дизъюнкция и т.п. Рассмотрим эти операции. 1. Поразрядная инверсия (полная инверсия) о = еп ... s2e(, где инверсия над каждым разрядом осуществляется по правилу табл. 42. Таблица 42 Полная поразрядная инверсия £ 0 — I 0 £ I 0 0 — 2. Обращение кода, или частичная поразрядная инверсия 1® = 1еп ... 1е2 1 6], где операция обращения каждого разряда осуществляется по правилу табл. 43. Таблица 43 Частичная поразрядная инверсия £ 0 — I 0 ±Е I — 0 0 146
3. Поразрядная конъюнкция двух ОК (пересечение двух ОК) со, л со2, являющаяся результатом выполнения в каждом разряде операции, заданной табл. 44. Таблица 44 ' Поразрядная конъюнкция А SJ 0 - I 0 е> 0 0 0 0 0 — 0 - I 0 I 0 I I 0 0 0 0 0 0 4. Поразрядная дизъюнкция двух ОК (объединение двух ОК) со, v со 2, являющаяся результатом выполнения в каждом разряде операции, заданной табл. 45. Табл ица 45 (0-10-011) =(100-0100); 1(0-10-011) =(1 -00-100); (0-11 -00-1) л(1 -0 —010-) =(0-01 -0001); (0-11 -00-1) v(l -0--О10-) =(----01—). Обобщенные коды, поразрядная конъюнкция которых равна пустому (мнимому) коду, называются непересекающимися (про- тиворечивыми или ортогональными). 10’ 147
Обобщенный код А включает в себя обобщенный код В (ОК А содержит в себе ОК В, ОК В включается в ОК А, ОК В содер- жится в ОК А), если А л В = В или A v В = А. Вместо словесной формулировки «ОК А включает в себя ОК В» применяют запись Ад В или В с А. Рассматриваемый метод минимизации систем переключа- тельных функций является инженерным и позволяет при прием- лемых трудозатратах осуществлять совместную минимизацию систем в общем случае недоопределенных переключательных функций с учетом влияния системного эффекта. Исходная система переключательных функций представляет- ся обобщенной таблицей состояний — ОТС (табл. 46). Таблица 46 Обобщенная таблица состояний № п/п Входы Х4-Х1 Выходы z6-Zi I 00-0 -111-- 2 0-0- 1--1-1 3 ООН -101-1 4 011- 100111 5 1-00 00 6 1-11 011011 7 1110 00- -0- Исходная таблица состояний является непротиворечивой (задает непротиворечивую систему логических функций), если каждой паре пересекающихся входных ОК (т.е. таких а, и Oj, что а, л Oj 0) соответствуют пересекающиеся выходные ОК (т.е. такие Pj и Pj, что р; a pj 0). В частности, приведенная в качестве примера таблица состо- яний является непротиворечивой. На первом этапе минимизации по исходной таблице состоя- ний строится первичная таблица соответствия (истинности). На следующем этапе осуществляется преобразование (сокращение) таблицы соответствия и получение частных минимальных форм системы булевых функций по преобразованной таблице соответ- ствия. 148
Построение первичной таблицы соответствия Таблица соответствия состоит из таких же столбцов, как и таблица состояний, но в качестве входных ОК в нее включаются минимизированные коды. Таблица соответствия заполняется по строкам путем преобразования очередной строки таблицы состо- яний в соответствии со следующей методикой. Рассматривается очередная (i-я), ранее не рассмотренная строка таблицы состояний, содержащая наименьшее количество единиц в выходном ОК. Если выходной ОК i-й строки не содержит ни одной едини- цы, то i-ю строку отмечают и переходят к рассмотрению следую- щей строки таблицы состояний. В противном случае осуществляется минимизация входного кода рассматриваемой строки. Для минимизации входной ОК i-й строки берется в качестве рабочего ОК, а в качестве запрещенных ОК берутся входные ОК тех строк таблицы состояний, в которых содержится хотя бы один 0 в тех же разрядах выходных ОК, в каких в рассматривае- мой i-й строке находились единицы. Так, при рассмотрении строки 2 исходной таблицы (см. табл. 46), имеем: f2 = а2,[ а5, а6, а7] = 0—0—,[1—00,1 —11,1 ПО] = 0-. В данном случае минимизация проведена методом на основе перебора обобщенных кодов [6]. Этот метод целесообразно при- менять в тех случаях, когда рабочие и запрещенные наборы не- посредственно заданы совокупностями обобщенных кодов либо когда в связи с большим количеством рабочих и (или) запрещен- ных кодов предварительно проведено их раздельное склеивание (например, методом Квайна—Мак-Класки). При неавтоматизированной минимизации рабочие и запре- щенные обобщенные коды для удобства поразрядного сравнения записываются столбцом друг под другом. После этого каждый ра- бочий обобщенный код поочередно сравнивается со всеми запре- щенными обобщенными кодами. Если в результате сравнения оказывается, что рабочий код противоположен некоторому зап- рещенному коду только в одном разряде, то значение этого раз- ряда рабочего кода считается обязательным и переносится в ре- зультирующий (минимизированный) обобщенный код. Если окажется, что рабочий код противоположен запрещенному коду в нескольких разрядах, то значения этих разрядов считаются воз- 149
можными, а в результирующий код переносится значение только одного из таких разрядов. При этом стараются выбрать такой из возможных разрядов рабочего кода, который либо является обя- зательным при сравнении с каким-либо другим запрещенным кодом, либо противоположен как можно большему числу запре- щенных кодов. Получив по одному из рабочих кодов результирующий мини- мизированный код, из множества рабочих кодов удаляют все ра- бочие коды, входящие в найденный результирующий. Затем рас- сматривается очередной рабочий код и т.д. до тех пор, пока спи- сок рабочих кодов не будет исчерпан. В нашем случае рабочий код один, запрещенных кодов три: f2 ~ <х2,[ а5> а б> а?] ~ 0—0^,[1—00,1-11,1 НО]. [°1- ° - 1-00 1 - 1 ] 1110 Рабочий код противоположен всем запрещенным кодам в од- ном разряде, который является обязательным и переносится в минимизированный код 0---. Полученный минимизированный входной ОК записывается в очередную строку таблицы соответствия в столбец входов. В ка- честве выходного ОК в эту строку таблицы соответствия заносит- ся выходной ОК рассматриваемой строки таблицы состояний (для строки 2 таким кодом является код 1 1 — 1). После заполнения очередной строки таблицы соответствия отмечается i-я строка таблицы состояний как рассмотренная и осуществляется преобразование выходных ОК, находящихся в неотмеченных ранее строках таблицы состояний. Если какой-либо входной ОК неотмеченной j-й строки таб- лицы состояний (ар включается в минимизированный входной OKfj последней строки таблицы соответствия (ajC 0, то в выход- ном OK (pj) j-й строки таблицы состояний единицы, находящие- ся в тех же разрядах, в которых выходной код (р,) i-й строки таб- лицы состояний содержат единицы, заменяются на тире. Так, после минимизации входного кода строки 2 исходной таблицы (см. табл. 46) получаем а, = (00—0) с (0-) = f2; 150
Р2 = (1—1—1).-Следовательно, р| = (—111---) преобразуется в Ь*—(—11 ). Аналогично из а3=(0011)с(0 )=f2 следует, что код рз = (—101 — 1) преобразуется в р3 : (—10------), а из а4 = (011-) с (0-----) = f2 вытекает преобразование кода Р4= (100111) в код р4 =(-00-1-). После преобразования выходных ОК неотмеченных строк таблицы состояний рассматривается очередная строка и т.д. до тех пор, пока не будут рассмотрены все строки этой таблицы. Построение первичной таблицы соответствия проиллюстри- руем следующим примером. Пусть задана исходная обобщенная таблица состояний (см. табл. 46), по которой требуется построить первичную таблицу со- ответствия. Строки 5 и 7 исходной ОТС в выходных ОК не содержат ни одной единицы. Поэтому отмечаем эти строки (в табл. 47 они от- мечены символом v0) и отыскиваем следующую строку исходной ОТС, содержащую наименьшее количество единиц в выходном ОК. Такой строкой является строка 1. Производим минимизацию входного ОК этой строки: fi = а|,[а3, а4, а6, а7] = 00—0,[0011,011—,1 — 11,1110] = —0—0. Таблица 47 Обобщенная таблица состояний № п/п Входы Х4-Х| Выходы Z6-Z| 1 00-0 -111-- 2 0-0- 1--1-1 3 ООП -10+-+ 4 011- +00+++ 5 1-00 00 6 1-11 011011 7 1110 00- -0- Обобщенный код f] = (—0—0) заносим в качестве входного в первую строку таблицы соответствия, а код р, = (—111—) заносим в эту же строку в качестве выходного кода (см. строку 1 табл. 48). После этого отмечаем строку 1 исходной ОТС как рассмотрен- ную. Поскольку минимизированный код f| = (—0—0) не включает 151
в себя ни одного входного ОК из неотмеченных строк исходной ОТС, то преобразование выходных ОК неотмеченных строк ОТС не осуществляется. На этом завершается первый шаг построения первичной таблицы соответствия. Табл и ца 48 Первичная таблица соответствия № п/п Входы Х4— X, Выходы z6“zi . I -0-0 -Ill-- 2 0 l--l-l 3 -о-- -Ю 4 0 -00-I- 5 1--1 OUOll На втором шаге отыскиваем очередную неотмеченную строку ОТС с наименьшим количеством единиц в выходном ОК. Такой строкой является строка 2. В результате минимизации входного ОК этой строки получаем: f2 = а2,[а5, а6, а7] = 0—0—, [1—00,1 — 11,1110] = 0-. Этот код заносим в качестве входного во вторую строку первичной таблицы соответствия, в качестве выходного кода этой строки записываем код р2 = (1-1 — 1), как это показано в строке 2 табл. 48. Затем отмечаем строку 2 ОТС как рассмотренную (в табл. 47 строка 2 отмечена символом v2). Пос- кольку минимизированный код f2 = (0------) включает в себя входной код третьей строки, f2 = (0-) о (0011) = а3, то в вы- ходном коде р3 = (—101-1) единицы, содержащиеся в тех же раз- рядах, что и в выходном коде р2 = (1 1 — 1), заменяются на ти- ре. Следовательно, вместо выходного кода р3= (-101-1) теперь в ОТС будет записан код Ь3*=(-10----). Такая замена в табл. 47 условно показана знаком «+» в тех разрядах, где символ «1» был заменен на символ «—» (см. строку 3). Аналогично, так как f2= (0----) □ (001—) = а4, то вместо р4 = (100111) в преобразо- ванную ОТС заносится код р4 = (—00—1—), как это условно пока- зано в строке 4 табл. 47. На следующем шаге по строке 3 преобразованной ОТС запол- няется строка 3 таблицы соответствия, затем по строке 4 ОТС — строка 4 таблицы соответствия и, наконец, по строке 6 ОТС — строка 5 таблицы соответствия. Поскольку все строки ОТС отме- 152
чены, то процесс построения первичной таблицы соответствия на этом этапе завершается (см. табл. 48). Последовательное преобразование ОТС в процессе заполне- ния первичной таблицы соответствия условно отображено в табл. 47 следующим образом: отметка строки, выполненная на i-м шаге, делается символом «v,», преобразование символа «1» в выходном коде в символ «—» показывается знаком «+» в соот- ветствующем разряде. Таким образом, в результате минимизации исходной ОТС (табл. 46) получена первичная таблица соответствия (табл. 48). Следующим этапом совместной минимизации является пре- образование (сокращение) таблицы соответствия и получение частных минимальных форм системы булевых функций по пре- образованной таблице соответствия. Преобразование таблицы соответствия и получение частных минимальных форм системы переключательных функций Преобразование таблицы соответствия состоит из двух эта- пов: объединения и поглощения. На этапе объединения осуществляется, если это возможно, объединение всех строк, имеющих одинаковые входные ОК (а; = ар, при этом в качестве выходного ОК объединенной стро- ки берется ОК, равный пересечению выходных ОК объеди- няемых строк (Р, Л Pj). Так, в рассматриваемом примере (см. табл. 48) объединяются строки 2 и 4 первичной таблицы соответствия (а2 - а4 - 0-), выходным ОК объединенной строки является код (1----1 — 1) л (-00-1-) = (100111). Таблица соответствия после объединения строк имеет вид табл. 49. Табл и ца 49 Таблица соответствия № п/п Входы х4-х. Выходы z6“zi I -Ог-О -111-- 2 0 lOOlll 3 -0- - -Ю 4 1--1 ОПОП 153
На этапе поглощения таблица соответствия проверяется на наличие выходных ОК, содержащихся друг в друге. Если какой- либо входной ОК а, включает в себя некоторый другой код ctj (dj о а,), то в выходном коде осуществляется замена единиц, находящихся в тех же разрядах, в которых выходной код р, содер- жит единицы, на тире. Так, в рассматриваемом примере (см. табл. 49): а3 = (-0- -) а а, = (-0-0), р3 = (-10--), р, = (-111- -). Следовательно, в качестве выходного ОК строки 1 записыва- ем р; = (,__п--). Таблица соответствия после поглощения имеет вид табл. 50. Таблица 50 Таблица соответствия № п/п Входы X4-X| Выходы Z6-Z| I -0-0 — —ll— — 2 0 lOOlll 3 -0- - -10 4 I--I OHOll Частные минимальные формы логических функций системы Ук—У| определяются из преобразованной таблицы соответствия по следующим правилам. Частная минимальная форма логической функции yj в общем случае равна дизъюнкции конъюнкций переменных, соответству- ющих тем входным обобщенным кодам, которые находятся в стро- ках преобразованной таблицы соответствия, содержащих единицы в разрядах выходных ОК, сопоставленных с переменной у,. В рассматриваемом примере по табл. 50 получаем систему уравнений, заданную в виде совокупности обобщенных кодов: z6=0----; z5 = —0 — —, 1 ——1; z4 =-0-0,1—1; z3 =-0-0,0---; z2=0----,1—1; Z| =0---,1 --1. 154
Отсюда, переходя к алгебраической форме записи логических функций, получаем окончательную систему частных минималь- ных форм: - z6=x4; z5 = x3vx4x,; z4 = x3x, vx4x,; z3 = x3x, vx4; z2 =x4 vx4x,; Z] = VX^X]. Множество конъюнкций системы равно МК = {х4; х3; х4х,; х3х,} и имеет сложность S = 6. Заметим, что раздельная минимизация исходной системы ло- гических функций приводит нас к следующему результату: z6=x4; z5 = х3 v х4х,; z4 =х3Х] vx4; z3=x4; z2=x4vx,; Z]=X4VX]. Множество конъюнкций системы при этом имеет вид МК = {х4; х3; x4Xj; х3Х|; х4; х,} и имеет сложность S = 8, что на 2 больше, чем при совместной минимизации системы. 8.8. Минимизация переключательных функций методом неопределенных коэффициентов Можно показать, что любая переключательная функция представима в так называемой универсальной нормальной форме (УНФ), например, для п = 2: f(X]X2) = = k]X] vk|X] vk2x2 vk2x2 v k]2 X| x2 v k]2X|X2 vk]2X]X2 vk|2X|X2. 155
Такое выражение — дизъюнкция всевозможных импликант каждой конституенты. В УНФ каждый из неопределенных коэф- фициентов kj описывает вхождение (k’j = 1) или невхождение (kj = 0) соответствующей импликанты в выражение функции. Путем определения этих коэффициентов и производится мини- мизация. Представим УНФ в несколько иной форме: f0(X|X2) = kPx, vk2x2 vkl02°x1x2; f](x1x2) = k[)X| vk2x2 vk|°2X]X2; f2(xix2) = k|'x| vk^x2 vk|l2x1x2; f3(X|X2) = k1lX| vk2x2 vk]2X|X2. Если функция равна нулю на некотором наборе переменных, то очевидно, что все соответствующие этому набору коэффици- енты также будут равны нулю. На этом и строится процедура ми- нимизации. Вычеркиваются (удаляются) члены УНФ, соответ- ствующие нулевым наборам из всех наборов, после чего получа- ют простые импликанты. Далее путем определения оптимально- го покрытия всех конституент определяют минимальную форму представления функции. Минимизируем, например, функцию «импликация» Х| -> х2, которая равна нулю на единственном наборе 10. Тогда получим: f0(x1x2)=kj)xl v.kl°2xlx2; fi(xix2) = k1°X| vk2x2 vk|°2X|X2; f3(X|X2) = k2x2 vk|l2xlx2. Видим, что импликанта x, покрывает наборы 00(0) и 01(1), импликанта х2 — наборы 11(3) и 01(1). Поэтому f(Xj х2) = х] v х2, что и требовалось показать. 156
9. Понятие об автомате и его математическом описании 9.1. Основные определения теории конечных автоматов Конечным автоматом (просто автоматом) называется система (пятерка) [19]: S = < X, Y, Z, <р, \р >, где X = {Х[, х2,xj - конечное входное множество (входной алфавит); Y = {у |, у2,yj} — конечное множество внутренних состояний автомата (алфавит состояний); Z = {z,, z2,zk} — конечное выходное множество (выходной алфавит); <р — функция переходов (из состояния в другие состоя- ния); Ф — функция выходов. Если указанные множества бесконечные, то это уже не конеч- ный автомат. Если функция переходов вероятностная, то это недетерми- нированный автомат. Если в автомате выделено одно состояние, называемое на- чальным (обычно это У]), то полученный автомат называется ини- циальным и обозначается <S, у>. Таким образом, по неинициаль- ному автомату с i состояниями можно i различными способами определить инициальный автомат. Функция переходов представляет собой отображение вида ф; ХхХн Y или в другом виде: y(t + 1) = ф[х(0, y(t)], где x(t),y(t),y(t+1) — конкретные символы алфавитов X и Y соответственно в моменты автоматного времени t, t+1 (в тактах t и t+1); y(t) — текущее внутреннее состояние при соответствующем x(t); y(t+I) — последующее внутреннее состояние. Иначе говоря, функция переходов определяет последующее состояние автомата по заданному текущему и входному символу. 157
Функция выходов представляет собой отображение вида у: ХхУ->7илив другом виде: z(t) = ч/(х(0, y(t)], ,j где x(t), y(t), z(t) - конкретные символы алфавитов X, Y, Z соответственно. Мы не будем особо выделять последующие значения x(t + 1) и z(t + 1), поэтому зависимость от t будем указы- . вать только для внутреннего состояния, чтобы отделять y(t) от y(t + 1). Указанная функция выходов — функция так называемого автомата Мили. В теории конечных автоматов рассматривается также авто- мат Мура, у которого функция выходов проще: у. X Y или Z(t) = ф[у(0]. Автомат называется комбинационным, если для любого вход- ного символа х и любых состояний у,, у, ср(х,у,) = <р(х,ур = z, ина- че говоря, если выходной символ z не зависит от состояния и определяется текущим входным символом. Говорят, что у такого частного класса автомата все состояния эквивалентны и, следо- вательно, комбинационный автомат имеет одно состояние. Такой автомат задается тройкой символов: S = <Х, Z, ц/ >. Рассмотрим представление конечного автомата (КА) в виде «черного ящика» (рис. 51). Входной КА Внутреннее состояние уцеу Выходной XjGX ZjGZ Рис. 51. Конечный автомате виде «черногоящика» В комбинационном автомате внутренних состояний не ука- зывают. Входное слово — последовательность входных символов. 158
Выходное слово — последовательность выходных символов, со- ответствующих входному слову. В конечном автомате также вы- деляется последовательность символов внутренних состояний, соответствующих входному слову. Большой вклад в теорию дискретных (цифровых) автоматов внесли отечественные ученые: М.А. Гаврилов, который опубли- ковал первую в мире монографию «Теория релейно-контактных схем» (1950 г.), В.М. Глушков, В.Н. Рогинский, П.П. Пархомен- ко, В.Г. Лазарев, С.И. Баранов, А.Д. Закревский, Э.А. Якубайтис, С.В. Яблонский, В.И. Варшавский и др. 9.2. Описание конечных детерминированных автоматов таблицами переходов-выходов и графами Поскольку функции <р и хр определены на конечных множест- вах, их можно задавать таблицами. Обычно две таблицы сводят в одну, (px\|/:XxYi->YxZH называют таблицей переходов-выхо- дов, или просто таблицей переходов (автоматной таблицей). При задании автомата ориентированным графом (орграфом) его вер- шины сопоставляют с внутренними состояниями, а дуги - с ус- ловиями перехода из состояния в состояние. Дуги помечают входными символами автомата, а также соответствующими вы- ходными символами, если это автомат Мили. Рассмотрим граф переходов некоторого автомата Мили (рис. 52), X = {х„ х2}, Y = {у1; у2, у3}, Z = {zt, z2, z3}. На графе автомата Мили (рис. 52) дуги помечаются дробью, где в числителе — входной символ, а в знаменателе — выходной символ. Представим этот же автомат Мили таблицей переходов (табл. 51). Рис. 52. Граф некоторого автомата Мили 159
Таблица 51 Таблица переходов выходов автомата Мили, заданного графом, представленным на рнс. 52 Внутреннее состояние y(t) Входной символ Х1 х2 У! Уз Z1 У| z? У2 У| Z| Уз ?2 Уз У1 z3 y(t+i) z(t) В клетках табл. 51 записывается дробь, в числителе которой указывается последующее внутреннее состояние y(t + 1), а в зна- менателе — выходной символ z(t). Это указано в специальной ,y(t+i). _ выноске таблицы (-------). Видно, что автомат не полностью z(t) определенный (клетка у3х2 не заполнена). Рассмотрим граф некоторого автомата Мура (рис. 53), X = {х„ х2}, У = {у], у2, у3}, Z = {z„ z2, z3}: Рнс. 53. Граф некоторого автомата Мура Выходные символы в автомате Мура сопоставляются с конк- ретными внутренними состояниями и записываются в знамена- теле дроби, помечающей внутренние состояния. Само внутрен- нее состояние указывается в числителе. Дуги графа автомата Му- ра помечаются только входными символами. Соответствующая этому автомату Мура таблица переходов представлена табл. 52. 160
Таблица 52 Таблица переходов-выходов автомата Мура, заданного графом, представленным на рис. 53 Внутреннее состояние y(t) Входной символ Выходной символ X, х2 У| Уз У1 z2 У2 У1 Уз zl Уз У1 — z3 y(t+ 1) В клетках табл. 52, соответствующих входным символам, за- писывается только последующее внутреннее состояние y(t + 1), что указано в специальной сноске (y(t +1)). Комбинационный автомат задается таблицей истинности (соответствия), уже известной нам, так как граф переходов тако- го автомата имеет одну вершину и m петель, где m — число вход- ных символов. Пример таблицы истинности, задающей некото- рый комбинационный автомат, приведен в табл. 53. Таблица 53 Таблица истинности комбинационного автомата: X = {х„ х2, х3, х4}, Z = {z1; z2, z3, z4} Входной символ X Выходной символ Z Х1 Z2 х2 z4 х3 Z1 х4 z3 В отличие от комбинационного конечного автомата, имею- щего одно внутреннее состояние, конечные автоматы, имеющие больше, чем одно внутреннее состояние, называются последова- тельностными конечными автоматами, или просто последова- тельностными автоматами. Ц-278 161
1 Рассмотрим последовательностный автомат, заданный табл. 54. Зафиксируем начальное состояние yf и каждому входно- му слову (последовательности входных символов) а = Xjf xj2... xjr поставим в соответствие слово со в выходном алфавите: ® = V(xjr уР^х,-,, xj2, У!)... 4/(xjp ..., xjr, у,). Это соответствие, отображающее входные слова в выходные, называется автоматным отображением. Таблица 54 Таблица переходов-выходов некоторого автомата Мили Внутреннее состояние y(t) Входной символ Х1 х2 Х3 Х4 У1 21 Z1 Z1 I 21 2г У2 Уз Z2 h. Z1 ~ Уз * I ◄- см) <*> >> |N Уз Уз Z2 Уз Z2 Уз Z1 - см) <*> >»|N y(t+1) z(t) Зададим входное слово а = Х| х2 х3 х4. Тогда выходное слово со = z, Z) zt z3. Рассмотрим подробнее процесс формирования выходного слова: х:х3 х2 х3 х4 У-У-!-> z:Zl-> В этой последовательности указаны так называемые перехо- ды из состояния в состояние, обведенные линией. Например, при поступлении х2 автомат сначала находится в состоянии yf, а затем переходит в состояние у2. Указанные выше последова- тельности иногда изображают стрелками в таблице переходов- выходов. 162
Состояния yj называют достижимыми из состояния у,, если существует входное слово а, такое, что <р(а,У|) = у^ Состояния называются эквивалентными, если они соответ- ствуют одинаковым последовательностям «входное слово — вы- ходное слово»; причем длина такой последовательности может быть любая >1. Например, в последовательности ХтХгХзХгХ^ХзХгХ, У1У2У3У4У5У6У7У8У9 состояния У| и у9 эквивалентны (длина последовательности =1), состояния у, и у7 неэквивалентны, поскольку последователь- х3х2 х3х2 ность длиной 2: в первом случае, z2g а во втором - z2|zg. Таким образом, состояние у9 заменяется на состояние yf. В последовательности состояния у,, у5, у9 также эквивалентны. Эквивалентны состоя- ния Уз и у7, а также состояния у4, у8. Одинаковые последователь- ности обведены. В этих примерах предполагается, что далее последовательнос- ти повторяются, т.е. после у9 следует у2, Уз и т.д. Таким образом, вторую последовательность можно предста- вить в виде X] Х2 Х3 Х2 X] Х4 Х3 Х2 Xj У1 У2 Уз У4 У| У5 Уз У4 У1 Z1 Z1 z2 z3 Z1 z2 z2 z3 ZI где y9 заменено на yb y7 на y3, y8 на y4. Автомат, реализующий эту последовательность, эквивалентен автомату, реализующему исходную последовательность, но имеет меньше состояний. Автомат называется сильно связанным, если из любого его сос- тояния достижимо любое другое состояние. Н* 163
Автомат называется автономным, если его входной алфавит состоит из одной буквы X = {х}. Все входные слова автономного автомата имеют вид хх...х. 9.3. Понятие о технической интерпретации конечных автоматов В абстрактной теории автоматов существенна только работа автомата со словами при наличии конечной памяти. Нас же более всего будет интересовать прикладная сторона теории конечных автоматов. Конечный автомат представляет собой хотя и абстрактную, но с функциональной точки зрения довольно точную модель дискретного (цифрового) вычислительного или управляющего (контролирующего) устройства с конечным числом состояний [19]. Входной символ (буква) - это входной сигнал, точнее ком- бинация (набор) сигналов на всех входах xf, х2, ..., хп (это не буквы алфавита X) устройства. Эта комбинация сигналов на дискретных входах еще называется входным вектором (набором) —> X(t). Выходной сигнал (буква) — комбинация (набор) сигналов на дискретных выходах zf, z2, ..., zm (это не буквы алфавита Z) — выходной вектор (набор) Z(t). Входное слово - последователь- ность входных векторов, поступающих в дискретные моменты времени (такты) t = 1,2, 3... Состоянию автомата соответствует вектор Y(t) - текущее, Y(t + 1) - последующее. Этот вектор задает комбинация (набор) состояний уь у2,..., ys (это не буквы алфавита Y) элементов памя- ти автомата. Выходное слово — последовательность выходных векторов в дискретные моменты времени. Комбинационный автомат интерпретируется некоторой переключательной схемой или схемой из функциональных эле- ментов (рис. 54). Рис. 54. Техническая интерпретация комбинационного автомата 164
Функция выходов \|/(X(t))= Z(t) (отображение X(t) >-> Z(t)) реализуется, например, с использованием функционально-пол- ного набора элементов, соответствующих логическим функциям, составляющим функционально-полную систему. При этом \p(X(t)) представляется в виде суперпозиции этих логических функций. Вопрос представления логических функций в разных базисах и получения соответствующих схем, так же, как и вопрос получения переключательных комбинационных схем, рассмат- ривается особо. Последовательностный автомат интерпретируется схемой с обратными связями в виде так называемых задержек на один такт (рис. 55). Рис. 55. Техническая интерпретация автомата Мили Дело в том, что проблема автоматной полноты (для последо- вательностного автомата) алгоритмически неразрешима в отли- чие от проблемы полноты для переключательных функций (для комбинационного автомата) [19]. Однако в теории конечных автоматов доказано, что последо- вательностный автомат может быть реализован как композиция комбинационного автомата и двоичных задержек на один такт в цепи обратной связи [19]. 165
На рис. 55 ЛП - логический преобразователь - комбинаци- онный автомат, реализующий функции переходов ср и выходов у, D - задержки (от слова delay - задержка). В дальнейшем мы по- кажем, что в качестве задержек могут использоваться так называ- емые элементы памяти. В автомате Мура функции выходов реализуются отдельно (рис. 56), т.е. имеются два логических преобразователя (ЛП1, ЛП2). Таким образом, в автомате Мили выходной вектор в некото- рый момент времени зависит как от текущего состояния автома- та, так и от входного вектора в этот момент времени. Y(t+1) Рис. 56. Техническая интерпретация автомата Мура В автомате Мура выходной вектор в некоторый момент вре- мени непосредственно не зависит от входного вектора, а одно- значно определяется внутренним состоянием в этот же момент времени. Поэтому автоматы Мура менее быстродействующие, 166
чем автоматы Мили. Автоматы могут быть описаны также урав- нением (функциями) переходов и выходов (аналитически). Реальные дискретные автоматы функционируют по тактам. Такт - отрезок времени произвольной длины, в течение которо- го состояние автомата остается неизменным. Такты могут обоз- начаться моментом времени t0, tf, t2,..., причем последователь- ность номеров тактов образует дискретное (автоматное) время. В теории конечных автоматов принимается допущение, что переход из одного внутреннего состояния в другое происходит скачкообразно, мгновенно. В реальных автоматах всегда имеет место конечная длительность переходных процессов. Такты бывают устойчивыми и неустойчивыми. Такт называ- ют устойчивым, если очередное изменение состояния автомата происходит только за счет изменения состояния входов, т.е. после поступления очередного входного набора. Такт называют неустойчивым, если очередное изменение состояния автомата происходит только за счет изменения внутреннего состояния — элементов памяти. Устойчивые такты в клетках таблицы пере- ходов-выходов обычно отмечают кружками. Дискретные авто- маты, в которых изменение внутренних состояний происходит в определенные моменты времени, определяемые специаль- ным генератором синхронизирующих импульсов, называют синхронными. При этом, как правило, все тактовые интервалы равны. Автоматы, в которых переходы из одного состояния в другое заранее не определены и могут совершаться в произвольные мо- менты времени через неравные промежутки времени, называют асинхронными. Дискретный автомат — это устройство дискретного преобра- зования информации: при подаче на его вход некоторой последо- вательности входных наборов он формирует некоторую последо- вательность выходных наборов. Для реального автомата актуальным является наиболее эко- номичная его реализация из всех возможных реализаций в смыс- ле затрат элементов, энергопотребления и т.д. Можно интерпретировать автомат не только как устройство. Известно, что всякое управление (вычисление, контрольную операцию) можно реализовать как аппаратурно (в виде устрой- ства), так и программно (в виде программы ЭВМ). Это приводит к более общему толкованию конечных автоматов как алгоритмов 167
с конечной памятью, многие свойства которых можно исследо- вать и безотносительно к способу их реализации [19]. Имеется еще и другая интерпретация автоматов. Фон Нейман рассматривал автоматы как удобный язык для описания основ- ных законов взаимодействия сложных систем, т.е., по существу, как метаязык кибернетики [19]. Задачами теории конечных автоматов являются: 1) изучение возможностей автоматов в терминах множеств слов, с которыми они работают (распознавание входных после- довательностей - слов), формирование требуемых выходных, т.е. автоматных отображений; 2) распознавание различных свойств автоматов; 3) описание автоматов (анализ) и их реализация, т.е. пред- ставление автомата как структуры, состоящей из объектов фик- сированной сложности (синтез) [19]. При синтезе автоматов выделяют следующие этапы: 1) абстрактный синтез, или формализация условий работы, когда от некоторого высокоуровневого описания автомата (на- пример, на естественном языке - в виде словесной формулиров- ки) переходят к математической модели. Такой моделью может быть таблица истинности для комбинационного автомата, табли- ца переходов-выходов для последовательностного автомата. В свою очередь по этим моделям получают переключательные функции в символической форме; 2) структурный синтез — производится минимизация пере- ключательных функций, описывающих автомат, выполняется их представление в виде, соответствующем заданному базису реали- зации. Эти два этапа называют логическим проектированием. Их ре- зультатом является функциональная схема автомата (например, функциональная электрическая схема); 3) физический синтез - решаются вопросы построения прин- ципиальной схемы (например, принципиальной электрической схемы), создания топологии кристалла микросхемы, обеспече- ния надежности, помехоустойчивости и в дальнейшем изготовле- ния автомата. При синтезе последовательностного автомата проводится и минимизация числа состояний автомата - путем сжатия таблицы переходов-выходов. 168
9.4. Синтез комбинационных автоматов в заданном базисе Синтез комбинационных автоматов При синтезе комбинационных автоматов (после этапа абст- рактного и структурного синтеза имеются соответствующие пе- реключательные функции) требуется получить схему автомата, например, в виде переключательной схемы или схемы из функ- циональных (логических) элементов. Синтез переключательной схемы Пусть задана переключательная функция f(x3 х2 xf) = х2 v Х|Х3. Получим переключательную схему (рис. 57). 1-----------г *1 х2 Рис. 57. Переключательная схема, реализующая функцию f(x3 х2 х/) = х2 v x^j На рис. 57 верхняя и нижняя горизонтальные линии обозна- чают, например, полюсы источника питания, а буква F - некото- рый элемент, срабатывающий в случае равенства функции х2 v Х|Х3 логический единице, т.е. в случае наличия цепи к верх- нему полюсу. Символами переменных хь х2, х3 могут обозначать- ся, например, контакты некоторых датчиков, a F - обмотка реле, контакт которого включает некоторый исполнительный орган (вентилятор, сирену, нагреватель и другие элементы авто- матики). Соответствующая релейно-контактная схема изобра- жена на рис. 58. 169
+28,5 В Контакт реле - исполнительный орган Обмотка реле - реагирующий орган ОВ Рис. 58. Релейно-контактная схема реализации логической функции х2 v XjX3 Часто датчики подключаются не непосредственно в цепи ре- ализации переключательных функций, а через реле-повторители (рис. 59). Рис. 59. Релейно-контактная схема реализации переключательной функции х2 v XjX3 с реле-повторителями сигналов датчиков Синтез комбинационных автоматов на основе функциональ- ных (логических) элементов по сравнению с переключательными схемами требует особого представления логической функции - в виде суперпозиции операций заданного базиса. Синтез в базисе И, ИЛИ, НЕ Наиболее просто это сделать, если задать базис И, ИЛИ, НЕ. Предполагается, что переключательная функция представлена в днф. Пусть, например, задана следующая переключательная функ- ция: z(abcdx2X!) = ах2Х| vbx2X! vcx2x, vdx2xP 170
Получим схему в базисе И, ИЛИ, НЕ (рис. 60). Рис. 60. Схема в базисе И, ИЛИ, НЕ без ограничения числа входов функциональных элементов Схема (см. рис. 60) дана в предположении, что число входов элементов не ограничено. Если же должны использоваться только двухвходовые эле- менты, т.е. все операции бинарные (кроме инверсии), то схема будет выглядеть так, как изображено на рис. 61. Синтез методом каскадов При синтезе комбинационных автоматов используется метод каскадов, основанный на разложении Шеннона: f(X], ..., X,, ..., Xn) =Xif(X1, ..., 1, Xn) VXjf(x,, ..., 0,..., xn) = = Xjf(l) vXjf(0). Такое разложение позволяет исключать переменные и пони- жать размерность по каскадам до тех пор, пока остаточные функ- ции не будут иметь простой вид и их реализация не будет пред- ставлять трудности [9]. 171
Рис. 61. Схема с учетом наличия только двухвходовых элементов И, ИЛИ Реализуем вышерассмотренную функцию z(abcdx2x,) мето- дом каскадов с использованием блоков исключения переменной вида Xjf(I) v \f(0), которые легко реализуются в базисе И, ИЛИ, НЕ. Очевидно,что z(abcdx2x,) = ax2Xj vbx2x, vcx^ vdx2x, = = X[(bx2 vdx2) vxj(ax2 vcx2), т.е. z(l) = bx2 vdx2, z(0) =ax2 vcx2, которые реализуются на двухвходовых элементах И, ИЛИ. Проводить дальнейшее разло- жение нет необходимости. Соответствующая схема комбинаци- онного автомата изображена на рис. 62. Интересно, что схема на рис. 62, построенная по методу кас- кадов, проще в смысле числа элементов - для ее построения не- обходимо 11 элементов (9 двухвходовых и 2 инвертора). Сравни- те ее со схемой на рис. 61, для построения которой потребовалось 13 элементов (11 двухвходовых и 2 инвертора). 172
Рис. 62. Схема, построенная по методу каскадов В общем случае сложность остаточных функций зависит от порядка исключения переменных, и оптимальное их исключение ищут специальными методами, основанными на понятии буле- вой производной: df — = f(x„ х2,..., хЬ|, 1, xi+1,..., xn) ® f(x,, x2,..., Xj.,, 0, xi+1,..., xn), где ® - сумма по модулю 2 [9]. При использовании базисов, отличных от рассмотренного ба- зиса И, ИЛИ, НЕ, блоки исключения переменных и блоки реали- зации остаточных функций реализуются в заданном базисе. Например, в импликативном базисе {->,0}: а = а-»0 a v b = а v b -а ->b =(а ->0) ->Ь a-b = avb-a-»b=a-»(b-»0) = = (а-> (b-» 0))-» 0. 173
Синтез в базисах И-НЕ, ИЛИ-HE ' Наиболее часто используются базисы, состоящие из одной функции: И-НЕ, ИЛИ-НЕ. Представление переключательной функции в этих базисах требует использования только этих операций с учетом ограниче- ний по числу входов соответствующих элементов. Для этого используется закон Де Моргана: f(abcd) = abvcd = abvcd = ab cd - это представление в базисе И-НЕ. f(abcd) = ab vcd =ab vcd =а vb vc vd - это представление в базисе ИЛИ-НЕ. Ниже представлены соответствующие схемы (рис. 63). а б Рис. 63. Реализация функции f(abcd)=a b vcd: a - в базисе 2И-НЕ; 5-2ИЛИ-НЕ В случае превышения ограничения по числу входов элемен- тов следует еще раз применить закон Де Моргана, например: f(abc) = a bvbcvac= abbcac =abbcac, т.е. получили только одноместные и двухместные операции И-НЕ. 174
Синтез в базисе Жегалкина Полиномом Жегалкина называется представление функции в базисе {©, И, НЕ} (имеется соответствующая алгебра Жегал- кина). В данном представлении инверсия реализуется как сумма по модулю 2 с константой 1. Для представления ДНФ в виде полинома Жегалкина необхо- димо выразить дизъюнкцию через конъюнкцию и инверсию. Например: xvy = x-y =(х®1)(1 ®1)®1 = = ху ® X ® у ® 1 ® 1 - ху ® X ® у. (1®1=0). Пример. Представить в виде полинома Жегалкина функцию X V у V Z. хvy vz = xyz = (хЖ 1)(у ®l)(z ©1)©1 =(ху ®х ®у ®l)(z ®1) ®1 = = xyz® xz ®yz®ху®х® у ® 1 ® 1 ® Z = xyz ® XZ ® yz ® ху ® X ® у ® Z. Для преобразования полинома Жегалкина используются обычные приемы элементарной алгебры (исключение составляет равносильность а © а — 0). Полином Жегалкина может быть получен по таблице истин- ности путем суммирования по модулю 2 конъюнкций перемен- ных без инверсии х, или инверсных переменных (Xj® 1) соответ- ствующих рабочих наборов. Например, получим полином Жегалкина для функции f, таб- лица истинности которой имеет вид, представленный в табл. 55. Таблица 55 Таблица истинности X У Z f 0 0 0 0 0 0 I 1 0 I 0 1 0 I I 0 I 0 0 1 175
Продолжение X У Z f I 0 I 0 I I 0 0 I I I I Тогда получим: f = (х ® 1)(у Ж l)z ® (х ® l)y(z © 1) © х(у © l)(z Ж1) © xyz = = (ху Ж х Ж у Ж 1 )z Ж (xz ® х Ж z Ж 1 )у Ж x(yz Ж у Ж г © 1) © xyz = = wfi. Ж х^Жу/Ж z Ж ху^ ЖхУФу^Ж у® vfl 'pft = = х Ф у Ф z, что и требовалось доказать, ибо и рассматривалась функция сло- жения по модулю 2 трех аргументов. 9.5. Булева производная Производная первого порядка — от булевой функции т по dxj переменной Xj определяется следующим образом [9]: df — = f(xb х2,..., Xj-1, 1, xi+1,xn) ® f(x„ x2,Xj.!, 0, xi+1,xn), где f(X|, x2,..., Xj.j, 1, xi+1,..., xn) — единичная остаточная функция, получа- емая в результате подстановки вместо х, константы 1; f(Xj, х2,Х;.|, 0, xi+1,..., хп) - нулевая остаточная функция, получае- мая в результате подстановки вместо х, константы 0. Пример 1. f - Xj v х2. -^- = 1Ф х2 =х2. dX] 176
Пример 2. f = abvbc. = (b v |c)®6c = (b v c)®6c = (b v с)(Б c) v (b v с)(Б c)= =_be-bcv (b v cXb v c) = b. Примерз. f(X|X2X3) = Х2Х3 VХ,Х2Х3. df — = (x2x3vl-x2x3)®(x2x3 vO-x2x3)=(x2x3 vx2x3) ®x2x3 = dx j = (х2х3 vx2x3)(x2x3) v(x2x3 vx2x3)x2x3 = = (x2x3 vx2x3)(x2 vx3)v(x2vx3)(x2 vx3)x2x3 = = x2x3x2 vx2x3 vx2x3x3 vx2x3 vO =X2X3. Булева производная no Xj = 0, если f не зависит от х,, булева производная по х}= 1, если f зависит только от х,. Булева производная первого порядка определяет условия, при которых функция изменяет свое значение при изменении значе- - (df п ния переменной X: (— = 1). dx, В нашем примере функция f(Xj х2 х3) изменяет свое значение при изменении хь если истинна конъюнкция х2 х3, т.е. х2 = 1, х3=1. Пример 4. Определим все булевы производные функции f(X!X2X3) =Х]Х2 VXjX3. df ---= (x2vx3)®0 = x2 vx3. dxt df , _ 4 _ — _ _ ---=(X[ VX1X3)®X1X3 =Xj ©Х^з =X]X,X3 VX]X.X3 = dx2 = X](X] VX3)=X]X3. 12-278 177
df ----= X|X2 ®(X. VX1X,)=X1X, ©Xi = dx3 = X|X2X, VX|X2X| =(Xj vx2)x, = X,X2. Итак, значение функции изменяется (функция переключает- ся) при изменении хь если х2 — 1 или х3 - 0 (х2 v х3 = 1); при изменении х2, если х, = х3 = 1 (х(х3 = 1 ); при изменении х3, если х, = 1; х2 = О (Х]Х2 = 1). Смешанная булева производная k-го порядка определяется путем вычисления к раз булевых производных первого порядка от булевых производных первого порядка, например [9]: d2f d df d(x2vx3) . -----------(--)= —- = 1®х3=х3. dx^x2 dx2 dXj dx2 Булева производная k-го порядка равна сумме по модулю 2 всех производных первых, вторых, третьих, ..., k-х смешанных производных и определяет условия, при которых функция изме- няет значение при одновременном изменении соответствующих переменных, например: d(xbx2) dx, dx2 dxjdx2 = (x2 vx3)® X,X3 ®X3 =(x2 vx3) ®X3(X| ®1) =(x2 vx3) ®X3X”| = = (x2 VX3)X3X] v(X2 VX3)X3X, =(x2 VX3)(X3 VXj) VX2X3X3X] = = X2X3 VX3 VX2X1 VX3X1 Vx3x2x1 =Х3 ^X2X1 ^Х2ХГ При синтезе методом каскадов оптимальное исключение пе- ременных достигается путем анализа веса производных [9]. Вес производной по данной переменной — число конституент соот- ветствующей переключательной функции, т. е. сначала исключа- ется переменная, производная которой имеет максимальный вес, что означает максимальное изменение функции при изменении переменной. 178
9.6. Элементарные автоматы памяти на основе комбинационного автомата и задержки Последовательностный автомат может быть синтезирован как композиция комбинационного автомата, реализующего функции переходов <р и выходов у и элементарных автоматов памяти [10, 19], например, задержек на один такт (рис. 64). Рис. 64. Задержка на один такт Физически элементарный автомат памяти типа «задержка на один такт» реализуется линией задержки, которая может быть выполнена в виде специальных элементов - линий задержки или в виде соединения логических элементов, не инверсирующего сигнал, либо, в частных случаях, линией связи, поскольку пере- дача сигнала по ней имеет некоторую конечную длительность, не превышающую длительность такта. Рассмотрим синтез элементарных автоматов памяти на основе задержек на один такт. Пусть требуется синтезировать автомат, выход которого устанавливается в состояние логической единицы при поступлении сигнала логической единицы на вход установки (обычно он обозначается S - «Set») и хранящий это состояние до поступления сигнала логической единицы на вход сброса (обыч- но он обозначается R - «Reset»). Таким образом, требуется создать автомат, имеющий два входа R и S и один выход, который обозна- чим z (рис. 65). Иногда добавляют и инверсный выход z. Рис. 65. Элементарный автомат памяти 12’ 179
Ясно, что синтезируется последовательностный автомат, так как его выходной сигнал зависит от последовательности поступ- ления сигналов на входы: S R О/?Ю/0\О о 0 0 10 0\1/1’Q/0 Видно, что при одинаковых входных сигналах на входах SR выходной сигнал может быть как 0, так и 1. В таком случае опишем функционирование автомата первич- ной таблицей переходов-выходов (табл. 56). Таблица 56 Первичная таблица переходов-выходов N RS Z 00 01 11 10 1 О 2 - 0 2 ® ® - 1 1 Итак, в исходном состоянии автомат находится в строке с но- мером 1, в клетке, соответствующей нулевому состоянию RS. При поступлении набора сигналов 01 (начинается установка) ав- томат начинает переходить в состояние 2 (возникает неустойчи- вый такт 2), затем происходит перемещение во вторую строку — в устойчивый такт 2, обведенный кружком, при этом на выходе возникает сигнал 1. При поступлении сигнала 10 в первой строке и сигналов 00, 01 во второй строке состояние автомата не меняет- ся, состояние 11 считается невозможным. Очевидно, что сокращение числа строк табл. 56 невозможно, иначе мы имели бы комбинационный автомат (у которого одно состояние — одна строка). Приступим к кодированию состояний. Оно в данном случае тривиально: исходное состояние сопоставим с состоянием 0 (1 строка), другое состояние сопоставим с 1. 180
Получим таблицы переходов-выходов для автомата Мили (табл. 57) и автомата Мура (табл. 58). Таблица 57 Таблица переходов-выходов элементарного автомата памяти Мили Таблица 58 Таблица переходов-выходов элементарного автомата памяти Мура Таким образом, для автомата Мура (см. табл. 58) z(t) = y(t). Построим автомат Мура. Получим функции переходов y(t + 1) и выходов z(t): Jy(t + 1) =1,4,5 [0,2,6]; ]z(t) = y(t). 181
Минимизируя y(t + 1) по карте Карно, какой и является табл. 58, получаем: y(t + l) = Svy(t)R. Реализуем эту функцию в виде переключательной схемы (рис. 66). Т R S м _________1_________ Рис. 66. Переключательные схемы элементарного автомата памяти Мура На рис. 66 Y — хранитель состояния автомата (например, обмотка реле), обратная связь, указанная пунктиром, реализует самоблокировку. Задержка на один такт осуществляется следую- щим образом: сначала срабатывает Y, затем замыкается его кон- такт у. Технически предполагается, что к моменту размыкания S у уже замкнут. Построим схему на функциональных элементах в базисе И-НЕ: y(t + l) = S vRy(t) =SRy(t). Таким образом, один элемент 2И-НЕ реализует функцию f] =Ry(t), второй - S fj. Соответствующая схема показана на рис. 67. Можно заметить, что выход второго элемента в цепи R при R = 0 соответствует значению y(t). Эту схему часто изображают в несколько другом виде, полагая, что задержка реализуется в ли- нии связи (рис. 68). 182
Рис. 67. Реализация элементарного автомата памяти на функциональных элементах 2И-НЕ Рис. 68. Элементарный автомат памяти RS-триггер Это известная схема RS-триггера. Его условное графическое обозначение приведено на рис. 69. Рис. 69. Условное графическое обозначение RS-триггера Для описания работы элементарных автоматов памяти при- меняются таблицы возбуждения, указывающие условия перехода от текущего к последующему внутреннему состоянию. Для RS-триггера это табл. 59. 183
Таблица 59 Таблица возбуждения RS-триггера y(t) y(t+ I) 0 I 0 0 1 0 I 0 I 0 s R Аналогично выглядит таблица и для такого элементарного автомата памяти, как дистанционный переключатель, который имеет механическую обратную связь (механическую фиксацию состояния) и широко применяется в автоматике (рис. 70). Выключить > Включить > Рабочая обмотка Отбойная обмотка Рис. 70. Условное графическое обозначение дистанционного переключателя Задержка на один такт может быть реализована и D-тригге- ром, устанавливающимся в состояние, определяемое его входом D по специальному разрешающему сигналу - синхроимпульсу. Это уже синхронный автомат в отличие от рассмотренных выше асинхронных (рис. 71, табл. 60). D C < Рис. 71. Условное графическое обозначение синхронного D-триггера Косая черта с наклоном вперед на входе синхронизации обоз- начает срабатывание по фронту синхроимпульса. 184
Таблица 60 Таблица возбуждения D-триггера y(t) y(t+l) 0 I 0 0 I I 0 I D(t) D-триггер без синхронизации - аналог обычного реле (рис. 72). Включить Сигнал У Рис. 72. Условное графическое обозначение реле и временная диаграмма работы Имеются и другие элементарные автоматы памяти, напри- мер, асинхронный RS-триггер с инверсным управлением (нуля- ми, а не единицами, рис. 73, табл. 61), синхронный JK-триггер (рис. 74, табл. 62). я T < Рис. 73. Условное графическое обозначение RS-триггера с инверсным управлением Таблица 61 Таблица возбуждения RS-триггера с инверсным управлением y(t) y(t+ I) 0 1 0 1 0 1 I 1 0 1 s R 185
J р к т Рис. 74. Условное графическое обозначение синхронного JK-триггера, срабатывающего по заднему фронту импульса Таблица 62 Таблица возбуждения синхронного JK-триггера, срабатывающего по заднему фронту импульса y(t) y(t+ I) 0 1 0 0 1 I J 1 0 к При синтезе сложных последовательностных автоматов на основе элементарных автоматов памяти (элементов памяти) для получения функций, описывающих управление ими комбинаци- онной частью автомата, строится таблица возбуждения эле- ментарных автоматов памяти (таблица возбуждения элементов памяти). 9.7. Синтез автомата - распознавателя последовательности Дано: кодовая последовательность 0-1-3-2 двоичного двух- разрядного сигнала (в десятичном коде). Требуется получить ПФ, описывающие соответствующий ко- нечный автомат-распознаватель последовательности (рис. 75). а Входы Ь КА Zi “верно” Выходы Z2 “неверно" Рис. 75. Распознаватель последовательности на входах а, b 186
Последовательность поступает на входы а, b конечного авто- мата (КА): 2° 21 а 0 0 I 1 ь 0 I I 0 Это правильная последовательность изменения входов а,Ь в соответствии с заданием. Возможны и неправильные последовательности из алфавита А = {0, 1,2, 3}. Ограничим возможные неправильные коды изме- нением только одного двоичного разряда. Рассмотрим соответствующий (рис. 76, так как всего два входа). квадрат соседних чисел (2)10 Рис. 76. Иллюстрация изменения входов Направление изменения входных кодов показано стрелками. Видно, что вначале из 00 (0) имеем переход в 01 (1), если после- довательность правильная. Если последовательность неправиль- ная, тогда возможен лишь один вариант (рис. 77). 01(1) Рис. 77. Иллюстрация возможного нарушения последовательности: из 00(0) в 10(2) 187
На втором шаге правильно: 01 (1) в 11 (3), а неправильно (рис. 78), т.е. возможен возврат в 00. 00(0) Рис. 78. Иллюстрация возможного нарушения последовательности: из 01(1) в 00(0) Аналогично на третьем шаге неправильным будет переход из 11 (3) в 01 (1) (рис. 79). 11(3) 00(0) Рис. 79. Иллюстрация возможного нарушения последовательности: из 11(3) в 01(1) Таким образом, можно построить граф возможных последо- вательностей (рис. 80). Правильные (65^2) 2_0J> Неправильные Рис. 80. Граф последовательностей распознавателя 0-1-3-2 188
Таким образом, имеем всего 4 последовательности: О-1-3-2 (правильная); 0-2 (неправильная); 0-1-0 (неправильная); 0-1-3-1 (неправильная). Строим первичную таблицу переходов (ПТП) соответствую- щего конечного автомата — распознавателя последовательности 0-1-3-2 (табл. 63). f Таблица 63 Первичная таблица переходов-выходов распознавателя 0-1-3-2 П оследовател ьность принята! Поеледовател ьность нарушена! Здесь (см. табл. 63) кружком обведены устойчивые такты ра- боты автомата-распознавателя. Переход от одного устойчивого такта в соответствующей строке таблицы переходов-выходов к другому осуществляется через неустойчивый такт. В каждой стро- ке ПТП только один устойчивый такт, номер которого соответ- ствует номеру строки. 189
Можно получить переключательные функции и по ПТП, но в большинстве случаев пытаются сократить число строк первичной таблицы переходов («сжать» ПТП), т.е получить минимизирован- ную таблицу переходов (МТП). Это удобно делать путем построения графа объединения строк. В таком графе число вершин равно числу строк ПТП (в нашем случае - 7). Ребром соединяются вершины, соответствую- щие двум строкам, которые можно слить в одну строку, т.е. в этих строках клетки не противоречат друг другу. Такими клетками будут: Д 1) пустые клетки и клетки с цифрами и наоборот; ™ 2) клетки с цифрой i и клетки с цифрой в кружке и наоборот, т.е. соответствующие неустойчивый и устойчивый такты слива- ются в один устойчивый такт. Рис. 81. Граф объединения строк Теперь в графе объединения строк необходимо выделить ми- нимальное количество максимальных полных подграфов. В на- шем случае это подграфы 3, 4, 6, 7; 1,5 и одна вершина 2. Возможны другие варианты объединения. Но ни при одном варианте мы не получим две строки (это идеал, к нему надо стре- миться). Получим минимизированную таблицу переходов (табл. 64). Приступим к кодированию состояний автомата. Применим соседнее кодирование, которое характеризуется тем, что строки МТП, между которыми имеются переходы, должны быть закоди- рованы соседним кодом (кодом, отличающимся только в одном 190
разряде). Это необходимо для повышения надежности автомата, чтобы не было неоднозначности переходов из состояния в состо- яние. Таблица 64 Минимизированная таблица переходов Кодирование может иметь вид: I: 00 II: 01 111:11 т.е. необходимо два двоичных разряда, которые обозначим yj у2. Это не что иное, как текущее состояние автомата, которое приня- то обозначать y2(t) y^t) или сокращенно у2 y^t). Теперь получим таблицу переходов-выходов (ТПВ), табл. 65, в которой указывается, как автомат переходит из текущего состо- яния (коды строки) в последующее (y2yi(t+l) - код в некоторой клетке) при различных комбинациях входов ab. Код клетки — это соединение (конкатенация) двоичного кода строки и столбца, представленное в виде десятичного числа. Очевидно, что кружки в МТП и ТПВ располагаются в одинако- вых клетках. Если такт устойчивый, то в кружке ТПВ в числителе указывается номер соответствующей строки. Если такт неустой- чивый, то указывается код той строки, в которую осуществляется переход. В знаменателе указываются выходные сигналы z2Z|. Они 191
берутся из первичной таблицы переходов-выходов. Так, если в клетке МТП находится цифра 5 (пятый такт), то из пятой строки ПТП берется код 10 (нарушение последовательности). Указываем это число в клетке 2 ТПВ (—). Таблица переходов-выходов Таблица 65 Теперь получаем все четыре ПФ, описывающие наш автомат в символической форме: y2(t + 1)У2У,аЬ =4,7,12,13,15,14[0,1,2,5], y1(t + l)y2yiab=l,4,5,7,12,13,15,14[0,2], 'z2y2y|ab =2,4,12,13(0,1,5,7,15,14], ,%У|аь =1410,1,2,4,5,7,12,13,15]. По этим ПФ можно построить схему автомата, предваритель- но проведя минимизацию. Получим структурную схему автомата (рис. 82). 192
Вход Рис. 82. Структурная схема автомата-распознавателя 10. Элементы теории кодирования 10.1. Понятие о кодировании Кодирование занимает ключевую роль в информатике [36]. Наскальные рисунки первобытных людей — первые попытки ко- дирования. Между ними и письменностью — дистанция огром- ного размера. Затем были предметные знаки: забор — символ собственности, корона — символ власти. Идеографическое пись- мо — картинно-изобразительное письмо - среднее между рисун- ком и знаковым письмом. Иероглифическое письмо — каждый иероглиф — слово или даже целое понятие. Это письмо сохрани- лось до сих пор в некоторых странах. Затем появилась письмен- ность, кодирующая уже не непосредственную действительность, а речь. Буквы кодируют звуки, их меньше, чем иероглифов. Иероглифы, буквы, звуки, запахи, жесты, математические обоз- начения и т.д. — все это знаки. Имеется специальная наука об ос- мысленных знаковых системах — семиотика. Исследованиями знаковых систем, в которых используются символы алфавитов, занимается математическая лингвистика, о которой будет идти речь далее. Следует отметить, что генетический код, записанный в моле- кулах ДНК, мы носим с собой. Он передан нам предками, и мы передаем его потомкам - в грядущее. 13-278 193
10.2. Системы счисления как основа различных кодов Кодирование информации о численности чего-либо привело к созданию систем счисления [36]. Десятичная система счисления — способ кодирования нату- ральных чисел, причем основание системы счисления проистека- ло от количества пальцев на руках. История знает и другие систе- мы — двадцатеричная — по числу пальцев на руках и ногах. Римс- кие цифры — другой, более наглядный способ. Один палец — I, , пятерня — V, две пятерни — X, пятьдесят — L, сто — С, тысяча — | М. С помощью букв обозначали цифры и греки, и русские, и гру- зины. Индийцы и арабы придумали нуль и позиционную систему счисления. Основной единицей кодирования информации в настоящее время является бит — один двоичный разряд, который может быть либо нулем (0), либо единицей (1). Большинство ЭВМ ис- пользуют двоичное представление информации. В начале эры компьютеров битами кодировали числа и команды. Потом оказа- лось, что такое кодирование пригодно для записи, хранения и переработки практически любой информации: изображений (видеоинформации), звука, музыки, фильмов и т.д. Группы в три бита называют триадами, группы из четырех би- тов — тетрадами. Наиболее часто сейчас говорят о байтах — груп- пах из восьми битов. Два байта — это уже слово. Килобайт — это 210бит — 1024 бита. Мегабайт — это 220бит. Гигабайт — это 230бит. Терабайт — это 240 бит. Двоичная система счисления В двоичной системе счисления основание 2: используется только два символа: 0,1. Поэтому арифметика очень простая: 0 + 0 = 0, 0+1 = 1, 1 + 0 = 1, 1 + 1 = 10 (0 и перенос в следующий разряд). Запись 11011,101 некоторого двоичного числа соответству- ет следующему десятичному числу: 1 24 + 1 • 23 + 0 22 + 1 • 21 + + 1 2°, 1 • 2'1 + 0 2'2 + 1 • 2’3 = 27,625. Такое представление числа называется представлением с фиксированной запятой. Запятая фиксирована в соответствую- щей аппаратуре (арифметико-логическом устройстве АЛУ). Час- то числа представлялись в виде дробей, поэтому исходные дан- 194
ные и результаты решения задач должны были представляться именно так. Для этого проводили масштабирование — выбирали масштабные коэффициенты. Неправильный выбор масштабных коэффициентов мог вызвать переполнение разрядной сетки — ошибку в виде образования целой части, для которой в разрядной сетке нет места, и она теряется. Рассмотрим, как выполняется двоичное суммирование. Пусть необходимо сложить два двоичных числа 101 и 11: 101 ' + И 1000. Двоичное вычитание, например, (10—6 в десятичном коде) выглядит следующим образом: 1010 - оно 0100. Для выполнения такой операции необходим специальный «вычитатель», поэтому вычитание заменяют сложением числа в так называемом обратном коде, когда разряды вычитаемого ин- версируют: 1010 + 1001 1 ООН. При этом образуется перенос 1, который необходимо сложить с промежуточным результатом 0011: ООП + ___1 0100, таким образом, получаем ответ 0100 (10 — 6 = 4 в десятичном коде). 13* 195
Для операций в обратном коде необходим специальный сум- матор с циклическим переносом, обеспечивающим сложение пе- реноса с промежуточным результатом. Это неудобно, поэтому применяют дополнительный код, который устраняет цикличес- кий перенос. Представим десятичное число —6 в двоичном дополнительном коде (т. е. заменяем операцию 10 — 6 на опера- цию 10 + (—6), числа здесь в десятичном коде): —6 десятичное это —ОНО двоичное, в обратном коде 1001, да еще прибавляем едини- цу (таковы правила образования дополнительного кода): 1001 . + ___1 1010, таким образом, дополнительный двоичный код десятичного чис- ла —6 равен 1010. Здесь старший подчеркнутый разряд — это знак, знаковый разряд. Тогда операция вычитания выглядит так: 1010 + 1010 1 0100. Перенос, возникающий в этом случае, просто отбрасывается, получаем 0100 (4 десятичное). Поэтому при аппаратной реализа- ции вычитания может быть использован обычный сумматор. Дополнительные коды четырехразрядных двоичных чисел показаны в табл. 66. Таблица 66 Дополнительные коды 0000 0 0001 +1 0010 + 2 ООН + 3 0100 + 4 0101 + 5 оно + 6 0111 + 7 1000 Не используется 1001 — 7 1010 -6 1011 - 5 1100 -4 1101 -3 1110 — 2 1111 - 1 196
Таким образом, в формате из четырех разрядов представимы числа в диапазоне —7 + 7 (23 — 1). При использовании байта с фиксированной запятой пред- ставляют целые числа в диапазоне -127+127 (27 — 1). В общем случае п бит могут кодировать 2П объектов. Перевод чисел из десятичной в двоичную систему счисления выполняют, например, путем деления на основание системы счисления — 2, и записывают соответствующие остатки либо подбирают соответствующие степени числа 2. Пример. Дано десятичное число 38, ближайшая степень числа 2 — это число 32, т.е. 25, остается еще 6, ближайшая степень чис- ла 2 — это 4, т.е. 22, остается 2, это 21. Таким образом: О • 27 + 0 • 26 + 1 • 25 + 0 24 + 0,- 23 + 1 22 + 1 21 + 0 2° = 100110. Восьмеричная система счисления В восьмеричном коде восемь символов: 0 (000 двоичное), 1 (001 двоичное), 2 (010 двоичное), 3 (011 двоичное), 4 (100 двоичное), 5 (101 двоичное), 6 (110 двоичное), 7 (111 двоичное). Для перевода числа из восьмеричного кода в двоичный необ- ходимо каждую цифру восьмеричного кода заменить на триаду (три символа) двоичного, например, 3548= И 101 1002. Здесь дво- ичное число представлено в байтовом формате, поэтому старшая триада неполная. Наоборот, из двоичного кода в восьмеричный: 10 111 1012 = 2758. Шестнадцатеричная система счисления В шестнадцатеричном коде шестнадцать символов: 0 (0000 двоичное), 1 (0001 двоичное), 2 (0010 двоичное), 3 (000 двоичное), 4 (0100 двоичное), 5 (0101 двоичное), 6 (0110 двоичное), 7 (0111 двоичное), 8 (1000 двоичное), 9 (1001 двоичное), А (1010 двоичное), В (1011 двоичное), С (1100 двоичное), D (1101 двоичное), Е (1110 двоичное), F (1111 двоичное). 197
Для перевода числа из двоичной системы счисления в шест- надцатеричную необходимо заменить каждую тетраду (четыре символа) соответствующим шестнадцатеричным символом, например: 1011 11012=BD16 Наоборот, из шестнадцатеричного кода в двоичный: 9AEF16= 1001 1010 1110 И112 В восьмеричном и шестнадцатеричном кодах можно строить соответствующие арифметики. Например, в шестнадцатеричном коде: EF16 + АС16 = 19В16 (F + С = IB, 1 переносится в следующий разряд; Е + А = 18, да еще +1 из предыдущего разряда = 19). В восьмеричном коде: 378 + 218 = 608. Представление чисел в ЭВМ в двоично-кодированном десятичном формате (BCD) В BCD-формате десятичные цифры хранятся в виде 4-битных двоичных эквивалентов. В упакованном BCD-формате цепочка десятичных цифр хранится в виде последовательности 4-битных групп, например: 9502 в виде 1001 0101 0000 0010. В неупакованном BCD-формате каждая цифра хранится в младшей тетраде соответствующего байта. Представление чисел в ЭВМ в формате с плавающей запятой Такой формат предусматривает представление числа в пока- зательной форме. Например, десятичное число 685,7310 пред- ставляется в виде 0,68573 103, здесь 0,68573 — мантисса, 10 — ос- нование десятичной системы счисления, 3 — порядок. В ячейке памяти двоичные числа в формате с плавающей запятой хранятся в виде двух групп цифр: первая группа, называ- емая мантиссой, определяет само число, вторая, называемая порядком, определяет место запятой в числе. Соответствующим выбором значения порядка можно добиться, чтобы старший раз- j ряд мантиссы не был равен нулю. Такая форма называется нор- 198
мольной, а соответствующая операция приведения к такой форме называется нормализацией. Кодирование буквально пронизывает информационные тех- нологии [36]. В теории кодирования рассматриваются: • представление данных произвольной природы в памяти ЭВМ (мы рассмотрели представление чисел); • обеспечение помехоустойчивости при передаче данных по каналам связи (кодирование по нечетности, по Хэммингу, с ис- пользованием циклических полиномов); • защита данных от несанкционированного доступа (крипто- графическое кодирование); • сжатие информации в базах данных. 10.3. Понятие о помехоустойчивом кодировании Код — это совокупность символов в представлении информа- ции. Каждому знаку соответствует определенная комбинация ну- лей и единиц (бинарное кодирование). Простой код — если все его символы используются для пред- ставления информации. Равномерный код — если все его слова имеют одинаковое коли- чество разрядов. Существуют коды, обнаруживающие ошибки, и коды, обна- руживающие и исправляющие ошибки. Как правило, при передаче информации используется избы- точность — не все разряды задействованы для передачи информа- ции, не все 2П (где п — количество разрядов) комбинаций исполь- зуются для ее представления. Разделяют разрешенные и запрещенные комбинации. Появ- ление запрещенных комбинаций — ошибка передачи инфор- мации. В теории кодирования используется понятие кодового рас- стояния (расстояние Хэмминга). d — кодовое расстояние — это число разрядов, по которым от- личаются две кодовые комбинации. 1 УУо 1 199
В этих двух четырехразрядных кодовых комбинациях d = 2. Рассмотрим двухразрядную информацию. *2 Х-J Ошибки 0 -*Х2 10 —»Xi 01 0 1^-^х2 11 —*-Xi 00 1 11 1 01 1<^х1 10 При различных ошибках (типа инверсии разряда) можно по- лучить различные комбинации, причем они входят в исходное множество комбинаций. Поэтому по виду комбинации нельзя обнаружить ошибку. Необходимо, чтобы при возникновении ошибки полученные коды не входили в число используемых. Чтобы обнаружить ошибку, необходимо, чтобы выполнялось следующее неравенство: +1, где t — кратность ошибок, a dmin - минимальное кодовое расстояние. х2 х-i Ошибки О 1 10 01 01 10 Здесь уже можно обнаружить ошибку, но нельзя ее исправить. Исправить ошибку — значит по виду принятой комбинации уста- новить, какая истинная комбинация передавалась. Для исправления необходимо: dmjn> 2t + 1 (рис. 83). От каждой из четырех комбинаций, указанных на рис. 83, ошибочная комбинация с t-кратной ошибкой отличается в t раз- рядах. Поэтому необходимо, чтобы сами ошибочные комбина- ции отличались друг от друга хотя бы в одном разряде, иначе вос- становить передаваемую информацию невозможно. Например, рис. 84 иллюстрирует возможные ошибки при передаче трехраз- рядной информации. 200
Рис. 83. Принцип исправления ошибок Рис. 84. Возможные ошибки при передаче трехразрядной информации и некоторые кодовые расстояния Примеры кодов. 1. Код с проверкой четности. х2 х2 к О 0 1 О 1 о 1 о о 1 1 1, где к — контрольный разряд, чтобы сумма единиц была четной либо нечет- ной. Это контроль по четности (нечетности). В настоящее время широко применяется в стандартных микропроцессорах (ранее — только в особо ответственных вычислительных системах, например военных). В приемнике формируется контрольный разряд с помощью элемента сложения по модулю 2 (рис. 85). 201
Рис. 85. Передатчик и приемник информации с контролем по нечетности на основе элементов сложения по модулю 2 с инверсией 2. Коды с простым повторением - это коды, в которых повто- ряется кодовая комбинация. 3. Корреляционные коды. В таких кодах используются дополнительные символы для представления информации: О 01 1 10 4. Равновесные коды. Характеризуются тем, что каждая комбинация содержит оди- наковое количество нулей и единиц. Например, 2 из 5: 01100 -> 0 00110—>5 11000-И 10001 ^6 10100—>2 01001 -> 7 10010->3 00101 ->8 01010—> 4 00011 ^9 Существуют также систематические коды, где контрольные разряды отделены от информационных. К ним относятся коды Хэмминга. 10.4. Кодирование по Хэммингу В ряде случаев для контроля функционирования схем реали- зации ПФ используют прямое сравнение, т.е. сравнивают реак- ции на схемах. Кроме того, применяются прямое дублирование со сравнением результатов, троирование. 202
В свое время широко применялся контроль по модулю, эф- фективный при арифметических операциях. Используются клас- сы эквивалентностей чисел по модулю. |1|5 = |6|5 = |11|5 — сравнимы по модулю 5. Контроль по нечетности — это контроль по модулю 2. Коды Хэмминга — это кодирование с использованием нес- кольких групп контроля по модулю 2. Помехоустойчивое кодирование по Хэммингу обеспечивает обнаружение и исправление ошибок при передаче информации (контроль передачи информации). В кодовом слове всего m разрядов, где m = n + k, п — количе- ство информационных разрядов, к - количество контрольных разрядов. Используется контроль по нечетности, причем формируется несколько групп контроля по нечетности. Пример. Передается четырехразрядная информация: (х4х3х2Х]) = Х 1110 Количество контрольных разрядов должно быть таким, чтобы можно было закодировать как информационные разряды, так и сами контрольные. В нашем случае: п = 4, к = 3. Разместим передаваемую инфор- мацию в секторах диаграммы Эйлера для трех взаимно пересека- ющихся множеств А, В, С (рис. 86). Рис. 86. Диаграмма Эйлера для кодирования по Хэммингу четырехразрядной информации 203
Пусть произошла ошибка в разряде х2 (рис. 87). Искажение (ошибка) привело к изменению информации и ’ нарушению нечетности в двух контрольных группах А и С. Имен- но это и укажет на номер искаженного разряда. Каждый сектор («кусочек») диаграммы Эйлера определяет один из разрядов п или к. Для определения числа контрольного разряда необходимо ис- | пользовать соотношение m <2k— 1 или n + k <2к — 1. Далее строится матрица Хэмминга. 10 10 10 1 110 0 11 о 11110 0 о х4 х3 х2 к3 X] к2 к! Если дано число информационных разрядов п, то необходимо определить число контрольных разрядов. Выбираются двоичные эквиваленты номеров всех m разрядов (справа налево, младшие разряды вверху). Столбцы с одной единицей отводятся под конт- рольные разряды. Выделяются три группы контрольных разрядов к1; к2, к3. В передатчике формируются контрольные разряды по нечет- ности к, ,к2,к3 путем суммирования по модулю 2 соответствующих разрядов. 204
Записываются уравнения Хэмминга: х4 © х2 Фх1 =kj; х4 ®х3 © X] = х2; х4 Фх3 ®х2 =к3. Уравнения синдрома ошибки включают и сами контрольные разряды, которые тоже могут исказиться. х4 © х2 ©X] ©kj =Sp х4 Фх3 © Х[ © k2 =s2; х4 © х3 © х2 ®k3 =s3. Синдром ошибки - вектор S = (s1,s2,s3). Если искажение не произошло, то синдром нулевой. Если он не нулевой, то он укажет на место ошибки. Если (101), то ошиб- ка в 5-м столбце, разряде х2, поскольку этот разряд входит в две группы контроля по нечетности — первую и вторую — это облас- ти А и С диаграммы Эйлера (см. рис. 87). Иногда реальную информацию передают в другом порядке: отдельно информационные, отдельно контрольные разряды. Представим информацию в матричном виде. Матрица Хэмминга обозначается Н. Информационную подматрицу обозначим Р, а контрольную — I: Н = IIP, 1||; ||P||:n-k; ||Ik||:k-k. Если X - входной вектор, U — полное кодовое слово, тогда кодирование заключается в следующих матричных операциях: 205
U = X || (|| Н || -X) где || — конкатенация (сцепление) информации в определенном порядке следования разрядов. На вектор U воздействуют ошибки. Используем вектор оши- бок Е: U’ = U® Е, где Е — вектор ошибки, указывающий, какие разряды исказились. Тогда по- лучение синдрома ошибки выглядит так: S=U||H||. В матричных операциях используется сумма по модулю 2 (©). Заметим, что описанный код Хэмминга позволяет обнаруживать и исправлять только одиночные (однократные) ошибки. Для об- наружения двукратных ошибок вводят еще один контрольный разряд - для всей посылки. 10.5. Кодирование с использованием циклических кодов и математического аппарата умножения и деления полиномов. Сигнатурный анализ Циклический код Циклический код обязан своим названием особенности: если некоторая кодовая комбинация принадлежит множеству разре- шенных комбинаций, то и комбинация, полученная цикличес- кой перестановкой разрядов, тоже принадлежит множеству раз- решенных комбинаций. Существует соответствующий математический аппарат умно- жения и деления полиномов, основным понятием которого явля- ется полином, например, третьей степени: G(x3) = х3 + х + 1. 206
Циклические коды позволяют обнаружить не только одиноч- ные, но и групповые ошибки. Такие коды используются при тес- тировании цифровой аппаратуры, чтобы обнаружить отказы в схемах, и при криптографической защите информации. Идея построения циклического кода основана на понятии неприводимого многочлена, который делится только на себя и на единицу: G(x2) = х2 + х + 1; G(x) = х + 1; G(x16) = х16 + х9 + х7 + х4 + 1. По существу используется так называемое поле Галуа - алгеб- ра с двумя операциями: умножением и сложением по модулю 2 (GF(2)). Умножение полиномов Некоторый полином х3 + 1 можно записать в развернутой форме: А = 1-х°+0-Х1+0-х2+1'X3 10 0 1 Здесь коэффициенты принимают значения из бинарного множества. Умножение производится по правилам обычной алгебры, например: (х3 + 1)х = х4 + х, т.е. получили: 0 10 0 1 Это сдвиг на один разряд вправо. С учетом использования операции сложения по модулю 2 одинаковые разряды при сложении уничтожаются. Рассмотрим пример умножения информационного полинома А = х3 + 1 на порождающий (образующий) полином G = х3 + х + 1. 207
Аналитически процесс умножения можно представить так: х3 +1 х3 +х +1 х3 +1 © х4 +х 6 4 1 X +Х +Х+1 Процесс умножения в развернутом виде показан в табл. 67. Таблица 67 Умножение А на образующий полином G хб х5 х4 х3 х2 X 1 А- 1 х3 1 Ах х4 X А - х3 хб х3 A- G хб х4 X 1 Проведем умножение в двоичном коде: х3 +х2 +х +1 А I О О I G I О I I I О О I I О О I © 0 0 0 0 I 0 0 I I 0 I 0 0 I I х6пр х5пр х4пр х3пр х2пр хпр 1Пр - порядок следования разрядов произ- ведения (пр). 208
Получим уравнения для произведения многочленов при усло- вии, что множитель G «жестко задан», а полином А - любой, степени три: Амн = х3мн х2мн хмн 1 мн ~ эт0 переменные множимого (мн)-по- линома третьей степени. G = 1 0 1 1 — множитель (образующий полином). Процесс умножения в развернутом виде показан в табл. 68. Таблица 68 Умножение А на образующий полином G 0 хз л мн 0 х2 л мн х3 л мн 0 хмн X3 л мн х2 л мн 0 ^мн х2 л мн Хмн 0 хмн ^мн ^мн х3 л мн X2' л мн х мн ® хмн х3мн®х2мн©1мн х’мн® Хмн Хмн®1мн ^мн О Vх* X 1 X пр X пр * пр * пр Х пр ПР nP Уравнения, описывающие значения разрядов произведения, в зависимости от значения разрядов множимого при условии «жестко заданного» множителя имеют вид: [ X6 Апр = х3 лмн х5 Апр = х2 лмн х4 лпр = хмн®хмн х3 Апр = Хмн ® хмн ® ^мн X2 лпр = х3мн®хмн Хпр ~ хмн ® 1мн ^пр ^мн Эти уравнения позволяют определить вид соответствующего устройства — умножителя полиномов, основанного на D-тригге- рах и элементах сложения по модулю 2. 14-ш 209
Деление полиномов По аналогии с умножением вводится операция деления поли- номов. При делении необходима операция вычитания по модулю 2, однако результат этой операции совпадает с результатом суммы по модулю 2. Например: х6 + х4 +Х + 1 |х3 +х +1 х6+х4+х3 х3+1 х3+х+1 ' 0- остаток. Здесь используется суммирование по модулю 2, поэтому х6 + х6 = О, аналогично х4 + х4 = 0, х3 + х3 = 0, х + х = 0, 1 + 1 = 0. Деление полиномов можно выполнять последовательными вычитаниями по модулю 2. Можно показать, что если А — делимое (дл), G - делитель, то разряды частного (чет) определяются так: 1чст=Х3дл® Х5дл® Х6^ хчст — х дл © X дд X чет — Х дл X3 = X6 л чет л дл Остаток: 'ост ~ ^дл ® х дл © х дл © Х дл \>ст ~~ хдл ®хдл®хдл®хдл х2ост = х2дл © х4дл © Х5дл © х6дл Нулевой остаток указывает на отсутствие ошибки. Такие уравнения позволяют построить схемы - делители на образую- щий полином. 210
Принципы контроля передачи информации Принцип 1. Перед передачей информации канал связи исходя- щего полинома умножается на образующий полином (А G = К). В канале связи на произведение К воздействует вектор оши- бок Е: К® Е= К*. В приемнике выполняется деление: К /G = А . Если остаток нулевой, то ошибки нет и принятое слово А* — это достоверная информация, а если остаток не равен нулю, то информацию ис- пользовать нельзя. По виду остатка можно определить и вид ошибки. Принцип 2. Передается сам полином и следом — остаток от деления его на образующий полином. A||R, R = А/G, где || — операция конкатенации (соединения). Потом остатки сравниваются. Если они равны, то информа- цию можно использовать далее. Имеются циклические коды, которые позволяют обнаружить одиночные ошибки и групповые ошибки. Существуют коды БЧХ, Файра для обнаружения групповых ошибок [14]. Кодеры, декодеры, использующие эти принципы, применя- ются для записи информации на магнитные и оптические диски. Узлы умножения и деления полиномов широко используются при криптографической защите данных. Дело в том, что инфор- мация, умноженная на образующий полином, может быть рас- шифрована, только если злоумышленник знает этот полином. Сигнатурный анализ Сигнатура в переводе с латинского — подпись, запись. Это не- который код, получение которого позволяет судить о работоспо- собности цифровых схем. Используется при анализе работоспособности цифровых схем. Чтобы получить сигнатуру работоспособной схемы для задан- ного вида отказа, нужно последовательность ее выходных сигна- лов, представляющую некоторый полином, разделить на образу- ющий полином. При этом получится некоторый остаток отделе- ния, который гораздо короче выходного полинома схемы. Этот 14* 211
ч остаток и есть сигнатура, которая для работоспособной схемы од- на, а для схемы с отказом — другая. Путем определения сигнатур с помощью устройств — сигнатурных анализаторов, использую- щих узлы умножения и деления полиномов, определяют место отказа. Такой принцип используется в микропроцессорах при проверке работоспособности схем управления после включения питания. Узел имеет отказ, если входная сигнатура правильная, а выходная неправильная. 10.6. Понятие о криптографической защите информации Шифрование — это кодирование данных с целью их защиты от несанкционированного доступа [26, 36]. Для этого применяют специальные шифры. Область знаний о шифрах и методах их соз- дания и раскрытия называется криптографией (тайнописью). Свойство шифра противостоять раскрытию называется крипто- стойкостью. Если раскрытие шифра стоит больше, чем сама за- шифрованная информация, то шифр считается надежным. Крип- тография известна с глубокой древности. Для шифрования могут использоваться алгоритмы поразряд- ного сложения по модулю 2 соответствующей двоичной инфор- мации с секретным ключом—секретным двоичным набором. Этот ключ знают отправитель и получатель. Дешифрация произ- водится таким же поразрядным сложением полученной зашиф- рованной двоичной информации. Такое кодирование называется кодированием с закрытым ключом. Для шифрования могут также использоваться алгоритмы и 1 узлы умножения и деления полиномов: если полином достаточно сложен, то выходной код имеет исключительно отдаленное сходство с истинным кодом. Это тоже кодирование с закрытым ключом. В настоящее время производительность компьютеров достиг- ла такой величины, что можно «взломать» закрытые ключи, т.е. подобрать соответствующие кодовые комбинации и расшифро- вать конфиденциальную информацию. Поэтому сейчас перехо- дят на алгоритмы шифрования с открытым ключом, строящиеся на основе простых чисел, т.е. чисел, которые делятся без остатка только на себя и на единицу. 212
Открытый ключ (public key) известен всем, он не зашифро- ван. Сообщение шифруется с помощью открытого ключа. Для де- шифрации же нужен еще и закрытый ключ (private key), который знают только отправитель и получатель. Это как два ключа для двери: один для закрытия — он есть у всех, другой для открытия, который есть только у «хозяина». Чтобы вычислить закрытый ключ, необходимо произвести разложение на множители очень большого числа (более 100 десятичных цифр). Сейчас это требует годы работы суперкомпьютеров, хотя подбор простого числа в 100 десятичных цифр (для получения открытого ключа) занимает всего лишь минуты. Схема кодирования с открытым ключом обратима — сообще- ние шифруется закрытым ключом, а расшифровывается откры- тым, т. е. можно подтвердить личность отправителя, ведь послать сообщение может только обладатель секретного, закрытого клю- ча. Зато прочитать его может кто угодно, ведь открытый ключ из- вестен всем. На этом основано построение так называемой электронной подписи, удостоверяющей личность отправителя. 10.7. Понятие о сжатии информации В теории кодирования рассматривают сжатие без потери ин- формации и сжатие с потерей информации, когда эта потеря не- существенна, т.е. когда потерянной информацией можно пре- небречь [26, 36]. В настоящее время для кодирования буквенно- цифровой информации применяют американский стандартный код ASCII, когда используется байт, например, для кодирования каждой буквы или символа. В обычном тексте частота появления букв различная. Поэтому для сжатия текста можно закодировать часто встречающиеся символы более короткой последователь- ностью битов (менее 8), а редко встречающиеся символы могут кодироваться и более чем восемью битами. Кроме того, в обыч- ном тексте, как правило, встречается менее чем 28 = 256 симво- лов. Если кодировать не буквы, а слова, то двумя байтами можно закодировать 216 = 65536 слов. Этого более чем достаточно, ведь, как правило, в слове больше двух букв. Сейчас переходят на двух- байтное кодирование. При сжатии информации учитывают также наличие несколь- ких одинаковых подряд следующих байтов, которые могут повто- ряться многократно. 213
Часть 2 МАТЕМАТИЧЕСКАЯ ЛОГИКА И ТЕОРИЯ АЛГОРИТМОВ 11. Понятие об алгоритмах. Схемы алгоритмов 11.1. Понятие об алгоритме и теории алгоритмов । Интуитивно под алгоритмом понимается процесс последова-; тельного решения задачи, протекающей в дискретном времени так, что в каждый следующий момент времени система объектов алгоритма получается по определенному закону из системы объ- ектов, имевшихся в предыдущий момент времени [19]. Интуи- тивно потому, что, строго говоря, понятие алгоритма сродни понятию множества, которое неопределимо. В соответствии с ГОСТ 19781-74 «Машины вычислительные. Программное обеспечение. Термины и определения» алгоритм - это точное предписание, определяющее вычислительный про- цесс, ведущий от варьируемых начальных данных к искомому ре- зультату. При этом предполагается наличие исполнителя алго- ритма — такого объекта, который «умеет» выполнять эти действия. Слово «алгоритм» происходит, как предполагают, от имени среднеазиатского (узбекского) математика IX в. Аль Хорезми (Абу Абдалла Мухаммед ибн Муса ал Хорезми ал Меджуси) — «Algorithm!» в латинской транскрипции, впервые сформулиро- I вавшего правила (процедуру) выполнения четырех арифметичес- ких действий в десятичной системе счисления. . Пока вычисления были несложными, особой необходимости в алгоритмах не было. Когда появилась потребность в многократ- ных пошаговых процедурах, тогда и появилась теория алгорит- мов. Но при еще большем усложнении задач оказалось, что часть из них невозможно решать алгоритмическим путем. Таковы, на- 214
пример, многие задачи, решаемые «бортовым компьютером» че- ловека — головным мозгом. Решение таких задач основывается на иных принципах. Эти принципы использует новая наука — нейроматематика и соответствующие технические средства — нейрокомпьютеры. В этом случае применяются процессы обуче- ния, проб и ошибок — т. е. то, чем мы сейчас и занимаемся. Качество алгоритма определяется его свойствами (характе- ристиками). К основным свойствам алгоритма относятся следу- ющие [2]. 1. Массовость. Предполагается, что алгоритм может быть пригоден для решения всех задач данного типа. Например, алго- ритм для решения системы линейных алгебраических уравнений должен быть применим к системе, состоящей из произвольного числа уравнений. 2. Результативность. Это свойство означает, что алгоритм должен приводить к получению результата за конечное число шагов. 3. Определенность. Предписания, входящие в алгоритм, долж- ны быть точными и понятными. Эта характеристика обеспечива- ет однозначность результата вычислительного процесса при за- данных исходных данных. 4. Дискретность. Это свойство означает, что описываемый ал- горитмом процесс и сам алгоритм могут быть разбиты на отдель- ные элементарные этапы, возможность выполнения которых на ЭВМ у пользователя не вызывает сомнений. Может создаться впечатление, что алгоритмам подвластны любые задачи. Оказывается, многие задачи не могут быть реше- ны алгоритмически. Такие задачи называются алгоритмически неразрешимыми. Для доказательства алгоритмической разрешимости или не- разрешимости задач необходимы математически строгие и точ- ные средства. В середине ЗО-х годов прошлого века были пред- приняты попытки формализовать понятие алгоритма и предло- жены различные модели алгоритмов [19]: рекурсивные функции; «машины» — Тьюринга, Поста; нормальные алгорифмы Маркова. Впоследствии было установлено, что эти и другие модели эквивалентны в том смысле, что классы решаемых ими задач сов- падают [19]. Этот факт носит название тезиса Черча. Сейчас это общепризнано. Формальное определение понятия алгоритма создало предпосылки для разработки теории алгоритма еще до разработки первых ЭВМ. Прогресс вычислительной техники 215
стимулировал дальнейшее развитие теории алгоритмов. Помимо установления алгоритмической разрешимости задач теория алго- ритмов занимается еще и оценкой сложности алгоритмов в смыс- ле числа шагов (временная сложность) и требуемой памяти (пространственная сложность), а также занимается разработкой эффективных в этом смысле алгоритмов. Для реализации некоторых алгоритмов при любых разумных с точки зрения физики предположениях о скорости выполнения элементарных шагов может потребоваться больше времени, чем, по современным воззрениям, существует Вселенная, или больше ячеек памяти, чем атомов, составляющих планету Земля [9]. Поэтому еще одна задача теории алгоритмов — решение воп- роса исключения перебора вариантов в комбинаторных алгорит- мах. Оценка сложности алгоритмов и создания эффективных ал- горитмов — одна из важнейших задач современной теории алго- ритмов. 11.2. Схемы алгоритмов Предписание о последовательности действий алгоритма мо- жет быть представлено схемой — логической схемой алгоритма, матричной схемой алгоритма, граф-схемой алгоритма. Логическая схема алгоритма (ЛСА) впервые была предложена советским математиком А.А. Ляпуновым (1911-1973 гг.), профес- !( сором кафедры математики военной артиллерийской (в те годы) ! академии им. Ф.Э. Дзержинского [36]. ЛСА — это выражение, состоящее из символов операторов, логических условий, следующих в определенном порядке, а так- же нумерованных стрелок, расставленных особым образом. Матричная схема алгоритма (MCA) — это квадратная матри- ца, элементы которой указывают условия передачи управления от i-го оператора строки к j-му оператору столбца. Строки матри- , цы нумеруются от первого оператора до предпоследнего, столб- , цы — от второго до последнего. Граф-схема алгоритма (ГСА) — это ориентированный граф особого вида. Он содержит вершины четырех типов: 1) оператор- ные, обозначаемые прямоугольниками; 2) условные, обозначае- . У мые ромбами; 3) начальную вершину и 4) конечную вершину, обозначаемые овалами. Вершины соединяются дугами. Граф-схемы алгоритмов называют просто схемами и выпол- няют по ГОСТ 19.701-90 «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения». 216
Таблица 69 Описание символов, используемых в схемах алгоритмов Наименование Обозначение Функции Данные / / Символ отображает данные, носитель данных не определен. Используется для обозначения операций ввода и вывода данных Процесс — Символ отображает функцию обработки данных любого вида (выполнение определенной операции или группы операций, приводящее к изменению значе- ния, формы или рамещения информации). Используется для обозначения операций присваивания Предопределен- ный процесс — Символ отображает предопреде- ленный процесс, состоящий из одной или нескольких операций или шагов, которые определены в другом месте (в подпрограмме, модуле). Используется для обозначения неэлементарных блоков Подготовка Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последующую функцию (установка переключателя, модификация индексного регистра или инициа- лизация программы). Может быть использован для обозначения заголовка цикла Решение Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтер- нативных выходов, один и только один из которых может быть акти- визирован после вычисления условий, определенных внутри этого символа. Соответствующие результаты вычисления могут быть записаны по соседству с линиями, отображающими эти пути. Используется для обозначения оператора условного перехода или оператора варианта 217
Продолжение Наименование Обозначение Функции Граница цикла I I I Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентифика- тор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце в зависимости от типа цикла Соединитель Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения ее в другом месте. Соответствующие символы-соединители должны содержать одно и то же уникаль- ное обозначение Терминатор ( J Символ отображает выход во внешнюю среду и вход из внешней среды. Используется для обозначения начала и окончания алгоритма Линия — Символ отображает поток данных или управления. Направления справа налево и снизу вверх обозначаются стрелками. Используется для соединения символов в алгоритме Параллельные действия — Символ отображает синхрониза- цию двух или более параллельных операций Пунктирная линия Символ отображает альтернатив- ную связь между двумя и более символами. Кроме того, символ используется для обведения . аннотированного участка при записи комментариев Комментарий Символ используется для добавления описательных комментариев или поясни- тельных записей с цепью объяснений или примечаний. Пунктирные линии в символе комментария связаны с соответствующим символом или могут обводить группу символов. Текст комментариев или примечаний должен быть помещен около ограничивающей фигуры 218
В табл. 69 приведены наименования, обозначения и опреде- ления отображаемых функций для символов, используемых при описании алгоритмов. Символы могут быть вычерчены в любой ориентации, но предпочтительной является горизонтальная ориентация. Внутрь символа помещают обозначения или описания операций. Сим- волы могут быть отмечены идентификаторами или порядковыми номерами. Идентификатор представляет собой букву или букву с цифрой и должен располагаться слева над символом. Направле- ния линий связи слева направо и сверху вниз считаются стан- дартными, и линии связи изображаются без стрелок, в противо- положном случае — со стрелками. Линии могут соединяться одна с другой, но не могут разветвляться. Алгоритм может быть реализован и схемой элементов (уст- ройств), которые выполняются по ГОСТ 2.701-84 «Схемы. Виды и типы. Общие требования к выполнению». 11.3. Рекурсивные функции Рекурсия — один из основных приемов программирования. Рекурсивные функции — функции, зависящие сами от себя. Когда мы рассматривали автоматы, то говорили о функциях пе- реходов, которые в последующий момент автоматного времени зависят от своих значений в предыдущий момент времени. Так реализуется автоматная память. В теории рекурсивных функ- ций, которая считается исторически первой формализацией по- нятия алгоритма, применяется нумерация слов в произвольном алфавите натуральными числами (N), и любой алгоритм сво- дится к вычислению некоторой функции при целочисленных значениях аргументов [22]. Функция вычислима, если существует такой алгоритм, т. е. по- шаговая процедура «от простого к сложному», который по вход- ному набору переменных вычисляет значение функции, если этот входной набор принадлежит к области определения функ- ции или выдает сообщение, что входной набор не принадлежит к области определения функции. Функция полувычислима, если при задании входного набора, не принадлежащего области определения функции, алгоритм не заканчивает работу (зацикливается). Теорию вычислимости раз- рабатывал А. Черч. Идея была похожа на изученную нами проб- 219
лему функциональной полноты переключательных функций: вы- делить элементарные вычислимые функции (которые «интуитив- но вычислимы»), т. е. базис, и предложить средства получения из этих элементарных вычислимых функций более сложных функ- ций за конечное число шагов (как принцип суперпозиции в тео- рии переключательных функций). Полученные таким образом функции тоже будут вычислимы. Такими элементарными вычислимыми функциями являются: 1) S(x) = х + 1, (N I—> N), функция следования (указывает сле- дующее натуральное число); 2) 0(х) = 0, константа нуля; 3) Im (X] х2... xn) = хт — проектирующая функция, результатом которой является выбор m-го из п аргументов. Для получения из одних полувычислимых функций других функций за конечное число шагов были предложены операторы. Первым из них является известный нам оператор суперпози- ции, т.е. подстановка в функцию функций вместо переменных. При этом увеличивается размерность функции. Вторым оператором является оператор примитивной рекурсии. Рассмотрим пример задания числового ряда Фибоначчи 1,1, 2, 3, 5, 8, 13, 21, ... с использованием оператора примитивной рекурсии: f(0)=l; < f(D=i; f(n + 2) = f(n)+f(n+1). Здесь указываются два начальных значения функции f(0), f(l) и принцип формирования последующего значения. В отличие от функций переходов автомата указывается не автоматное время, а шаг вычислений п, т.е. значение функции на некотором шаге, от- личном от нулевого и первого, равно сумме значений функции на двух предыдущих шагах. Тогда f(0) = 1, f(l) = 1, f(2) = f(0) + f(l) = 1 + 1 = 2, f(3) = f(l) + f(2) = 1 + 2 = 3, f(4) = f(2) + f(3) = 2 + 3 = 5, ... Рассмотрим другой пример использования оператора прими- тивной рекурсии: 220
f(O) = l; f(x + l) = f(x)(x+l). f(O) = l, f(l) = f(0) • 1 = 1, f(2) = f(l) • 2=2, f(3) = f(2) • 3 = 6, ... Таким образом, мы задали функцию факториала х! Функции, получаемые из элементарных функций путем конечного числа применений операторов суперпозиции и при- митивной рекурсии, называются примитивно-рекурсивными. Рассматривается и более сложная рекурсия, например кратная, по нескольким переменным одновременно [19]. Все ли функции являются примитивно-рекурсивными? Мож- но показать, что множество всех одноместных целочисленных функций типа N N, где N — множество натуральных чисел, несчетно, тем более это верно для функции типа Nn>-> N. Каждая примитивно-рекурсивная функция имеет конечное описание, т.е. задается конечным словом в некотором фиксированном для всех функций алфавите [19]. Множество всех конечных слов счетно, поэтому примитивно-рекурсивные функции образуют не более чем счетное подмножество несчетного множества функций типа Nn N. Однако оказывается, что не все вычислимые функ- ции можно описать как примитивно-рекурсивные. Третьим оператором является оператор минимизации ц, кото- рый позволяет вводить в вычисления перебор для определения нужного значения. Например: f(xjX2) = ц (у - х, = х2); при Xj =0; не определен в остальных случаях. Напомним, что х,, х2 являются натуральными числами. Такие функции называются частично рекурсивными, т. е. они не пол- ностью определенные в отличие от полностью определенных примитивно-рекурсивных функций. В соответствии с тезисом А. Черча функция полувычислима, если и только если она час- тично рекурсивна. Имеются невычислимые функции, в которых связь между входными и выходными величинами столь сложна, что невоз- можно задать строго определенный пошаговый процесс преобра- f(x,x2) = x2 221
зования исходных данных в результат [36], т.е. нельзя построить алгоритм решения соответствующей задачи. . Рекурсивные функции — основа функционального програм- мирования. Примером языка функционального программирова- ния является язык LISP, разработанный в 1960 г. Д. Маккарти. Это один из первых языков обработки данных в символьной форме (LISP, от LISt Processing — обработка списков). Одним из наиболее существенных свойств языка LISP является то, что данные, программы и даже сам язык представляют собой просто списки символов в скобках. Подобная структура позволяет писать программы или подпрограммы, способные обращаться сами к себе [37]. В LISP используется префиксная форма записи: (+ ху) = X + у; (*х (+ ху)) = х*(х + у); (+ (*хх) (*уу)) = X2 + у2. Определение функций и их вычисление в языке основано на лямбда-исчислении, введенном в 1931 г. А. Черчем: Цхр х2,..., xn) fn или (lambda(xy) (+ (*хх) (*уу))), где к - определение функции; X],..., хп — формальные параметры (лямбда-список); fn — тело функции. Рекурсии присутствуют и в языках структурного программи- рования. Рассмотрим пример решения задачи на Паскале, использую- щий рекурсию [3]. Задача. Известно рекурсивное определение факториала: [1, если п =0 или п =1, 11 = i [(п-1)!, если п >1. Здесь п — неотрицательное. Записать эту функцию на языке Паскаль. Решение. В первой строке определения явно указано, как вы- числить факториал, если аргумент равен нулю или единице. В любом другом случае для вычисления п! необходимо вычислить 222
предыдущее значение (п-1)! и умножить его на п. Уменьшающе- еся значение гарантирует, что в конце концов возникнет необхо- димость найти 1! или 0!, которые вычисляются непосредственно. program task5; var n:integer; {исходное значение} function fact(i:integer):integer; begin if (i=l) or (i=0) then fact:=l else fact:=fact(i-1)*i; end; begin write('Введите нужное значение n '); readln(n); writein('Факториал ',n,' равен ',fact(n)); end. Заметим, что на время выполнения вспомогательного алго- ритма основной алгоритм приостанавливается. При вызове но- вой копии рекурсивного алгоритма вновь выделяется место для всех переменных, объявляемых в нем, причем переменные дру- гих копий будут недоступны. При удалении копии рекурсивного алгоритма из памяти удаляются и все его переменные. Активизи- руется предыдущая копия рекурсивного алгоритма, становятся доступными ее переменные. Пусть необходимо вычислить 4!. Основной алгоритм: вводится п = 4, вызов fact(4). Основной ал- горитм приостанавливается, вызывается и работает fact(4): 4<>1 и 4<>0, поэтому fact:=fact(3)*4. Работа функции приостанавлива- ется, вызывается и работает fact(3): 301 и 300, поэтому fact:=fact(2)*3. В данный момент в памяти компьютера две копии функции fact. Вызывается и работает fact(2): 201 и 200, поэто- му fact:=fact(l)*2. В памяти компьютера уже три копии функции fact и вызывается четвертая. Вызывается и работает fact(l): 1=1, поэтому fact(l)=1. Работа этой функции завершена, продолжает работу fact(2). fact(2):=fact(l)*2=l*2=2. Работа этой функции так- же завершена, и продолжает работу функция fact(3). fact(3):=fact(2)*3=2*3=6. Завершается работа и этой функции, и продолжает работу функция fact(4). fact(4):=fact(3)*4=6*4=24. После этого управление передается в основную программу и пе- чатается ответ: «Факториал 4 равен 24». 223
11.4. Машина Тьюринга 1 Машина Тьюринга — одна из абстрактных моделей алгорит- мов, названа в честь английского математика Алана Тьюринга (1912-1954 гг.). Машина Тьюринга включает [19]: 1) управляющее устрой- ство, которое может находиться в одном из состояний, образую- щих конечное множество Y = {уь у2,..., ук}; 2) ленту, разбитую на ячейки, в каждой из которых может быть записан один из симво- лов конечного алфавитах = {х(, х2, ..., хр}; 3) устройство обраще- ния к ленте — считывающую и записывающую головку, которая в каждый момент времени «обозревает» ячейку и в зависимости от символа в ячейке и состояния управляющего устройства записы- вает в эту ячейку новый символ (он может совпадать с прежним, считываемым) или пустой символ (прежний символ стирается и на его место записывается символ пробела). Далее устройство об- ращения сдвигается на ячейку влево или вправо или остается на месте. При этом управляющее устройство переходит в новое внутреннее состояние или остается в старом (текущем) состоя- нии. Среди состояний устройства управления выделяются на- чальное у, и заключительное ук состояния (к — мнемонический знак окончания работы). В начальном состоянии машина Тьюринга находится перед началом работы, в конечном — после окончания работы. Память машины Тьюринга — конечное множество состояний (внутренняя память) и лента (внешняя память). Лента бесконеч- на в обе стороны, однако в начальный момент времени только конечное число ячеек ленты заполнено символами, остальные пусты, т.е. содержат пустой символ — символ пробела X. Данные машины Тьюринга — слова в алфавите ленты, на лен- те записываются исходные данные и затем — результат. Элементарные шаги — это считывание и запись символов, сдвиг головки, переход устройства управления из состояния в состояние. На рис. 88 изображена структурная схема машины Тьюринга. Под воздействием входного символа х, например 1, считываемо- го головкой, устройство управления формирует выходной сим- вол Z, управляет движением головки: влево (L), вправо (R), на месте (Е). 224
I I I X I 1 I I I I | Лента I \ Символ пробела Ячейки ленты Z входной символ / \ Считывающая, ' V записывающая головка «------------------- «------------------- U--------- Z выходной Устройство управления символ L влево R вправо Е на месте Рис. 88. Структурная схема машины Тьюринга Полное состояние машины, или конфигурация (или машин- ное слово), по которому однозначно определяется ее дальнейшее поведение, описывается внутренним состоянием yj; символами слева и справа от головки, например: ...xlyjx2... Система команд У2 машины содержит записи видаУ|Х,-^—, где х, - читаемый zR символ в состоянии у,; у2 — новое внутреннее состояние; z — за- писываемый символ; R - признак продвижения головки, - символ перехода в новое состояние. Совокупность всех команд называется программой. Каждая машина Тьюринга определяется своим алфавитом, состояниями внутренней памяти и программой. Чтобы полностью определить работу машины, надо указать ее конфигурацию для начального момента времени. Будем считать, что в начальной конфигурации головка воспринимает самую ле- вую непустую ячейку. Машина Тьюринга задается тройкой данных — М = < X, Y, П >, где X — алфавит символов ленты с выделенным пустым символом А (пробелом); Y- алфавит внутренних состояний с выделенными символами начального у, и конечного ук состояний; П - прог- рамма, т.е. конечная последовательность упорядоченных пятерок символов — команд. 15-2’8 225
Если машина, начав работу с некоторым словом, записанным на ленте, приходит в заключительное состояние, то она называ- ется применимой к этому слову. Результатом ее работы считается слово, записанное на ленте в заключительном состоянии. Если же машина ни в какой момент времени не приходит в заключи- тельное состояние, то она называется неприменимой к данному слову и результат ее работы не определен. Пример 1. Рассмотрим машину Тьюринга, алфавит ленты ко- торой содержит, кроме символов пробела А, символ 1. Будем представлять некоторое число «а» в виде а символов 1, например, XI11 А — число 3, XI1111 А - число 5. Машина, увеличивающая записанное число на единицу и возвращающаяся в исходное по- ложение, реализуется следующей программой: A- 1R’ У2.. 1L’ У2_. 1L’ у2А.->— • AR Работа машины может быть описана графом переходов (рис. 89), в котором дуги помечены условиями переходов (числи- тель), записываемыми символами и указанием направления дви- жения головки (знаменатель). Рис. 89. Граф переходов машины Тьюринга, реализующий алгоритм увеличения числа на единицу 226
Последовательность работы машины, например, для слова XI1 X, представлена на рис. 90. Вначале (исходное положение) го- ловка находится у начала числа и по окончании работы должна установиться там же — у начала числа, увеличенного на 1. |x|x|l|l|X|X| Лента Y! I 1 I 1 I 1 Ц| Yi 1R П 1'1 1 ш 1 (У2Х-> XR) х 1 I 1 I 1 I п Рис. 90. Последовательность работы машины Тьюринга, реализующей алгоритм увеличения числа на единицу 15* 227
Такая машина применима к любому слову в алфавите {А.,1}. Работа машины Тьюринга может быть описана таблицей (табл. 70). Таблица 70 Работа машины Тьюринга Внутреннее состояние Символ X 1 У| У2 1L У1 1R У2 Ук /.R У2 1L Ук Ук Ук y(t+i) XjSt Строку с ук можно опустить. В табл. 70 \ — выходной символ, St е {L, R, Е}. Пример 2. [19]: Рассмотрим пример реализации алгоритма сложения чисел а и Ь, записанных на ленте в виде единиц а и b с разделителем *. Обозначим такую запись 1а, 1ь. Следовательно, необходимо переработать слово 1а*1ь в слово 1а+ь, т.е. удалить разделительный символ * и сдвинуть одно из слагаемых, скажем, первое ко второму (как на счетах). Такой алгоритм осуществляет машина Тьюринга, граф пере- ходов устройства управления которой изображен на рис. 91. Здесь в числителе - считываемый символ, в знаменателе — записывае- мый символ и знак управления движением головки. Рис. 91. Граф переходов машины Тьюринга, реализующей алгоритм сложения двух чисел, заданных единицами 228
Пусть, например, заданы числа I2 и I1. Тогда последователь- ность работы машины может быть описана рис. 92. В исходном положении головка установлена напротив начала первого числа (напротив первой его единицы). Головка на месте первой едини- Ц I 1 I 1 I * I 1 I Л ---► XR > I Л И 1 I Л 1 I 1 I I X. | X. | 1 | 1 | 1 | х.~г I Л И 1 I 1 I 1 I Л Рис. 92. Последовательность работы машины Тьюринга, реализующей сложение чисел 12(11) и 1 ‘(1) 22S
цы записывает пробел А и движется до.разделителя *, найдя кото- рый, записывает вместо него 1 и начинает движение влево, оста- навливается напротив первого пробела, а затем сдвигается впра- во к первой единице. * На графе (см. рис. 91) переход — необходим для случая от- A.R сутствия первого числа, т.е. когда исходное слово имеет вид *1ь. Тогда система команд имеет вид: Ук 1 A.R У2 . A.R’ у21->—; 1R Уз_. 1L’ Уз, 1L’ Ук A.R Аналогично могут быть построены некоторые другие простые машины Тьюринга, в том числе машина для разветвления алго- ритма, организации цикла и т.д. Из простых машин Тьюринга можно построить более сложные путем композиции. А. Тьюринг выдвинул следующую гипотезу. Тезис ТЬюринга. Всякий интуитивный алгоритм может быть реализован с помощью некоторой машины Тьюринга. Как пока- зывает опыт, любые действия, которые может выполнить вычис- литель-человек, могут быть представлены последовательностью действий некоторой машины Тьюринга. Частичная числовая n-местная функция f (х,,..., хп) называет- ся вычислимой по Тьюрингу, если существует машина, вычисля- ющая ее в следующем смысле. 1. Если набор значений аргументов принадлежит области определения функции f, то машина, начав работу в некоторой конфигурации, задающей значение аргументов, останавливается, 230
заканчивая работу в конфигурации, соответствующей значению функции. 2. Если набор значений аргументов не принадлежит области определения функций f, то машина, начав работу в некоторой конфигурации, работает бесконечно, не приходя в заключитель- ное состояние. Машина Тьюринга - идеализированная модель ЭВМ. Она намного проще даже самых первых примитивных ЭВМ. Но для теоретических исследований она слишком громоздка. Поэтому получили распространение усовершенствования машины Тью- ринга, одним из которых является многоленточная машина Тью- ринга (рис. 93). Она имеет несколько входных лент и одну выход- ную, на которую записывается результат. Содержимое ячеек вы- ходной ленты нельзя читать и корректировать. В такой машине полагается, что головки неподвижны, а ленты движутся, возмож- но, в разных направлениях [36]. Рис. 93. Многоленточная машина Тьюринга Такт работы — это одновременное считывание символов со всех лент, кроме выходной; смена состояния в зависимости от считанного набора символов; запись новых символов, сдвиг лент. 11.5. Машина Поста Эмиль Пост — молодой американский математик — в 1936 г. предложил эту модель почти одновременно с А. Тьюрингом. В его машине тоже имеются бесконечная лента и головка. Лента разделена на ячейки. В каждой ячейке записан один сим- 231
вол из фиксированного алфавита. В любой момент времени ма- шина обрабатывает ровно одну ячейку. Машина Поста работает под управлением программы. Прог- рамма состоит из команд. Команды отличаются от команд маши- ны Тьюринга. Если у Тьюринга все команды одного типа и похо- жи на функции переходов-выходов автомата, то у Поста команды больше напоминают машинные команды современных ЭВМ. Команды машины Поста состоят из трех частей (полей) [7]: 1. Номер команды. 2. Операция. 3. Отсылка (номер следующей команды). Команды нумеруются с 1. Первой выполняется команда 1. Операции: 1. — движение на одну клетку вправо (R). 2. < движение на одну клетку влево (L). 3. S — запись в обозреваемую ячейку, при этом предыдущее значение ячейки теряется (S — произвольный символ алфавита). 4. Ветвление S1,M1; S2,M2; Sn,Mn. Si — символ в ячейке, М — номер следующей команды. 5. Стоп: HLT (END). При ветвлении символы Si должны быть различны, но не обя- зательно использовать весь алфавит. Если Si есть в ячейке, то вы- полняется команда Mi, при этом головка не перемещается и в клетку ничего не записывается. Если ни один символ не совпада- ет, то происходит безрезультатная остановка. Пример 1. Алфавит А: {!, Л.}, где Л. — пустой символ, каки в ма- шинах Тьюринга. 1. R,2; 2. 1,1. Это программа заполнения ленты символами 1, т.е. пустой ленты, в которой во всех ячейках — к. 232
Пример 2. Прибавление символа 1 к числу 1А = {Л., 1}. 1. R,2; 2. Г’1’ [Л.,3; 3. 1,4; 4. HLT. Это программа инкремента, т.е. число, записанное «зарубка- ми», «черточками», увеличивается на одну «черточку» при движе- нии вправо. Если же после прибавления двигаться влево к началу числа, как это обычно требуется, то: 4. L,5; 5-11'4; [Х.,6; 6. x,7; 7. R,8; 8. HLT. Если работа алгоритма никогда не закончится над некоторы- ми исходными данными, то алгоритм неприменим к ним (хотя в примере 1 это и не так). Алгоритм А над исходными данными X обозначим А(Х) — это результат работы алгоритма. Результат не определен, если А не- применим к X. Э. Пост выдвинул предположение, что для всякого алгорит- ма, в котором исходными данными и результатами являются сло- ва, существует эквивалентная ему машина Поста, Постовые алгоритмы — это алгоритмы, работающие со слова- ми. В принципе все математические объекты можно закодиро- вать в виде слов. 11.6. Нормальные алгорифмы А.А. Маркова А.А. Марков (1903 — 1979 гг.) — советский математик, зани- мавшийся математической логикой и конструктивной математи- кой, разработал так называемые нормальные алгорифмы (это на- звание используется только применительно к модели Маркова), основанные на полусистемах Туэ (ассоциативное исчисление, разработанное шведским математиком Акселем Туэ). Задаются конечный алфавит А и конечное множество подстановок Р. Рабо- 233
та алгоритма состоит из выполнения двух операторов: распозна- вателя и подстановки [36]. Оператор-распознаватель находит вхождение левой части подстановки в слово I, а оператор-подстановка заменяет это вхождение правой частью подстановки. Совокупность всех слов в данном алфавите вместе с системой подстановок — ассоциативное исчисление. Нормальный алгорифм останавливает процесс в случаях: 1. Подходящая подстановка не найдена. J 2. Применена последняя подстановка. < Пример. А = {0, 1}. I Система подстановок Р: | ' 1 -00—>1; 111 ->0 V, где V обозначает последнюю подстановку. Пусть 1=0100011. J Тогда с учетом первого вхождения левой части второй подста- новки (00 -> 1) в слово I получаем: 011011. Далее, применяя под- становку (110 -» 1), получим 0111. Наконец, применив подстанов- ; ку (111 -> 0 V), получаем результат 00. Конец работы алгоритма. Это универсальная форма задания любого алгоритма. Такая модель послужила основой обработки символьной информации. Это одна из немногих моделей, разработанных в нашей стране и получивших признание в мире. По существу это последовательные преобразования входных слов, составленных из символов конечного алфавита. Различные формализации понятия «алгоритмы», предложен- ные разными авторами, оказались в точности эквивалентными. 11.7. Универсальная абстрактная машина Алгоритмы строятся из команд, а из алгоритмов можно стро- ить более сложные алгоритмы [7]. 1. Композиция С алгоритмов А, В: С = А” В С = В (А (X)), X — исходные данные. 234
Таким образом, приписывается программа к программе (программа за программой). 2. Ветвление: А, В, С, D. Запускается алгоритм А. Если результат применения А (X) соответствует заданному ус- ловию, то D (X) = В (X). Если иначе, то D (X) = С (X). 3. Итерация (повторение). Повторение алгоритма А, пока алгоритм В не укажет, что по- ра заканчивать. Более удобна, чем примитивные вышерассмотренные, так на- зываемая универсальная машина U, которая выполняет, как и современная ЭВМ, любую программу. Такая машина читает произвольную запись программы Р и применяет ее к заданному слову. Таким образом, исходные дан- ные — это запись программы Р и исходные данные X. (Р) — запись программы; X — исходные данные (на ленте); (Р)*Х, где * - разделитель, символ, не используемый в Р. Тогда результат записывается как U ((Р) * X) = Р (X). Один из способов построения универсальной машины — ис- пользование геделевской нумерации алгоритмов [19]. Программу машины Тьюринга можно закодировать следую- щим образом. Представим в общем виде команду: где к — число программ (машин), Sj = L — налево, S2 = R — направо, S3 = Е - на месте. Пусть рь р2, р3 ... — последовательность всех простых чисел, расположенных в порядке возрастания (т.е. последовательность 2, 3, 5, 7, 11, ...). Номером машины Тьюринга М с программой п называется число: „/цп_ „Ч „Л „Г1 „'1 „Ч „'2 _ J2 „г2 Ь >2 П(М) — P] р2 P3 P4 P5 Pg Р7 Pg P9 P|Q"’ • 235
Закодируем, например, машину Тьюринга М1 с программой: У11->А 1 1R Здесь алфавит Хо — {1, Л.}, Yo= {yb ук}, кроме того, t = {1, 2, 3} соответствует L, R, Е. Таким образом: номер символа / n( М,) = З'з’б1?1!!2 j347^19^292 1-я команда 2-я команда Естественно, не все натуральные числа являются номерами машин Тьюринга. Если п — номер некоторой машины, то ее прог- рамму можно однозначно установить по этому номеру. 11.8. Разрешимость в теории алгоритмов. Проблема самоприменимости Объектом изучения в теории алгоритмов является, прежде всего, алгоритмическая разрешимость некоторой массовой задачи [19]. Разрешимая задача та, для которой имеется абстрактная мо- дель, за конечное число шагов проверяющая для любых входных данных, имеется ли решение данной задачи. Напомним, что машина называется применимой к начально- му слову, если она, начав работать с этим словом, придет в заклю- чительное состояние. Пример неприменимой машины — машина Тьюринга, у кото- рой в первой части команд не встречается заключительное состо- яние ук. Машина Мр применимая к слову п(М1), т.е. к коду своего собственного номера, называется самоприменимой. Предполага- ется, что машина Тьюринга универсальна, она читает код своего номера (программы) с ленты, расшифровывает его и в соответ- ствии с ним выполняет необходимые действия в зависимости от 236
начальной конфигурации (данных), также записанные на ленте. Машина, неприменимая к слову п(М), называется несамопри- менимой. Проблема самоприменимости (впервые эта проблема рас- смотрена отечественным математиком О.Б. Лупановым [24]) зак- лючается в том чтобы по заданной программе Р для абстрактной машины узнать, применима ли она к своей собственной записи Р ((Р)), где (Р) — запись программы или подпрограммы n (Р) [7]. Например, программа машины, заменяющей символы 1 на О, а 0 на 1, применима к любому слову, в частности и к своей запи- си, если мы закодируем записи программ в двоичном коде, что вполне возможно, поэтому она самоприменима, а программа В В: 1) ?{Х, 2}; 2) HLT, применима только к пустому слову, т.е. несамоприменима. В машине В, если головка в начальный момент обозревает ячей- ку, в которой записан не пробел X, произойдет безрезультатная остановка. Задача заключается в отыскании такого алгоритма, который определял бы для любой программы ее самоприменимость. Теорема: Проблема самоприменимости алгоритмически не- разрешима. Доказательство проводится от противного [7]. Допустим, что такая программа S существует, т.е. она применима к записи лю- бой программы и перерабатывает записи несамоприменимых программ, например, в 0, а самоприменимых в 1. Если Р несамоприменима, то S((P)) = 0. Если Р самоприменима, то S((P)) — 1. Но тогда возможна и программа R: Если Р несамоприменима, то R((P)) = 0. Если Р самоприменима, то R((P)) = не определено, т. е. R применима к записям несамоприменимых программ и не- применима к записям самоприменимых. Такую программу R можно построить путем композиции S°B программ S и В, где В: 2) НЕТ. Здесь В применима к нулевым словам и неприменима к еди- ничным (не останавливается в этом случае). 237
Но сама R либо самоприменима, либо несамоприменима. Тогда: Если R несамоприменима, то R ((R)) = 0. Если R самоприменима, то R ((R)) — не определено. Получается, что если R несамоприменима, то R ((R)) = 0, т. е., определено, что означает, что R самоприменима. Если R само- применима, то R ((R)) = не определено, т.е. R несамоприменима. Итак, мы пришли к противоречию, основанному на допуще- нии о том, что существует машина S, решающая проблему само- применимости. Следовательно, такой машины не существует. Заметим, что неразрешима именно массовая проблема: не су- ществует единого алгоритма, который решал бы проблему само- применимости. Это не говорит о том, что нет решения проблемы для конкретных машин. Так, для рассмотренных выше примеров машин Тьюринга такой алгоритм существует. Используя результат, доказанный теоремой, можно доказать неразрешимость других алгоритмических проблем. Укажем, нап- ример, проблему применимости к начальному слову. Она состоит в следующем: указать алгоритм, который по машине М и слову X устанавливал бы, применима машина М к слову X или нет. Проблема применимости к начальному слову также алгорит- мически неразрешима, т.е. не существует машины Тьюринга, ре- шающей эту проблему в указанном выше смысле. Доказательство сводится к проблеме самоприменимости, ко- торая неразрешима, как доказано выше. Неразрешимости становятся бытом математики, и с их суще- ствованием приходится считаться [19]. С теоретической точки зрения неразрешимость — не неудача, а научный факт. Знание ос- новных неразрешимостей теории алгоритмов должно быть для специалиста по дискретной математике таким же элементом на- учной культуры, как для физика — знание о невозможности веч- ного двигателя. Если же важно иметь дело с разрешимой задачей (а для прикладных наук это стремление естественно), то следует четко представлять себе два обстоятельства. Во-первых (об этом уже говорилось при обсуждении проблемы остановки), отсут- ствие общего алгоритма, решающего данную проблему, не означа- ет, что в каждом частном случае этой проблемы нельзя добиться успеха. Поэтому, если проблема неразрешима, надо искать ее раз- решимые частные случаи. Во-вторых, появление неразрешимости — это, как правило, результат чрезмерной общности задачи (или 238 J
языка, на котором описаны объекты задачи). Задача в более об- щей постановке имеет больше шансов оказаться неразрешимой. Кроме понятий разрешимости и неразрешимости вводится понятие сложности алгоритмов. 11.9. Сложность алгоритма Сложность алгоритма отражает затраты, требуемые для его работы. Будем рассматривать временную сложность. Это функ- ция, которая каждой входной длине п ставит в соответствие ми- нимальное время, затрачиваемое алгоритмом на решение всех однотипных индивидуальных задач этой длины [24]. Из курса математического анализа известно, что функция f(n) есть О (g(n)), если существует константа с такая, что |f (n)| < с (g(n)) для всех п > О [19]. О(п) - сложность порядка n, п - параметр исходных данных алгоритма. О(п2) — сложность порядка п2. Сложность бывает минимальной, средней и максимальной. Сложностью задачи называется сложность наилучшего алго- ритма. Полиномиальным алгоритмом (или алгоритмом полиномиаль- ной временной сложности) называется алгоритм, у которого временная сложность равна О (Р(п)), где Р(п) — некоторая поли- номиальная функция от входной длины п. Алгоритмы, для вре- менной сложности которых не существует такой оценки, называ- ются экспоненциальными. Задача считается труднорешаемой, если для нее не существу- ет разрешающего полиномиального алгоритма. Итак, основные классы сложности таковы: • Полиномиальная сложность. Р (п) — полином от п. О (Р (п)) - сложность задач класса Р. Полиномиальные задачи: степень полинома не зависит от п. Например: О (Р (п)) — линейная, О (Р (п2)) — квадратичная, О (Р (п3)) — кубическая. Такие задачи легко решаются на ЭВМ. • Экспоненциальная сложность. О (хп) — класс Е — экспоненциальный. Например: О(2П) - построение булеана, О(22") - нахождение всех переключательных функций от п переменных. При больших п задача становится практически нерешаемой. • NP - сложные задачи [36]. 239
Вспомним задачу коммивояжера из теории графов. Перебор всех маршрутов в графе из п вершин требует рассмотрения п! вариантов. Однако п! растет даже быстрее, чем 2П. В недетерминированном алгоритме (существует и недетерми- нированная машина Тьюринга) варианты выбираются случай- ным образом. Тогда, если повезет, можно относительно быстро найти вариант, удовлетворяющий заданным ограничениям [36]. Такие задачи, имеющие недетерминированное решение, которое иногда удается найти за полиномиальное время, называются NP-сложными (Nondeterministic Polynomial). Преобладает мнение, что детерминированных алгоритмов решения таких задач не существует. Для сокращения перебора вариантов при решении таких комбинаторных задач (задач ком- бинаторной сложности) предлагаются различные способы «борь- бы с перебором, борьбы с проклятием размерности» [9 — 10]. В эвристических алгоритмах используют для этого некоторую дополнительную информацию — эвристики, позволяющие нахо- дить решения лишь на 10 — 15 % хуже оптимальных. Тем не менее NP-сложные задачи не имеют гарантированных оценок времени решения. Даже незначительное изменение исходных данных приводит к его резкому увеличению. Поэтому иногда говорят, что проблема NP полна, что означа- ет ничтожно малую вероятность существования эффективного (полиномиального) алгоритма. В настоящее время активно развивается направление генети- ческих алгоритмов. Это направление использует в борьбе с пере- бором вариантов опыт развития природы и человека. При этом применяется и соответствующая терминология: «популяция» — некоторое множество вариантов; «скрещивание» вариантов пу- тем определенного комбинирования «хромосом особей» из ис- ходной популяции и получение «потомков»; «эволюция» с целью получения лучших решений. "J 11.10. Представление схемы алгоритма j эквивалентным автоматом Для анализа алгоритмов и доказательства их корректности необходимо преобразовывать одни схемы алгоритмов в другие, а ; также представлять их в виде эквивалентного автомата. 240
Автомат, реализующий граф-схему алгоритма (ГСА), впервые был предложен М.В. Уилксом [33] (принцип микропрограммно- го управления). Рис. 94. Граф-схема алгоритма работы некоторого технологического агрегата 16-278 241
Рассмотрим получение по граф-схеме алгоритма других схем и получение соответствующего автомата. Пусть задана некоторая ГСА (рис. 94). Допустим, ГСА построена по словесной формулировке рабо- ты некоторого агрегата. Оптимизируем ГСА. Можно исключить блок 9 за счет под- ключения выхода блока 8 ко входу блока 7. Получим соответствующую логическую схему алгоритма: 1 2 3 4 5 AqAjXj ? А4 4-х2 Тх3 Та5 4-А3 J-Ak iA2®TiA6®T, 2 4 5 1 3 где ю — безусловный переход. Построим матричную схему алгоритма (табл. 71) с учетом того, что в вершине 4 (см. рис. 94) выполняется «пустой» опера- тор А0: Таблица 71 Матричная схема алгоритма А! а2 А3 а4 а5 А0 А А-. А 1 0 0 0 0 0 0 0 al 0 Х1 0 *1 0 0 0 0 •А 0 0 1 0 0 0 0 0 А3 0 0 0 0 0 0 0 1 а4 0 0 0 0 *2*3 *2 х2х3 0 А5 0 0 1 0 0 0 0 0 Az> 0 0 0 0 *2*3 *2 *2*3 0 А 0 0 0 0 0 0 0 1 Проверим корректность MCA: дизъюнкция логических усло- вий исходящих дуг = 1, конъюнкция условий, помечающих две любые исходящие из вершины дуги, = 0. В нашем случае MCA корректна, например, для строки А4: / / л° Л° л° у/гх3= 1, *2*2X3 = О, *2*2x3 = °, Х2^*2Х3 s 0. 242
Для получения эквивалентного автомата необходимо выде- лить состояния этого автомата по ГСА. Это выполняется путем так называемой отметки ГСА и получения отмеченной ГСА (ОГСА) [17]. . Порядок получения отмеченной ГСА для автомата Мили: • начальным символом отмечаются выход начальной верши- ны и вход конечной; • отмечаются входы вершин, непосредственно следующих за операторными; • если к отмечаемому выходу подходят дуги от нескольких ус- ловных и операторных вершин, то отметка ставится ниже дуг, подходящих от операторных вершин, и выше дуг, подходящих от условных вершин, если только дуга от условной вершины не под- ходит к конечной вершине; • при наличии «ждущих» вершин метка ставится ниже дуги от «ждущей» вершины. Таким образом, при переходе от метки к метке выполняется не более одного оператора. Для автомата Мура начальной меткой отмечаются начальная и конечная вершина, а метками обозначаются операторные вер- шины. Далее строится граф соответствующего автомата. Вершинам графа соответствуют метки ОГСА (состояния ав- томата). Дугам графа переходов соответствуют всевозможные ус- ловия перехода от одной метки к другой соответствующей метке ОГСА. Построим граф автомата (рис. 95). Далее получают систему переключательных функций, описы- вающих схему алгоритма. 16* 243
При этом строится обобщенная таблица возбуждения эле- ментов памяти и выходов автомата (ОТВЭПВ). Z ОТВЭП В состоит из двух частей, первая из которых содержит \ информацию о коде состояния элементов памяти и обобщенном i коде логических условий, помечающих дуги графа переходов. Во второй части содержится информация о состоянии входов элементов памяти, необходимых для осуществления данного перехода, и о состоянии выходов z, называемых микрооперациями автомата. В частном случае указывается последующее состоя- ние автомата (табл. 72). Таблица 72 Обобщенная таблица возбуждения элементов памяти и выходов автомата У2 (t) У| (t) *1 *2 х3 У2 (t+1) У1 (t+1) Z1 Z2 z3 Z5 4 z7 Z8 z9 Z|0 0 0 - — — 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 — 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 — 1 1 0 1 1 1 1 0 0 0 0 0 1 0 — 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 — 0 — 1 0 0 0 0 0 0 0 0 0 0 0 1 0 — 1 0 0 0 0 0 0 0 0 0 0 0 1 I 1 1 — — 0 0 0 0 0 0 0 1 0 0 0 0 Далее получают обобщенные коды переключательных функ- ций, описывающих автомат. Из ОТВЭПВ выписывают информацию из первой ее части - коды дуг, соответствующие единичным наборам рассматривае- мой функции, а также коды дуг, соответствующие нулевым набо- рам функции. Получают соответственно рабочие и запрещенные обобщенные коды. После получения переключательных функций в виде рабочих и запрещенных обобщенных кодов абстрактный синтез заверша- ется. Далее проводится минимизация полученных переключатель- ных функций методом поразрядного сравнения рабочих и запре- щенных обобщенных кодов и строится схема автомата. Схема может быть построена на основе постоянного запоми- нающего устройства (ПЗУ). 244
В этом случае нет необходимости в минимизации переключа- тельных функций, так как они представляются в СДНФ. Поэто- му после получения ОГСА сразу строится таблица программиро- вания ПЗУ: сначала обобщенная (с «тильдами»), затем полная. Построим таблицу программирования ПЗУ (табл. 73) для ГСА, изображенной на рис. 96. Рис. 96. Некоторая граф-схема алгоритма 245
В таблице программирования (табл. 73) левая часть, соответ- ствующая коду дуги, - это обобщенный адрес ячейки памяти, > правая часть - данные, записанные по этому адресу. Таблица 73 Таблица программирования ПЗУ Адрес Данные Уг У1 *3 *2 *1 Z1 z2 z3 z4 Z5 D2 Yo 0 0 — — 1 0 0 0 1 0 0 0 y0-^y0 0 0 — 0 0 0 0 0 1 0 0 0 Yo-^YO 0 0 — 1 0 1 0 0 0 0 0 1 Yo-^Y, Y! 0 1 — — — 0 1 1 0 0 1 1 Yi-+Y2 y2 1 1 0 — 0 0 0 0 0 1 1 y2->y2 1 1 1 — — 0 0 0 0 1 0 0 y2-^y0 Для получения полной таблицы программирования, в кото- рой будет 25 = 32 строки, необходимо составить развернутую таблицу (табл. 74) и затем доопределить адреса ПЗУ. Для ком- пактности целесообразно записывать адреса и данные в восьме- ричной системе счисления. Таблица 74 Развернутая таблица программирования ПЗУ в восьмеричной системе счисления Адрес: Данные из табл. 7.3 01,03, 05,07 010 (1-я строка) 00, 04 010 (2-я строка) 02,06 101 (3-я строка) 10, 11, 12, 13, 14, 15, 16, 17 063 (4-я строка) 30, 31, 32, 33 003 (5-я строка) 34, 35, 36, 37 004 (6-я строка) 246
Функциональная электрическая схема автомата на ПЗУ, реализующего заданную (рис. 96) ГСА, изображена на рис. 97. Логические условия *1 х2 хз Выходные сигналы - микрооперации Хранитель состояния автомата Рис. 97. Автомат на основе ПЗУ На рис. 97 код состояния автомата фиксируется регистром RG, который тактируется генератором тактовых импульсов (изменение состояния автомата происходит по тактовым импульсам). Недостатком автомата на базе ПЗУ является большой объем памяти, необходимой при большом количестве логических усло- вий. Сократить объем памяти ПЗУ можно путем использования мультиплексоров, или коммутаторов каналов, позволяющих в каждом состоянии проверять только одно или несколько (не все сразу) логических условий. В этом случае будут особенности от- метки ГСА (при получении ОГСА). Если за условной вершиной следует условие, с целью проверки только одного условия метка ставится после данной условной вершины. В остальном разметка ГСА не отличается от разметки для автомата без мультиплексора. Эти особенности обуславливаются требованиями проверки в каждом такте (на каждом переходе) не более одного логического условия. Рассмотрим получение автомата на ПЗУ и мультиплексоре для той же ГСА (см. рис. 96), но с другой разметкой (рис. 98). 247
Рис. 98. ОГСА для автомата на ПЗУ и мультиплексоре Видно, что переход от метки к метке осуществляется с про- веркой не более одного логического условия. Далее обычным об- разом строится граф автомата (рис. 99). Теперь кодируем вершины графа. Число элементов памяти не изменилось (у2 уД. Построим таблицу программирования ПЗУ. В отличие от табл. 73 сразу строится полная таблица программиро- вания. Мультиплексор адресуется элементами памяти, поэтому 248
на его выходе присутствуют некоторые переменные или заранее оговоренная константа. Сигнал на выходе мультиплексора назо- вем псевдопеременной (х), причем договоримся сопоставлять с безусловным переходом константу нуля (на соответствующий вход мультиплексора подаем константу нуля). Рис. 99. Граф переходов автомата на ПЗУ и мультиплексоре Количество строк таблицы программирования ПЗУ равно ко- личеству дуг графа переходов, количество адресных разрядов для одновыходного мультиплексора равно s + 1, где s — число элемен- тов памяти. Количество разрядов микроопераций не изменяется, получаем табл. 75. Таблица 75 Полная таблица программирования ПЗУ для автомата с мультиплексором Адрес Данные У2 У1 X Z1 22 z3 z4 *5 y2<t+1) у, (t+1) *1 0 0 0 0 0 0 0 0 0 1 Yo^Y, 0 0 1 0 0 0 1 0 0 0 Y0->Y0 *2 0 1 0 0 0 0 1 0 0 0 Y^Yo 0 1 1 1 0 0 0 0 1 1 y,->y2 1 1 0 0 1 1 0 0 1 0 y2->y3 х3 1 0 1 0 0 0 0 1 0 0 Y3->Y0 1 0 0 0 0 0 0 0 1 0 Y3-»Y3 Получим таблицу в шестнадцатеричном коде (табл. 76). Таблица 76 Полная таблица программирования ПЗУ для автомата с мультиплексором в шестнадцатеричном коде Адрес Данные 0)6 01)6 116 0816 2lf, 08)6 3)6 43)6 249
Продолжение Адрес Данные 61б 3216 516 0ф6 41б 0216 Получим таблицу подключения информационных входов мультиплексора. Ее можно составить по графу автомата. В состо- янии уо(ОО) проверяется логическое условие X], в состоянии У] (01) проверяется логическое условие х2, в состоянии y2(l 1) не прове- ряются логические условия — к соответствующему входу муль- типлексора подключим генератор «0», в состоянии у3( 10) прове- ряется логическое условие х3. Таблица распределения входов мультиплексора имеет вид табл. 77. Таблица 77 Таблица распределения входов мультиплексора Номер инфор- мационного входа Переменная (константа) О|о Xi Но х2 21о «0» Зю Хз Получим функциональную электрическую схему автомата на ПЗУ и мультиплексоре (рис. 100), реализующего заданную ГСА (см. рис. 98). Мультиплексор — коммутатор каналов, реализующий следую- щую ПФ: z (УгУЛХзХЛ) = Xi у2у( v х2у2у, v х4у2У! v х3у2уь где х4 — псевдопеременная (-)• 250
251 Логические условия Рис. 100. Функциональная электрическая схема автомата на ПЗУ и мультиплексоре
Объем памяти у такого автомата сокращается — необходимо 7 * 7 = 49 бит (против 168 бит для автомата на основе ПЗУ, см. рис. 97). Здесь мультиплексор в зависимости от состояния авто- мата, которое адресует не только ПЗУ, но и подключаемый к мультиплексору канал, передает на вход ПЗУ одну из перемен- ных или константу в случае безусловного перехода. 11.11. Представление схемы алгоритма микропрограммой с двумя типами микрокоманд Дальнейшее углубление в область программного обеспечения заключается в сопоставлении каждому блоку ГСА некоторой < микрокоманды, которая в простейшем случае формируется из Л микрокоманд двух типов [31]: 1) операционной (рис. 101) и 2) специальной или перехода (рис. 102). Признак микро- команды ПМ = 1 Микрооперации Рис. 101. Операционная микрокоманда: ПМ = 1 Признак микрокоманды ПМ = 0 Код логического условия Адрес перехода Рис. 102. Специальная микрокоманда, или микрокоманда переходов: ПМ = 0 Если выполняется операционная микрокоманда, то после- довательно выбираются адреса постоянного запоминающего устройства (ПЗУ) и последовательно выдаются микроопера- ции в операционное устройство. Это может быть реализо- вано путем перебора состояний счетчика по счетному входу +1 (рис. 103). Такой счетчик будет называться счетчиком микрокоманд. Конечно, для задач реальной размерности он должен иметь дос- таточное число состояний в отличие от счетчика, изображенного на рис. 103. 252
15 — Do CT2 Qo r—3 1 — Di Qi —2 10— d2 q2 —6 9 — 11 — 14 — D3 PE R Q3 —7 5 — +1 >15< >—12 4-^ -1 <0 < — 13 Рис. 103. Условное графическое обозначение счетчика со счетным входом +1 В случае выполнения специальной микрокоманды (см. рис. 102), если логическое условие равно единице, производится переход по указанному адресу с использованием входа предуста- новки РЕ по указанным в поле адреса данным D;. Если логичес- кое условие равно нулю, то выбирается следующий адрес. Если номер логического условия равен нулю, то это безусловный переход, и производится передача управления по указанному адресу (на входах D;). Такая логика управления реализуется блоком управления - счетчиком микрокоманд, который адресует память микропрог- рамм. Получим микропрограмму реализации алгоритма, изобра- женного на рис. 98, для автомата с двумя типами микрокоманд (табл. 78). Таблица 78 Микропрограмма с двумя типами микрокоманд Мет- ка Адрес микро- команды Микрокоманда Комментарий ПМ 1 2 3 4 5 6 7 MO: 0 0 0 0 0 0 1 0 1 1 0 0 Переход, если х, = 1, на адрес 1100 0 0 0 1 0 1 0 0 0 1 1 1 Переход, если х2 = 1, к блоку 3 ГСА по ад- ресу 0111 (метка М2) 0 0 I 0 1 0 0 0 1 0 0 0 Выдача z4 = 1 (А4) 0 0 I 1 0 0 0 0 0 0 0 0 Возврат в 0000 безус- ловно к метке МО 253
Продолжение Мет- ка Адрес микро- команды Микрокоманда Комментарий ПМ 1 2 3 4 5 6 7 0 1 0 0 — Не используется 0 1 0 1 - Не используется 0 1 1 0 — Не используется М2: 0 1 1 1 1 1 0 0 0 0 0 0 Выдача z, = 1 (А,) 1 0 0 0 1 0 1 1 0 0 0 0 Выдача z2, z3 = 1 (А2) М3: 1 0 0 1 0 . 1 1 0 1 1 1 0 Ожидание х3 = 1. Пе- реход к метке М4, ес- ли х3 = 1 1 0 1 0 0 1 1 0 1 0 0 1 Если х3 = 0, то А0 и безусловный переход к проверке х3 (метка М3) 1 0 1 1 — Не используется Ml: 1 1 0 0 1 0 0 0 1 0 0 0 z4 = 1 (А4) 1 1 0 1 0 0 0 0 0 0 0 0 Безусловный переход на начало к метке МО М4: 1 1 1 0 1 0 0 0 0 1 0 0 z5=1(A3) 1 1 1 1 0 0 0 0 0 0 0 0 Безусловный переход на начало к метке МО Таким образом, из табл. 78 следует, что необходимо всего 12 ячеек памяти по 8 бит, т. е. всего 96 бит. В рассмотренном автомате, если микрокоманда специальная (ПМ = 0), разряды 1 — 2 используются для кодирования логичес- кого условия (значения указаны курсивом): 00 — безусловный переход, т.е. нет условия; 01 - xf; 10 — х2; 11 - х3. Если микро- команда операционная, то разряды 1-5 отводятся для микроопе- раций Z] - z5 соответственно. Особенность микропрограммы - возврат в исходное состояние после окончания работы. 254
12. Элементы формальной логики 12.1. Предмет формальной логики Греческое слово «логос» означает разум, рассуждение. Со- гласно словарю С.И. Ожегова, логика - наука о законах мышле- ния и его формах, а также ход рассуждений и умозаключений [27]. Формальная логика имеет своим объектом рациональный уровень мышления, изучает формы мысли, а не ее содержание. Главная цель формальной логики состоит в том, чтобы разра- ботать такие правила оперирования формальными структурами, которые бы обеспечивали последовательность, правильность и доказуемость мышления, истинность рассуждений [8]. Мышление - процесс получения, хранения и переработки ин- формации, целью и результатом которого является получение идеального образа изучаемого объекта. Различают чувственное и рациональное мышление. Человек получает информацию с помощью органов чувств. Можно рассматривать следующие формы отражения действи- тельности в чувственном мышлении: • ощущения - отражение в сознании отдельных сторон объек- тивной реальности; • восприятие — отдельные свойства объективной реальности, объединенные в комплексы ощущений. В процессе восприятия формируется идеальный образ объекта; • представление - форма отражения действительности, когда объект не вызывает непосредственного воздействия на сознание. Переход от единичных объектов к классам объектов осуще- ствляется путем обобщения. Основные формы рационального мышления (объекты фор- мальной логики): • понятие - отражение наиболее общих существенных приз- наков и свойств реальных объектов; • суждение - установление связи между понятиями, утверж- дение или отрицание наличия связи между предметами, призна- ками и свойствами; • умозаключение - фиксирует связи между суждениями и отношения между ними. Умозаключение обеспечивает переход от одних истинных суждений к другим новым истинным сужде- ниям. 255
Логический подход изучает лишь форму, структуру мысли, отвлекаясь от содержания. Особенно важно отношение логичес- кого следования. Открытие, изучение и систематизация правил, позволяющих из принятых истинных суждений выводить новые истинные суж- дения, являются главной задачей логики. Логика как наука сформировалась очень давно - в IV в. до н.э. Ее создал древнегреческий ученый Аристотель. В течение многих веков логика почти не развивалась. Это, конечно, свидетельству- ет о гениальности Аристотеля, однако в свое время логика приоб- рела славу мертвой, застывшей науки и высмеивалась Рабле, Свифтом и др. [25]. Основное содержание логики Аристотеля - теория дедуктив- ных рассуждений. Дедукция — умозаключение, позволяющее осу- ществить переход от общего суждения к частному. Другое назва- ние этого раздела логики - силлогистика. Сейчас эту логику называют формальной. Индукция - мышление, позволяющее осуществить переход от частного решения к общему. Основатели: Рожер Бэкон (ок. 1214 - 1292), Френсис Бэкон (1561 — 1626). Только в XVII в. великий немецкий ученый Г.В. Лейбниц (1646 — 1716) задумал усовершенствовать, математизировать логику, которая стала бы «искусством исчисления». В этой логи- ке, по мысли Лейбница, каждому понятию соответствовал бы символ, а рассуждения имели бы вид вычислений. Для этой цели Лейбниц использовал простые числа. Идея Лейбница, не встре- тив понимания современников, не получила в то время распрост- ранения и развития [25]. В середине XIX в. ирландский математик и священник Дж. Буль (1815 - 1864) частично воплотил в жизнь идею Лейбни- ца. Им была создана алгебра логики, в которой действуют зако- ны, схожие с законами традиционной алгебры, но буквами обоз- начаются не числа, а предложения. На языке такой алгебры (булевой алгебры логики) можно описывать рассуждения и вычислять их результаты; однако ею охватываются далеко не вся- кие рассуждения, а лишь определенный их тип, в некотором смысле - простейший. Это знаменовало начало становления математической логики [25]. В 20 - 30-е годы прошлого века от классической логики пере- ходят к неклассической логике. Формальная логика — ядро научно- 256
го мышления, элемент общей научной культуры [8, 16]. Большой вклад в развитие математической логики внесли ученые разных стран: Д. Гильберт (1862 - 1943), Б. Рассел (1872 - 1970), К. Гёдель (род. в 1906 г.), А.Н. Колмогоров (1903 - 1987), Я. Лука- севич (1878 - 1956), А. Тарский (1901 - 1983), А. Черч (род. в 1903 г.), А. Тьюринг (1912 - 1954), А.А. Марков (1903 - 1980) и др. 12.2. Понятие и его виды Понятие - это абстрактный образ класса сходных объектов, в котором фиксируются наиболее общие свойства и признаки. При формировании понятий используются методы обработ- ки информации: анализ, синтез, сравнение, обобщение, абстра- гирование, идеализация. В результате формируются идеальные образы - понятия. Понятие непосредственно связано со словом. Связь объект - понятие возникает не сразу. Понятие двой- ственно (слово и объект) [8]. Понятием могут быть имена суще- ствительные и другие части речи. Содержание понятия — совокупность тех свойств и признаков, которые были выделены в качестве основных в процессе образо- вания понятий. Объем понятия - это мыслимая совокупность элементов, выс- тупающих носителем свойств и признаков. Изменяя содержание понятия, мы влияем на его объем. При увеличении числа призна- ков объем понятия сокращается. Эта связь фиксируется в логике законом обратного соотношения между содержанием и объемом понятия. Понятия классифицируются по объему: • единичные - одноэлементный класс («Президент России В.В. Путин»); • общие - класс, содержащий более одного элемента. Среди общих выделяют понятия, являющиеся универсумом; • пустые - класс, соответствующий пустому множеству («Ко- роль России»). Понятия классифицируются по содержанию: • конкретные - задают некоторый класс материальных или идеальных объектов; • абстрактные - отражают некоторые свойства и признаки материальных или идеальных объектов в отрыве от их носителей, р-278 - 257
которые становятся некими самостоятельными сущностями (честность, храбрость); • относительные — понятия, в которых мыслятся предметы, существование которых предполагает наличие других предметов («обучаемый» — «обучающий»); • безотносительные («математика», «дом»); • положительные - характеризуют наличие некоторого свой- ства («живущий по средствам»); • отрицательные - в которых признаки положительных поня- тий отрицаются («живущий не по средствам»); • собирательные — группа однородных предметов, мыслимая как единое целое («созвездие»); • несобирательные — можно отнести к отдельному предмету. Несобирательные понятия называют разделенными. 12.3. Отношения между понятиями Если в содержании некоторых понятий имеются общие приз- наки, то они совместные, если иначе, то несовместные [8, 16]. Отношения между понятиями могут быть изображены диаг- раммами Эйлера, на которых вместо множеств рисуют понятия на некотором универсуме рассуждения U. Между совместными понятиями складываются следующие отношения. Совпадения, или тождества (рис. 104). Рис. 104. Совпадение понятий А, В Включения, или подчинения (рис. 105). Рис. 105. Понятие А включается в объем понятия В В — родовое понятие, А — видовое понятие. 258
Пересечения (рис. 106). Рис. 106. Понятие А пересекается с понятием В Между несовместными понятиями складываются следующие отношения. Соподчинения, или координации (рис. 107). Рис. 107. Понятия А и В соподчинены понятию С Исключения, или контрарности (рис. 108). Рис. 108. Контрарность понятий А и В Противоречия, или контрадикторности (рис. 109). Рис. 109. Противоречие понятий А и В Над объемами понятий возможно проведение булевых опера- ций, подобных операциям над множествами. 17* 259
12.4. Операции над понятиями Ограничение и обобщение понятий Ограничение — уменьшение объема понятия путем введени дополнительных признаков и свойств. Предел ограничения - единичное понятие. Обобщение - операция расширения объема понятия путе! исключения некоторых свойств. Определение понятия (дефиниция) — операция раскрытия со держания понятия или значения терминов. Наиболее характерным определением понятия является ука зание ближайшего более широкого родового понятия и видообра зующих признаков. Деление понятий В ходе деления понятия раскрывается его объем. Виды деления: • по изменению видообразующего признака (например, деленц людей на возрастные группы); • дихотомическое деление (рис. ПО) — бинарное деление надв. класса, находящихся в отношении противоречия; Рис. ПО. Деление понятия «Живые существа» • классификация — последовательное деление на виды, видь на подвиды и т.д. Вершины соответствующего графа называют^ таксонами. Таксон (таксонометрическая единица) обозначав' соподчиненные группы объектов. Правила деления I. Деление должно быть соразмерным. Возможные ошибки неполное деление; деление с лишними членами. 2. Деление должно быть только по одному основанию. 260
Использование понятий в информатике Семантическая сеть. Семантическая сеть - это модель, ис- пользуемая для представления знаний в интеллектуальных систе- мах. Семантическая сеть состоит из вершин и дуг, которые соеди- няют эти вершины. Вершины соответствуют понятиям, фактам, событиям, процессам, сущностям и другим элементам описания предметной области. Дуги определяют отношения между этимг элементами. Фрейм. Этот термин введен в научно-техническую литератур} М. Минским для обозначения минимальной структуры, описы- вающей некоторое понятие или объект. Фреймы используются i системах искусственного интеллекта (например, в экспертные системах) как одна из распространенных форм представления знаний. Фрейм имеет имя (название) и состоит из частей, обычнс называемых слотами; изображается фрейм в виде цепочки: Фрейм - <слот 1> <слот 2> ... <слот!Ч>. Иногда в качестве слота может выступать отдельный фрейм. Рассмотрим в качестве примера фрейм «Сделка». Цепочка этого фрейма выглядит так: Сделка = <кто?> <с кем?> <когда?> <где?> <результат>. Представленный фрейм называется фреймом-прототипом Во фреймах такого вида слоты имеют переменные значения Например: Сделка = <Герой> <Антигерой> <утром> <в чистом поле- <взял в долг>. В этом случае, по крайней мере, слоты «Герой» и «Антигерой» - переменные, их значения могут уточняться. В результате такой уточнения получается фрейм-экземпляр: Сделка = <Иван дурак> <Дядя Сэм> <утром> <в чистое поле> <продал Жар-птицу>. Исключение из фрейма любого слота делает его принципи ально неполным, иногда бессмысленным и не соответствующие названию фрейма. 12.5. Суждение и его характеристика Суждение — форма мысли, в которой фиксируется наличи или отсутствие связи между понятиями [8]. 26
Каждое суждение фиксируется в языке повествовательным предложением (высказыванием). Главной особенностью сужде- ний является то, что они могут быть либо истинными, либо лож- ными. Связь между материальными понятиями может быть про- верена опытным путем или моделированием. Связь между абстрактными понятиями проверяется с помощью аксиом, теорем,правил. Суждение называется простым, если нельзя выделить пра- вильную часть, являющуюся суждением. Модальные и категорические суждения Различают следующие суждения. Категорические (или атрибутивные) — утверждают или отри- цают тот или иной тип отношений между понятиями. К ним так- же относят суждения существования. Некатегорические (или модальные) — реальный мир или наше знание о мире таково, что уверенность в наличии связей может быть либо усилена, либо ослаблена. Такие суждения относятся к неклассическим логикам. 1. Алетическая модальность — фиксируется фактическая или логическая возможность, случайность, необходимость: • логическая возможность - это то, что не противоречит зако- нам логики; • логическая необходимость - это то, что является законами логики или следствием из них; • фактическая возможность - это то, что не противоречит за- конам природы и общественной жизни; • фактическая необходимость - это то, что является законами природы и общественной жи§ни. 2. Эпистимистическая модальность разделяет суждения на: • достоверные (доказуемые или опровержимые); • проблематичные. 3. Деонтическая модальность выражается с помощью опера- торов: • обязательно; • запрещено; • разрешено. В неклассических логиках также различают: • нечеткую (размытую, fuzzy logic) логику - это нечеткая логи- ка, в которой используются нечеткие понятия («недалеко», «близко», «часто», «редко»); 262
• временную (темпоральную) логику - это логика, в которой учитывается переменная времени. Имеются и другие экзотические логики, например, логика знания и веры. Для описания и проверки корректности алгоритмов разрабо- тана алгоритмическая логика. Простые категорические суждения В структуре простых категорических суждений различают: 1) субъект (S) - понятие, в котором фиксируется предмет мысли; 2) предикат (Р) — понятие, фиксирующее атрибуты, свойства, характеризующие понятия; 3) логическая связка - часть мысли, в которой утверждается или отрицается наличие связи между суждениями. Выражается словами «есть» и «не есть»; 4) квантор - часть мысли, которая показывает, в каком объе- ме берется понятие, стоящее на месте субъекта. Кванторы под- разделяют на кванторы общности («все», «всякий», «каждый», «ни один») и кванторы существования («некоторый», «большин- ство»). Виды простых категорических суждений. Простые категори- ческие суждения различаются по количеству и по качеству. Тип логической связки определяет качество суждения, а тип кванто- ра - количество. 1. По количеству существуют следующие виды категоричес- ких суждений: • общие («все»); • частные («некоторые»); • единичные («данный»), 2. По качеству категорические суждения делятся на: • утвердительные («есть», «является»); • отрицательные («не есть», «не является»). В связи с этим различают следующие суждения. Суждения Название Общеутвердительные Частноутвердительные Общеотрицательные Ч астноотр ицательные Обозначение А I Е О 263
SaP Рис. 111. Диаграммы Эйлера для суждений 264
Символы, обозначающие суждения, взяты из гласных букв слов Afflrmo - «утверждаю» и nEgO — «отрицаю». Ниже приведены варианты суждений. Суждения Название 1. Все S есть Р 2. Ни одно S не есть Р 3. Некоторые S есть Р 4. Некоторые S не есть Р 5. Данное S есть Р 6. Данное S не есть Р Обозначение SaP SeP SiP SoP saP seP Строчные буквы a, e, i, о обозначают операции формирова- ния суждения типа А, I, Е, О соответственно. В рассматриваемой нами системе Аристотеля имеется ограничение: при интерпретации терминов на универсуме U (рис. 111) они должны быть непустыми и неуниверсальными. При этом считается, что «некоторые» не отрицает случая «все». Распределение терминов в простом категорическом суждении. Термин считается распределенным (обозначается «+»), если в дан- ном суждении он мыслится в полном объеме, и нераспределенным (обозначается «-»), если он мыслится частью объема (рис. 112). Рис. 112. Распределение терминов в суждениях: S — распределен Семантика простых категорических суждений. Семантика, или смысл, простых категорических суждений рассматривается на основе анализа понятий суждения с учетом всевозможных отно- шений между ними на некотором универсуме рассуждения. Рассмотрим суждения с их иллюстрацией (рис. 113) на кругах Эйлера [16]. 265
1. SaP 3. SiP включение исключение совпадение 4. SoP Рис. 113. Суждения и соответствующие типичные случаи отношений между понятиями Термин распределен, если он полностью заштрихован или полностью не заштрихован, и нераспределен в противном случае (см. рис. 113). Отношения между суждениями можно представить табл. 79. 266
Таблица79 Отношения между суждениями № п/п Соотношение ЗиР А I Е О SaP SiP SeP SoP 1 (Се) с 1 1 0 0 2 и 1 1 0 0 3 и 0 0 1 1 4 и НР+) S- 0 1 0 1 5 и 0 1 0 1 В табл. 79 введены следующие обозначения: 1 - «истинно», О - «ложно». Здесь выделено только пять наиболее существенных соотношений S и Р. Анализ отношений между суждениями может быть проведен путем сравнения соответствующих столбцов табл. 79. Располагая информацией об истинности или ложности одно- го суждения, можно установить, каким будет другое суждение. 267
Логический квадрат. Отношения между суждениями могут быть представлены графом — логическим квадратом (рис. 114): Противопоставление - I Противопоставление - о субконтрарность 1 01 х 001 Е01 lx О 01 Рис. 114. Логический квадрат На логическом квадрате указаны метки дуг, показывающие связь между понятиями. Видно, что есть однозначные связи: нап- ример, от истинности суждения Е к ложности суждения А. Неод- нозначна связь, например, от ложности суждения А к истиннос- ти суждения Е. 13. Умозаключение 13.1. Виды умозаключений Умозаключение - форма мысли, в которой устанавливается та- кая связь между суждениями, с помощью которой обеспечивает- ся получение новых истинных суждений на основе уже имею- щихся [8, 16]. Новое истинное суждение, полученное в результате умо- заключения, называется выводом, при этом исходные суждения называются посылками. 268
Между посылками и выводом должно существовать отноше- ние следования. Вывод следует из посылок, если истинность посылок приводит к истинности умозаключения, т.е. важно сле- дование и важна истинность посылок. Задача логики - сформулировать правила, обеспечивающие истинность вывода при условии истинности посылок. Выделяют дедуктивные и индуктивные умозаключения. Дедуктивное умозаключение (дедукция - от лат. «выведение») - обеспечивает переход от более общих суждений к менее общим, т. е. частный случай подводится под действие общего закона, пра- вила, теоремы. Если при построении умозаключения производится переход от истинности единичного или частного суждения к общему, то такое суждение называется индуктивным (от лат. «наведение»). Различают полную индукцию (обобщение на основе конечной обозримой области фактов) и неполную (относится к бесконечной области фактов). Дедуктивные умозаключения могут быть непосредственными и опосредованными. Если истинность вывода обосновывается с помощью одной посылки, то умозаключение непосредственное, если с помощью двух и более - опосредованное. 13.2. Непосредственное умозаключение Непосредственное умозаключение строится двумя путями: 1) путем преобразования исходного суждения (посылки); 2) на основе знаний об отношениях между суждениями. Умозаключение путем обращения суждения При таком умозаключении меняются субъект и предикат ис- ходного суждения: S - Р (посылка) Р — S (заключение) Примеры. 1. Все предприниматели платят налоги, следовательно, неко- торые плательщики являются предпринимателями. 269
2. Все ЭВМ являются компьютерами, следовательно, все компьютеры являются ЭВМ. 3. Некоторые студенты работают, следовательно, некоторые трудящиеся являются студентами. 4. Некоторые учащиеся - студенты, следовательно, все сту- денты — учащиеся. Обращение бывает двух видов: чистое или простое (примеры 2 и 3, квантор не меняется) и с ограничениями (примеры 1 и 4, квантор меняется на противоположный). Простое обращение - когда субъект и предикат либо оба распределены, либо оба не распределены. Обращение с ограничением - когда субъект распределен, а предикат нет, или наоборот. Изобразим обращение суждений табл. 80. С помощью этой таблицы можно определить, когда возмож- но обращение - тогда, когда связь между суждениями одно- значная. Умозаключение путем превращения суждений При превращении меняется качество посылки без изменения количества, при этом предикат заключения является отрицанием предиката посылки. S есть Р S есть Р --------— ИЛИ S не есть Р S не есть Р Частноутвердительное превращается в частноотрицательное, общеутвердительное - в общеотрицательное. Превращению могут быть подвержены все суждения. Примеры. 1. Все женщины красивы, следовательно, ни одна женщина не является некрасивой. 2. Некоторые мужчины - джентльмены, следовательно, неко- торые мужчины не являются неджентльменами. Изобразим превращение табл. 81. 270
Таблица80 Обращение суждений 271 № п/п Соотношение ЭиР А I Е 0 А I E О SaP SiP SeP SoP PaS PiS PeS PoS 1 х—X и 1 1 0 0 0 1 0 1 2 и 1 1 0 0 1 1 0 0 3 и S ® 0 0 1 1 0 0 1 1 4 и 0 1 0 1 1 1 0 0 5 и 0 1 0 1 0 1 0 1
272 Таблица81 Превращение суждений № п/п Соотношение ЗиР А I Е О А I E о SaP SiP SeP SoP SaP SiP SeP SoP 1 х—х и (• ) у рх 1 1 0 0 0 0 1 1 2 и 1 1 0 0 0 0 1 1 3 и 0 0 1 1 1 1 0 0 4 0 1 0 1 0 1 0 1 5 и 0 1 0 1 0 1 0 1
Таблица82 Противопоставление предикату г278 273 № п/п Соотношение SnP А I Е О А I E 0 SaP SiP SeP SoP PaS PiS PeS PoS 1 z'—X и Л 1 1 0 0 0 0 1 1 2 и 1 1 0 0 0 0 1 1 3 и > 0 0 0 1 1 0 1 0 1 4 U 0 1 0 1 0 1 0 1 5 и 0 1 0 1 0 1 0 1
Умозаключения путем противопоставления предикату Противопоставление предикату — это такое непосредствен- ное умозаключение, при котором предикатом становится субъ- ект, а субъектом — понятие, противоречащее предикату исходно- го суждения, причем связка меняется на противоположную: S есть Р Р не есть S или S не есть Р Р есть S т. е. сначала (табл. 82). проводится превращение, а затем обращение Пример Все студенты сдают экзамены Ни один не сдающий экзамен не является студентом (рис. 115). Рис. 115. Пример противопоставления предикату Непосредственное умозаключение может основываться и на отношениях между суждениями. Такие умозаключения выстраиваются по логическому квадра- ту, если есть одиночная связь между соответствующими значени- ями истинности. А: (к.1 О: (Г4! Если связь неоднозначная, то суждение правильное, если двигаться по ребру, определяющему однозначную связь, напри- мер, от О (0) к I (1). I: °4Z11 О: (ГЧ 274
13.3. Опосредованное дедуктивное умозаключение. Фигуры силлогизма Если посялки и вывод в опосредованном дедуктивном умо- заключении являются простыми категорическими суждениями, то такое суждение называется простым категорическим силлогиз- мом (ПКС). В структуре простого категорического силлогизма имеются две посылки и вывод. Для того побы между посылками и выводом было отношение следования, они должны включать общие понятия. Такие общие понятия называются средним термином (М). Понятие, которое входит в одну из посылок и стоит на месте субъекта в вл воде, называется субъектом простого категоричес- кого силлогизма (S). Понятие, которое входит в одну из посылок и в вывод и стоит на месте предиката в выводе, называется предикатом простого категорического силлогизма (Р). Посылку содержащая предикат и средний термин, — большая посылка (БГ), которая стоит на первом месте. Посылку содержащая субъект и средний термин, — меньшая посылка (МП), которая стоит на втором месте. Вывод содержит субъект и предикат. Структура ПКС: БП: (М, Р) МП: (М, S) Вывод (S, Р) Правила ПКС [8] 1. Правила посылок: а) по крайней мере одна из посылок должна быть суждением общим. Из двух частных посылок вывод невозможен; б) если одна из посылок — суждение частное, вывод будет частным; в) по крайней мере одна из посылок должна быть суждением утвердительным. Из двух отрицательных суждений вывод невоз- можен; 18’ 275
1 г) если одна из посылок - суждение отрицательное, вывод бу- дет отрицательным. 2. Правила терминов: а) в ПКС может быть только три термина (М, S, Р); б) средний термин должен быть распределен по крайней мере в одной из посылок; в) термин, не распределенный в посылках, не может быть распределен в заключении. Фигуры ПКС В зависимости от положения среднего термина в посылках получают четыре варианта ПКС, которые называются фигурами ПКС I. Мг-Р II. Р-|М III. Мг-Р IV. Р-уМ S-^M 1— 2 mI-s M^-S S-P S-P S-P S-P На основе общих правил ПКС могут быть выведены правила для каждой фигуры. Для фигуры I: большая посылка — общее суждение, меньшая - утвердительное суждение. Для фигуры II: большая посылка — общее суждение, а одна из посылок и вывод — отрицательные суждения. Для фигуры III: меньшая посылка — утвердительное сужде- ние, вывод — частное суждение. Для фигуры IV: если большая посылка — утвердительное суж- дение, то меньшая — общее суждение; если одна из посылок — от- рицательное суждение, то большая посылка — общее суждение. В фигуре I вывод может быть любым суждением. В фигуре II вывод только отрицательный. В фигуре III — только частный вывод. Фигура IV редко находит применение в логике. Примеры. Для фигуры I: «Все металлы электропроводники, медь — ме- талл, следовательно, медь является электропроводником». 276
МаР {все металлы электропроводники} saM {медь - металл} saP {медь является электропроводником} Для фигуры II: «У любого квадрата все стороны равны, у дан- ного прямоугольника стороны не равны, следовательно, данный прямоугольник не квадрат». Для фигуры III: «Все партии лгут, некоторые организации вы- ражают интересы предпринимателей, следовательно, некоторые организации, выражающие интересы предпринимателей, лгут». Для фигуры IV «Все студенты — учащиеся, все учащиеся - люди, некоторые люди — студенты». Модусы ПКС Каждый из возможных вариантов простых суждений, из ко- торых строятся ПКС, называется модусом ПКС. Чаще всего рас- сматривается 19 правильных модусов для ПКС [8]. 1) AAA, ЕАЕ, АП, ЕЮ; 2) ЕАЕ, АЕЕ, ЕЮ, АОО; 3) AAI, ЕЮ, IAI, ОАО, АП, ЕАО; 4) AAI, АЕЕ, IAI, ЕАО, ЕЮ. Для простоты запоминания все 19 модусов имеют названия, объединенные в латинский стих: I Barbara, Celarent, Darii, Ferio que prioris, II Cesare, Camestres, Festino, Baroko, secundae, III tertia, Darapti, Disamis, Datisi, Felapton, Bocardo, Ferison habet, quarta insuper addit IV Bramantip, Camenes, Dimaris, Fesapo, Fresison. Эти модусы можно проверить, построив диаграммы Эйлера для всех вариантов отношений между суждениями. Иногда рас- сматривают пять дополнительных модусов: Barbari, Celarent (I фигура), Camestrop, Cesaro (II фигура), Camenes (IVфигура). 13.4. Дополнительные виды силлогизмов Энтимемы — неполные силлогизмы, т.е. с пропущенными посылками. Для проверки правильности их нужно восстановить до полного силлогизма. Если это сделать нельзя, то силлогизм неправильный. 277
Пример [8]. Дельфины не рыбы, так как они киты (вывод). Ни один кит не рыба (общее отрицательное суждение). Все дельфины киты, все дельфины — не рыбы (суждение по модусу ЕАЕ). Ряд силлогизмов использует сложные суждения: 1) условно-категорический силлогизм. Одна из посылок — импликация (->); 2) разделительный категорический силлогизм. Одна из посы- лок — разделительная или Ф; 3) условные силлогизмы, где все посылки — условные сужде- ния; 4) условно-разделительные силлогизмы. Одна посылка услов- ная, а другая — разделительная. В зависимости от числа альтерна- тив различают дилемму, трилемму и т.д., например, у В.И. Даля приведен пример дилеммы: «Лгать — Бога прогневить; правду го- ворить — людям досадить; и молчи» [12]. 13.5. Индуктивные умозаключения. Математическая индукция Научная индукция основывается на специальном математи- ческом аппарате, например, на теории вероятностей и математи- ческой статистике. Эти методы призваны исключить случайность в выводе. Математическая индукция позволяет по некоторой обозри- мой области объектов с помощью индукционных шагов сделать общее заключение. Пример. Получить методом математической индукции фор- мулу суммы п первых нечетных чисел [5]. С(1) = 1 С(2) = 1 +3 = 4 С(3) = 1 +3 +5 =9 С(4) = 1 + 3 + 5 + 7 =16 С(5) = 1+3+ 5 + 7+ 9 = 25 Похоже,что С(п) =п2. Проверим эту закономерность. Сделаем индукционный шаг: допустим, что эта формула соблюдается для п, следовательно, она соблюдается и для п+1. Докажем это: 278
C(n) = 1 + 3 + 5 + ...+(2n - I) = n2 C(n + 1) = 1 + 3 + 5 + ... + (2n - 1) + (2n + 1) = = n2 + 2n + 1 = (n + I)2, что и требовалось доказать, следовательно, формула верна для всех п. 14. Логика высказываний 14.1. Семантика логики высказываний Если в формальной логике суждения расчленяются на субъ- ект и предикат, то в логике высказываний суждение не расчленя- ется, а рассматривается как простое, из которого с помощью логических операций строится сложное суждение. С логики вы- сказываний и началась собственно математическая логика. В логике высказываний используется понятие «Высказы- вание». Высказывание — это предложение, которое либо истинно, ли- бо ложно. Высказывание, как правило, — повествовательное предложение. Если нет общего мнения об истинности, то это не является высказыванием. Из двух и более высказываний строят- ся сложные высказывания, с помощью логических операций, рассмотренных ранее в разд. 5: I) конъюнкция: (логическое «И», «логическое умножение»). Обозначения: , А, &, AND; 2) дизъюнкция (логическое «ИЛИ», «логическое сложение»). Обозначения: V, OR; 3) импликация («если..., то», «тогда, когда»). Обозначения: =>, =>, IF-THEN; IMP; 4) эквиваленция (логическое «тогда и только тогда, когда»). Обозначения: <->, о, EQV; 5) разделительное «или» (неравнозначность или «сумма по модулю 2», или «исключающее или»). Обозначение: Ф, XOR; 6) инверсия (логическое «НЕ», «неверно, что»). Унарная опе- рация. Обозначения: , NOT. Особое внимание в логике уделяется импликации, левый член называется антецедент, а правый — консеквент: X -> Y = X V Y. В логике высказываний переменные обозначаются прописными буквами. 279
«Штрих Шеффера» и «Стрелка Пирса» - бинарные опе- рации, с помощью которых могут быть выражены все другие опе- рации. Штрих Шеффера (логическое «И-НЕ»). Обозначение: |,А|В= АлВ. Стрелка Пирса (логическое «ИЛИ-НЕ»), Обозначение: J', А В = A v В. Символы логических операций называются пропозициональ- ными знаками, а символы переменных — пропозициональными переменными. В основе математической логики лежат законы Аристотеля. Они уже нам знакомы. I закон - тождества В процессе определенного рассуждения каждое понятие и суждение должно быть тождественно само себе. Х = Х или X -> X. ' II закон - противоречия Невозможно, что одно и то же в одно и то же время было и не было присуще одному и тому же в одном и том же отношении. X X = 0 (ложно), X -X (истина). Ill закон - исключенного третьего Равным образом не может быть ничего промежуточного меж- ду двумя членами противоречия, а относительно чего-то одного необходимо, что бы то ни было, либо утверждать, либо отрицать. X V Х= 1 (истина). Часть логиков считают, что в ситуациях, относительных к бу- дущему, закон исключенного третьего неприменим. Но это уже неклассическая логика. IV закон - достаточного основания Всякая истинная мысль должна быть достаточно обоснована. Напомним другие основные законы. 280
Закон идемпотентности X X = X; X VX^X. Закон Де Моргана ?CY = XvY; XvYsXY. Закон двойного отрицания х = х. 14.2. Синтаксис логики высказываний. Формулы логики высказываний Логика тесно связана с языком, поэтому ему уделяется боль- шое внимание. Искусственные языки, создаваемые для научных целей, нап- ример, для науки логики, называются формализованными язы- ками. При этом задается алфавит, где каждая последователь- ность символов называется словом. Затем вводится синтаксис — правила, позволяющие определять правильные слова, которые называются формулами [29]. Алфавит логики высказываний состоит из: • высказывательных или пропозициональных переменных (X, Y, Z, ..., W); • логических констант (0 - ложь, 1 - истина); • символов логических операций (Ф, |, V, л, <->...); • служебных символов, например, символов скобок ( [, ], {, }, (, ))• Определение формулы. • всякая высказывательная переменная — формула; • всякая логическая константа — формула; • если F] и F2 - формулы, то формулами являются F] • F2, F] V F2, F, -> F2, F„ F2, ... (т.е. при наличии знака опе- рации). Для обозначения переменных и формул в математической ло- гике приняты прописные буквы. 281
Язык, служащий для объяснения другого языка, называется метаязыком. На таком языке (на естественном русском) написан этот подраздел. 14.3. Формализация высказываний Формализация высказывания - это представление сложного высказывания формулой. В сложных высказываниях нужно вы- делить элементарные высказывания, знаки операций и предста- вить все это формулой. Пример. «Если студент Зыков не присутствует на лекции и не является больным, то он находится в казино». XY -> Z , где X - студент Зыков присутствует на лекции, Y - студент Зыков болен, Z - студент Зыков в казино. Формула может быть представлена графом, где каждая вер- шина будет обозначать операцию (рис. 116). Пример. X • (Y V Z). Рис. 116. Граф представления формулы X (Y V Z) 14.4. Интерпретации, разрешимость, выполнимость, общезначимость Интерпретация — это сопоставления каждому элементарному высказыванию некоторых значений истинности. Интерпретация, при которой значение формулы истинно, на- зывается моделью формулы. Формула называется выполнимой, если имеется ее модель, в протавном случае формула является невыполнимой. XY -> Z (001 в порядке следования переменных XYZ — модель формулы). 282
Те формулы, которые всегда истинны или тождественно ис- тинны, называются общезначимыми, или тавтологиями. Поиск этих формул - одна из основных задач логики. Для этого необхо- димо провести в общем случае 2П проверок, где п - общее число пропозициональных переменных. Алгоритм проверки общезначимости для логики высказыва- ний существует, поэтому говорят, что логика высказываний раз- решима, что нельзя сказать о логике предикатов. Пример. Проверка общезначимости путем построения дерева редукции (рис. 117) [32]. [(X • Y -> Z) (X -> Y)] -> (X -> Z), где X, Y, Z - пропозицио- нальные переменные. Пусть X = 1, тогда (Y -> Z) • Y -> Z (это частный случай фор- мулы). Пусть X = 0, тогда формула обращается в 1. (Цу/\Я(о) «Y->Z)(1->Y)]->(1->Zk/ [(0-> Z)(0-> Y)]-ЦО-> Z) = 1-> 1= 1 у/ \y(0) [(1 -^Z)(1 -» -^Z) = Z-»Z = 1 / \ (0->Z)(1->0)->(1->Z) = 0->(1->Z) = 1 =1 =1 Рис. 117. Граф проверки общезначимости формулы При получении частных случаев формул необходимо пом- нить: _ 1) X -> 1 = X V 1 = 1, т.е. импликация с истинным консеквен- том всегда истинна; 2) 0 -> Y = О V Y = 1, т.е. импликация с ложным антецедентом всегда истинна^ _ 3)X->0 = XvO=X; 4) 1 ->Y= 1 V Y = Y. 14.5. Логическая равносильность. Законы логики Два высказывания равносильны, если они одновременно ис- тинны или одновременно ложны. Две формулы равносильны, если их эквиваленция является тавтологией (общезначима): F, о F2= 1. 283
Равносильность - это отношение между формулами, и как отношение обладает свойствами рефлексивности, симметрич- ности, транзитивности. Равносильности логики высказываний называют законами логики. Основные законы логики и основные тавтологии: законы Аристотеля, де Моргана, идемпотентности, а также остальные равносильности, рассмотренные нами в дискретной математике. Иногда доказывают равносильность формул А и В, если они являются следствием друг друга: А -> В, В -> А. Тогда А = В. В логике часто используется прием подстановки. Если в равносильные формулы вместо какой-то переменной или подформулы подставить одну и ту же формулу, то получен- ные формулы останутся равносильными. Это обозначается так: (X || У) или (X, У) - «вместо X подставить У». Принцип двойственности Две формулы, не содержащие знаков импликации и эквива- ленции, называют двойственными, если каждую из них можно по- лучить из другой заменой символов конъюнкции, дизъюнкции, «О», «1» на символы дизъюнкции, конъюнкции, «1», «О» соответ- ственно. Принцип двойственности утверждает, что если две формулы равносильны, то и двойственные им формулы тоже равносильны. Иногда законами логики называют только тавтологии, т.е. тождественно истинные формулы. Рассмотрим такие законы [1]: 1) PQ -> Р — «конъюнкция сильнее каждого из его членов»; 2) Р (Р V Q) - «дизъюнкция слабее каждого из ее членов»; 3) Р -> (Q -> Р) - «истина из чего угодно»; 4) Р -> (Р -> Q) - «из ложного все что угодно»; 5) [Р —> (Q —> R)] <-> [Q -> (Р -> R)] - «перестановка посылок»; 6) [Р -> (Q -> R)] «-> [(PQ) -> R] — «объединение и разъедине- ние посылок»; 7) [(Р -> R)(Q -> R)] о [(Р V Q) -> R] - «правило разбора слу- чаев»; 284
8) [(Р —> Q) —> [(Р —> Q) —> Р] - «правило приведения к проти- воречию»; 9) [(Р -> Q)(Q -> R)] -> (Р -> R) - «цепное заключение». Эти законы можно, например, доказать путем использования формул равносильных преобразований или путем построения де- рева редукции формулы. _ _ Например: PQ -> Р= Р V Q V Р = 1. 14.6. Формы представления формул логики высказываний Скобочная форма образуется непосредственно после формали- зации высказывания. Дизъюнктивная нормальная форма — дизъюнкция элементар- ных конъюнкций. Конъюнктивная нормальная форма — конъюнкция элементар- ных дизъюнкций. КНФ также называют клаузалъной формой. Клауза — элементарная дизъюнкция. Литера, литерал — элементарное высказывание или его отри- цание. Дизъюнкт — дизъюнкция конечного числа литералов. Хорновский дизъюнкт имеет не более одной неинверсной ли- теры. Пример. PQR —> S = Р V Q V R V S. Хорновские дизъюнкты используются в языке ПРОЛОГ (PROLOG, от PROgramming in LOGic - программирование в ло- гике; разработан в 1972 г. Аланом Колмари) для описания правил типа «Если, то». Кстати, в ПРОЛОГЕ с помощью импликации записываются и так называемые факты: -> Е (-> F = 0 -> F = 1), т.е. факт — это утверждение истинности некой формулы. Преобразование в КНФ обычно производится при помощи распределительного закона. 285
СКНФ получают из КНФ путем добавления к каждому дизъ- юнкту тождественно ложной литеры. 14.7. Проблема дедукции z в логике высказываний Помимо равносильности в логике широко используется от- ношение следования. Говорят, что формула S является следстви- ем множества формул Н (записывается так: Н |-S) если при всех интерпретациях, при которых истинны все формулы из Н, истин- на также и формула S [32]. Таким образом, тавтология — следствие из пустого множест- ва формул. Записывается так: |-Т, т.е. слева от знака [• нет символа, но он подразумевается равным константе 0, - как в факте. S является следствием из Н тогда и только тогда, когда их импликация истинна, Н -> S = 1: , (Н S) «-> [(Н-> S) = 1]; h (Н -> S). Если рассматривается множество формул или гипотез Ни Н2, ..., Нп,то (Н1; Н2, ..., Hn) I- S о |- (H1H2-... Hn) -> S — т.е. подра- зумевается импликация из конъюнкций этих формул, которая общезначима. Таким образом, из множества формул выводима формула S (|-S). Фундаментальная проблема логики: определить, является ли S следствием из множества формул Н (проблема дедукции). Проблема описывается так: необходимо установить общезна- чимость следования Н -> S. Доказательство может быть проведено следующим образом: H->S = HvS = l, или, наоборот, путем доказательства невыполнимости: HvS = HS=0. Во втором случае говорят, что доказывают невыполнимости объединения формулы Н и формулы S. 286
15. Проверка правильности логических выводов. Метод резолюций 15.1. Закон контрапозиции На основе данного сложного высказывания А -> В можно сформулировать обратное ему высказывание В -> А. Нетрудно убедиться, что оно не равносильно исходному. Для всякого сложного высказывания А -> В можно сформу- лировать противоположное А —> В. Нетрудно убедиться, что оно не равносильно исходному. Высказывание типа В -> А называется обратно-противопо- ложным. Нетрудно убедиться, что оно равносильно исходному: В -> А = В V А= А V В = А-> В. Такая равносильность называется законом контрапозиции [25]. Согласно этому закону: 1) высказывания А -> В и В -> А одновременно истинны либо одновременно ложны; 2) высказывание, которое является обратно противополож- ным данной теореме А -> В, также является теоремой (здесь сложное высказывание называется теоремой); 3) вместо данной теоремы можно доказать обратно противо- положную ей теорему. Кроме того, если высказывание А -> В - теорема, то А есть достаточное условие В, а В — необходимое условие А. Если оба высказывания являются теоремами (А -> В, В -> А; т.е. А о В), то А — необходимое и достаточное условие В, а В — необходимое и достаточное условие А. Если А -> В - теорема, а В -> А не теорема, то А - достаточ- ное, но не необходимое условие В, а В - необходимое, но не до- статочное условие А. 287
15.2. Логическое следование. Проверка правильности логических выводов Когда говорят, что из высказывания Р] следует Р2 (т.е. Р] -> Р2), подразумевают, что всякий раз, когда истинно высказывание Рь истинно и высказывание Р2. Импликация Рц -> Р2 = Гявляется общезначимой формулой (т.е. формула тождественно истинна). «Я работаю в фирме» -> «Я работаю в фирме или в корпора- ции». А -> (А V В) — соответствующая формула является тавтоло- гией. Предложение!.« Если студент много занимается, то он ус- пешно сдает экзамен по математической логике», А -> В. Предложение 2. «Если студент “провалился” на экзамене по математической логике, то он не занимался» В -> А. Следует ли из первого предложения второе? (А В) (В А) = A v В v В v А = ^ДуВуВуА = i Здесь мы использовали формулы равносильных преобразова- ний из дискретной математики. Таким образом, из первого предложения следует второе пред- ложение, и это закон контрапозиции. Логический вывод подра- зумевает наличие посылок или гипотез и вывода или заключения. Для проверки правильности логических выводов необходимо убедиться, что из конъюнкции посылок следует заключение. 15.3. Силлогизмы в логике высказываний Если силлогизм условный, то одна из его посылок условная. Если одна из посылок условная, а вторая посылка и вывод — категоричное высказывание, то такой силлогизм условно-катего- ричный. Если обе посылки и вывод — условные высказывания, то та- кой силлогизм — условный. Если одна из посылок - условное высказывание, а другая - разделительное («или-или»), то это условно-разделительный сил- логизм. 288
Условно-категоричные силлогизмы Импликация отражает ту сущность нашего мира, когда след- ствие может иметь несколько причин. Следствие Мир допускает переход от причины к следствию, но не обрат- но (П С). Имеются четыре модуса условно-категоричных силлогизмов: А—>В А____ В А—>В В____ А Modus Ponens - утверждающий модус. Если была причина А, то будет и следствие В. Modus Tollens - отрицающий модус. Если не произошло В, то не было причины А. Переход от следствия к причине. Этот модус неправильный. Этот модус тоже неправильный. Такая запись в виде посылок и заключения называется аргу- ментом. Для проверки аргумента необходимо проверить, чтобы ! 9-278 289
из конъюнкций посылок следовало заключение. Такая проверка может быть проверкой правильности логического вывода. Проверим аргумент по первому модусу условного силлогизма: Посылки Заключение в —-—1 Проверим аргумент по второму модусу условного силлогизма: (А—> В)-В —>А=(А V В)-В V А = A-В V В vA^ 1. А (Модус неправильный. "Вероятно А") Разделительно-категоричные силлогизмы А® В - разделительное «или», или сумма по модулю 2 (или А, или В). АФВ А___ В (ABvA- В) А -> В = (А В vAB)AvB = |1 |1 *0 о = A-В v А В v Av В = 1. Здесь использованы соотношения A - BV А - В = АВ V А - В, т. е. А ® В = А <-> В. АФВ В___ А (АВ vAB)B А = (А В v А В) В v А = ♦1 й «о *0 •В v A I> v А v В = A v В v 1=1; -----1-----1 । АФВ А___ В (А-В v А-В)-А —> В = (А^В v А-В) • А V В = t° t° t1 t1 = ^.B v^li v Av В = 1 vA v В = 1; АФВ В___ A (A BvA B) B ->A=(A BvAB) BvA= = I v^A v A vB = lvAvB = l. 290
Альтернативы должны исключать друг друга. Должны быть перечислены все альтернативы. Условный силлогизм Условный силлогизм: обе посылки и вывод — условные суж- дения. А-эВ В->С А—>С (А—> В) <В -> С) -> (А-> С) = ------=— - f - Г - = (Av В)-(В v С) v (AvC)=.^BvB'('vAv = ВуВуАуС=1. Условно-разделительный силлогизм Условно-разделительный силлогизм: одна из посылок — ус- ловное суждение, а другая — разделительное суждение. В зависимости от числа альтернатив различают: • дилемму — 2 альтернативы; • трилемму — 3 альтернативы; • тетралемму — 4 альтернативы. Конструктивная дилемма: А—>С ВэС АФВ С (А —> С) • (В —> С)-(А® В) —> С= ______________________ *1 J = (A v С)• (В v С)- (А© В) v С = А-ф у В-v А В V A-В v С = -Ауву/.у;/^с^1- Совокупность произвольных посылок и произвольных зак- лючений называется аргументом. Проверка правильности аргу- ментов - это проверка следования из конъюнкции посылок зак- лючения. 15.4 . Получение следствий из данных посылок Получение следствий из данных посылок можно осущест- вить, получив СКНФ данных посылок, тогда все возможные со- четания элементарных конъюнкций и будут всевозможными следствиями из данных посылок. Например: 19‘ 291
Посылки - (^- Bv^’ В)-А = А В. Получаем СКНФ: В (AvB-B)-(A-AvB) = (AvB)(AvBHAj|b)(AvB). Следствия данных посылок: 1)AVB; 2) А v В; 3) А v В; 4) (А V В) (А V В); 5) (А V В) (А V В); 6) (Av В) (AV В); 7) (А V В) • (А V В) (А V В). Нужно получить СКНФ и перебрать все возможные комбина- ции конъюнкций (в данном случае у нас их 7), т.е. получается бу- леан от членов СКНФ без одного элемента (пустого множества). 15.5 . Метод резолюций Если имеются два высказывания (А V В), (А V С), которые имеют контрарные или инверсные (А, А) литералы, то следстви- ем из этих посылок является (В V С). Проверим это утверждение: (Av В) (Av С)->(В v С) = (Av В) (Av С) v (В v С) = .1 t1 = АВ vA -G vBvC =1. Л-------1 I Такие следствия называются резольвентами (это дизъюнкция членов при контрарных литералах). Метод основан на получении резольвент. Последовательно получаем резольвенты исходного множества формул, доказатель- ство невыполнимости которого мы ведем до тех пор, пока не по- лучится 0 (пустое следствие). Здесь доказательство ведется от противного. Для применения этого метода необходимо использовать КНФ. Например, для modus ponens: 292
A—>В А____ В А у ВДВ, Конъюнкции из посылок КНФ и отрицание заключения КНФ: А у ВДВ Резольвента Получили дерево доказательства. Взяты две посылки и отри- цание заключения в КНФ. Следствием посылок А v В, А являет- ся резольвента В, а следствием В, В является пустое множество 0. Это признак невыполнимости исходного множества членов КНФ. А так как доказательство проводилось от противного, мы и доказали следование В из посылок А —> В, А. 16. Синтаксис и семантика языка логики предикатов 16.1. Понятие предиката Предикат (от лат. «сказуемое») Р(хь х2, ..., хп) — функция, пе- ременные которой принимают значения из некоторого произ- вольного множества М или множеств, возможно, и бесконечных, а сама функция принимает два значения: «истина» или «ложь». P(xbx2, ...,xn): Mnh^B, В: {0, 1}, т. е. предикат - это отображение n-й степени произвольного мно- жества в бинарное множество В, элементы которого принимают два значения: «истина» или «ложь». Переменные называются предметными или пропозициональ- ными. Таким образом, понятие предиката является расширением понятия «логическая функция». Предикат от п переменных называется п-местным предика- том. Вместо предметных переменных в предикат могут быть под- ставлены определенные значения из предметной области М, т.е. константы. Также в предикат могут быть подставлены некоторые n-местные функции: f (xj, х2, ..., xn): Mni-> М. 293
Очевидно, что высказывание — нульместный предикат, свой- ство — одноместный предикат, п-местное отношение - п-мест- ный предикат. Предикат на конечных множествах может быть задан соотве- тствующей таблицей (табл. 83) [24]. Пример. Р(х, у) «X < у» Мх = {1,2,3} Му = {2, 4} Мх • Му |-> В Таблица 83 Предикат на конечных множествах (X, у) х < у Р (х, у) 1,2 1 < 2 1 1,4 1 <4 1 3,2 3 < 2 0 (х,у) х < у Р (х, у) 2,4 2<4 1 3,4 3<4 1 2,2 2 < 2 0 Множество истинности данного предиката - множество, в котором предикат принимает значение «1». 16.2. Кванторы и связанные переменные Все формулы логики высказывания являются частными слу- чаями логики предикатов. Все операции логики высказывания переносятся в логику предикатов для связывания предметных букв. Дополнительно используются обозначения кванторов: V х F (х), т.е. «Все х обладают свойством F»; V 3 х F (х), т.е. «Некоторые х обладают свойством F (но воз- можно, и все)», где V — квантор общности, 3- квантор существования. Квантор общности и квантор существования называются двойственными. Иногда используют обозначения квантора «Равно один»: 3!. Если переменная связана квантором, то она называется свя- занной, иначе - свободной. Например: V х F (х, у), 3 х F (х, у), здесь х — связанная пере- менная, у - свободная переменная. 294
16.3. Синтаксис языка логики предикатов. Формулы логики предикатов и формализация суждений В качестве алфавита в логике предикатов используется ла- тинский язык, как и в логике высказываний [25]. Вводятся следующие обозначения: • константы: a, b, с, d, е,... — строчные буквы из начала ла- тинского алфавита; . • логические константы (0 - ложь, I - истина); • предметные переменные: х, у, z, v, w,... - строчные буквы из конца латинского алфавита; • функции: f, g, h,... - строчные буквы из середины латинско- го алфавита; • предикатные символы: F, G, Н, Р, Q, ... - прописные буквы латинского алфавита; • символы логических операций и кванторов (Ф, |, V, -4- , Л, o,V,3,...); • служебные символы, например, символы скобок ( [, ], {, }, (, ))• Символы функций и предикатов называют сигнатурой. Функции и предикаты иногда снабжаются верхним индексом местности операции. При определении формулы используется понятие «терм». Терм - объединяет понятия переменных и функций, к которым применяются предикатные буквы. Всякая предметная переменная или константа - терм. Если f - n-местная функция, a tj, t2, ..., tn - терм, то fn (tb t2, ..., tn) - тоже терм. Никакие другие выражения не являются термами. /(Гример, f3 (а, х, g2 (х, у)) — это терм с трехместной функцией f, двухместной функцией g, а — константа. Если F — n-местный предикат, t1; t2,..., tn - термы, то Fn (t,, t2, ..., tn) - элементарная формула. Никакие другие выражения не являются элементарными формулами. Элементарную формулу иногда называют атомарной или атомом. 295
Введем понятие «формула»'. всякая элементарная формула — это формула; если F и Q - формулы, а х ^предметная переменная, которая входит в F, то Vx F (х), Зх F(x), F, F- Q, F v Q, F -» Q, F <-> Q явля- ются формулами. Примеры. P2 (a, f1 (x)) - формула; Q1 (x, g2 (x, b)) - не формула, так как предикат Q должен быть одноместным; Р2 (У, Q1 (z)) - не формула, так как Q1 (z) — не терм; f1 (g2 (х, у)) - не формула, а терм; F2 (а, у) -4- Q1 (Ь) — формула. 16.4. Семантика формул логики предикатов Формула имеет семантику, т.е. определенный смысл, и обоз- начает определенное высказывание, если существует ее некото- рая интерпретация. Интерпретировать формулу — значит связать с ней опреде- ленное непустое множество, т.е. конкретизировать предметную область (область интерпретации), а также указать соответствие [25]: 1) каждой предметной константе в формуле - конкретный элемент из множества М; 2) каждой n-местной функциональной букве в формуле — конкретную n-местную функцию на множестве М; 3) каждой n-местной предикатной букве - конкретное отно- шение между и элементами на М. Пример [25]. G2(f2 (a, b)),g2(a,b). Пусть М - множество натуральных чисел а = 2, b = 3, f - сложение (а + b), g - умножение (a-b), G - отношение «не мень- ше» (>). Тогда: 2 + 3 > 2-3 - ложное высказывание Если а = 1, b = 2 - высказывание истинное. Не существует ни одной интерпретации G, при которой эта формула и истинна, и ложна одновременно. 296
Для формулы G2 (f (g (х, х), g (у, у), g (a, g (х, у))) при а = 2 : «х2 + у2 > 2ху» — истинное высказывание. Рассмотрим общезначимость, выполнимость, невыполни- мость. Формула без свободных переменных называется замкнутой. Для данной интерпретации всякая замкнутая формула пред- ставляет собой высказывание, которое истинно или ложно. А всякая формула со свободными переменными выражает некото- рое отношение на области интерпретации, которое может быть истинно для одних значений переменных и ложно для других значений. Если формула истинна jnpH всех интерпретациях, то она общезначима, например: F V F, Vx [F(x) v F(x)]. - Если формула ложна при любых интерпретациях, то она невыполнима, например: F F, Vx [F(x) F(x)]. Формула выполнима, если существует интерпретация, в кото- рой она выполнима. Логика предикатов второго порядка — логика, использующая кванторы по предикатным буквам и (или) по функциям. Предикаты в информатике могут задаваться и в «неакадеми- ческой» форме — с использованием слов естественного языка, например: находиться <Иван, работа> — двухместный предикат «Находиться <Х, У>« - X находится в У. 17. Тождественные преобразования формул логики предикатов 17.1. Операции над предикатами Над предикатами можно производить обычные логические операции [24]. В результате получают новые предикаты. Инверсиёй предиката называется предикат, у которого значе- ния истинности проинверсированы. Конъюнкцией предикатов называется предикат, у которого множество истинностей является пересечением множеств истин- ности исходных предикатов. Пусть Р(х) означает предикат «х делится на 2», Q(x) означает предикат «х делится на 3», Р(х) • Q(x) означает предикат «х делит- ся на 2 и х делится на 3», т.е. определяет предикат делимости на 6. 297
Дизъюнкцией предикатов называется предикат, у которого множество истинности является объединением множеств истин- ности исходных предикатов. Аналогично могут быть определены эквиваленция и импли- кация. Очевидно, что переменные должны принимать значения из одного общего множества. Пусть предикаты Р, (х, у) и Р2 (х, у) (X = {с, d, е}, Y = {a, b, с, d}) определяются соответствующими таблицами (табл. 84-85) [24]: Таблица 84 Для Р, (х, у) \ Y X \ а ь с d с 1 0 0 1 d 0 1 1 0 е 1 0 0 0 Таблица 85 Для Р2 (х, у) X / / < а ь с d с 1 0 1 0 d 1 1 0 0 е 0 0 1 1 Тогда импликацией Pj (х, у) -4- Р2 (х, у) будет предикат Ри (х, у) (табл. 86), ложный в соответствующих клетках (см. табл. 84 - 85), где первый предикат Р, (х, у) истинный, а Р2 (х, у) - ложный. Таблица 86 Для Ри (X, у) X Y X \ а ь с d С 1 1 1 0 d 1 1 0 1 е 0 1 1 1 298
Эквиваленцией Pj (х, у) о Р2 (х, у) будет предикат Рэ (х, у) (табл. 87), истинный в соответствующих клетках (см. табл. 84 - 85), где оба предиката принимают одинаковые значения. Таблица 87 Для Рэ (X, у) Так же, как в логике высказываний, определяется равносиль- ность предикатов — она выполняется, когда на всяком наборе значений входящих в них переменных предикаты принимают одинаковые значения: Р] (х, у) <-> Р2 (х, у). Таким же образом можно определить следование Р, (х, у) -4- Р2 (х, у) предиката Р2 из предиката Рр Это выполняется тогда, когда Р, (х, у) -> Р2 (х, у) истинно на всех наборах переменных, т.е. мно- жество истинности Р] является подмножеством множества ис- тинности предиката Р2 (множество предиката Р] включается во множество истинности предиката Р2). Очевидно, что свойства - одноместные отношения - являют- ся одноместными предикатами, а многоместные отношения — это многоместные предикаты. 17.2. Основные равносильности логики предикатов Литералом (литерой) называют любую элементарную форму- лу или ее отрицание. Формула, представляющая собой дизъюнкцию литералов, на- предложением или дизъюнктом. При получении используются равносильные преобразова- ния - переход от. одних формул к равносильным или другим фор- мулам. Все равносильности, имеющие место в логике высказываний, имеют место и для формул логики предикатов, если последние не содержат кванторов. 299
Рассмотрим основные равносильности логики предикатов, имеющих кванторы. Отрицание предложений с кванторами: Vx F(x) — не верно, что все х обладают свойствами F, значит, некоторые х не обладают свойствами F: Vx F(x) = 3x F(x); Зх F(x) - не верно, что существуют х, обладающие свойства- ми F, значит, все х не обладают свойствами F: Зх F(x) = Vx F(x). В случае наличия нескольких кванторов необходимо после- довательно заменять все кванторы и инвертировать предикаты, например: Vx3yF(x,y) =3xVyF(x,y); 3xVyP(x,y) = Vx3yP(x,y). Очевидно, что квантор общности может быть заменен конъюнкцией по предметной области, возможно бесконечной, а квантор существования - дизъюнкцией. Пусть задан двухместный предикат «Решать задачи» на мно- жествах: Мх= {1,2} — множество студентов, Му= {1,2} - множество за- дач. Тогда возможны следующие варианты для одного квантора: 1) ЗхР (х, у) = Р (1, у) V Р (2, у) — хотя бы 1 студент решает за- дачи; 2) ЗуР (х, у) = Р (х, 1) v Р (х, 2) - хотя бы одна задача решает- ся студентами; 3) VxP (х, у) = Р (1, у) Р (2, у) - каждый студент решает за- дачи; 4) VyP (х, у) = Р (х, 1)-Р (х, 2) - каждая задача решается сту- дентами. Очевидно, что эти формулы не замкнутые, т.е. в зависимости от значений переменных они могут принимать различные значе- ния истинности. Для возможных комбинаций двух кванторов получаем соот- ветствующие замкнутые формулы. Для одноименных кванторов: 5) ЭхЗуР (х, у) = Р (1, 1) v Р (1, 2) V Р (2, 1) V Р (2, 2) = ЗуЗхР (х, у) - существуют студенты, решающие хотя бы одну задачу, или, что то же самое, существуют задачи, решаемые хотя бы од- ним студентом; 300
6) VxVyP (x, у) = P (1, 1)P (1,2) P (2, 1) P (2, 2) = VyVxP (x, y) - каждый студент решает каждую задачу или, что то же самое, каж- дая задача решается каждым студентом. Для разноименных кванторов: 7) 3xVy Р (х, у) = Р (1, 1) • Р (1, 2) V Р (2, 1) • Р (2, 2) - (х=1) (х = 2) существуют студенты, решающие каждую задачу; Ясно, что при перестановке кванторов получается совсем другой смысл: 8) УуЗхР (х, у) = [Р (1, 1) V Р(2, 1)] • [Р (1, 2) V Р (2, 2)] - (У=1) (У = 2) каждая задача решается хотя бы одним студентом; 9) Vx3yP (х, у) = [Р (1, 1) V Р (1, 2)] • [Р (2, 1) V Р (2, 2)] - (х=1) (х = 2) каждый студент решает хотя бы одну задачу. Наоборот: 10) 3yVxP (х, у) = Р (1, 1) • Р (2, 1) V Р (1, 2) Р(2, 2) - (у=1) (у = 2) существуют задачи, решаемые каждым студентом. Таким образом, нетрудно показать, что из Зх\/уР (х, у) сле- дует Vy3xP (х, у), т.е. из суждения «по меньшей мере один студент решил все задачи» следует суждение «каждую задачу решил по меньшей мере один студент» [25]. Действительно: [Р(1,1)Р(1,2) vP(2,l)P(2,2)] v[P( 1,1) v vP(2,1)][Р(1,2) vP(2,2)] =[Р(1,1)Р(1,2)][Р(2,1)Р(2,2)] v vP(l,l)P(l,2) vP(l,l)P(2,2) vP(2,l)P(l,2) vP(2,1)P(2,2) = = [P(1,1)P(1,2)][P(2,1)P(2,2)] vP(l,l)P(l,2) vP(2,l)P(2,2) v vP(2,l)P(l,2) vP(2,l)P(2,2) =[P(1,1)P(1,2)][P(2,1)P(2,2)] v vP(l,l)P(l,2)P(2,l)P(2,2) vP(2,l)P(l,2) vP(2,1)P(2,2) =1. Аналогично доказывается то, что из 3yVxP(x,y) следует Vx3yP (х, у), т.е. из суждения «по меньшей мере одна задача реше- на каждым студентом» следует суждение «каждая задача решена по меньшей мере одним студентом». Таким образом, одноименные кванторы можно менять мес- тами: 301
ЗхЗуР (х, у) = ЭуЭхР (х, у); VxVyP (х, у) = VyVxP (х, у). Разноименные кванторы нельзя менять местами, но SxVyP (х, у) -> Vy3xP (х, у); 3yVxP (х, у) -> Vx3yP (х, у). Рассмотрим другие равносильности. Квантор общности может быть перенесен через конъюнк- цию: VxP(x) • VxR(x) = х[Р(х) R(x)]. Квантор существования может быть перенесен через дизъюн- кцию: ЗхР(х) V 3xR(x) = Эх[Р(х) V R(x)]. 17.3. Тождественные преобразования формул Формулы логики предикатов часто представляют в стандарт- ной форме, например в клаузальной. Формула в клаузальной фор- ме (в виде конъюнкции — КНФ-дизъюнктов) явно использует лишь операции дизъюнкции, конъюнкции и инверсии, а каждый дизъюнкт - лишь операцию дизъюнкции и инверсии, причем ин- версия применяется не более чем к одной предикатной букве (ли- тере, литералу). Поэтому для представления произвольной фор- мулы в форме дизъюнкта необходимо исключить все остальные логические операторы (включая кванторы) и уменьшить область действия знака отрицания до одной предикатной буквы [29]. Исключение знаков импликации Знаки_ импликации исключают, используя равносильность А-> В = А V В. Например: Эх [F(x) -> VyG(y)] = Эх [F(x) V VyG(y)]. 302
Уменьшение области действия знаков инверсии Это делается с помощью законов Де Моргана и правил инвер- сии выражений с кванторами. Например: 3x[F(x) v VyG(y)] = VxF(x)VyG(y) = VxF(x)3yG(y). Стандартизация переменных В области действия кванторов связанную с ними переменную можно заменить произвольной переменной, не совпадающей с какой-либо другой переменной, входящей в область действия этих кванторов. Например: VxF (х, у) V 3xG (х) = VzF (z, у) V 3uG (u). Однако формулы VxF (х, у) и VyF (у, у) не равносильны. Переименование связанных переменных формулы, при кото- ром каждый квантор имеет собственную переменную, отличную от других, называется стандартизацией переменных. Исключение кванторов существования В формуле Vx [3yG (х, у)], которую можно интерпретировать, например, как «для всех х существует такой у, что для х не больше у», квантор Эу находится внутри области действия квантора Vx. Поэтому у, который «существует», может зависеть от х. Эту зави- симость в явной форме можно определить функцией g(x), отоб- ражающей каждое значение х в у. Такая функция называется функцией Сколема. Используя ее, можно исключить квантор су- ществования. Для обозначения функции Сколема не должны ис- пользоваться функциональные буквы, которые уже имеются в формуле. Если квантор существования находится в области действия двух и более кванторов общности, то функция Сколема будет зависеть соответственно от двух аргументов и более. Если исключаемый квантор существования не принадлежит ни к одному квантору общности, то функция Сколема не содер- жит аргумента, т.е. является константой. Так, формула 3xF(x) при исключении квантора существования преобразуется в формулу F(a), где а — константа, при которой известно, что формула F(a) «существует». 303
Операция исключения квантора существования называется еще сколемизацией. Исключение кванторов общности После исключения кванторов общности и стандартизации переменных формула содержит только кванторы общности, каж- дый из которых имеет свою переменную. Поэтому кванторы общности можно перенести в начало формулы (получаем предва- ренную формулу) и считать областью действия каждого квантора часть формулы, расположенную за ними. Например: Vx {F(x) Vy [G(y) V H (x, у)]} = VxVy {F(x) [G(y) V H (x, y)]}. В связи с тем, что в импликации Ф -> F множество состоит из замкнутых формул, т.е. из формул, не содержащих свободных пе- ременных, и формула F замкнута, все переменные в формуле из Ф1 = Фо V F будут относиться к кванторам общности. А так как порядок расположения кванторов общности не имеет значения, то эти кванторы можно явно не исключать, условившись, что все переменные в формуле относятся к кванторам общности. Таким образом, кванторы исключают, получив предваренную форму из одних кванторов общности. Представление формулы в КНФ Получение множества Ф[ (объединение формул Фо v F) экви- валентно КНФ соответствующей формулы. Так как какая-либо интерпретация удовлетворяет формуле вида К, • К2 • ... • Кп в том и только в том случае, если она удовлетворяет формулам К|; К2, ..., Кп одновременно, то исходную формулу Ф( можно заме- нить множеством конъюнктивных членов (дизъюнктов). Пример Vx{P(x)—>{[Vy[P(y) —>P(f(x,y))]][Xfy[Q(x,y) —>Р(у)]]}}. Исключим знаки импликации: Vx{P(x) v{[Vy[P(y) vP(f(x,y))]][ W[Q(x,y) vP(y)]]}}. Уменьшим области действия знаков отрицания до одного предиката: Vx {Р (х) V {[Vy [Р (у) V Р (f (х, у))]] [Зу [Q (х, у) Р (у)]]}}. 304
Произведем стандартизацию переменных: Vx {Р (х) V {[Vy [Р (у) v Р (f (х, у))]] [Sz [Q (х, z) Р (z)]]}}. Проведем сколемизацию: Vx {Р (х) V {[Vy [Р (у) v Р (f (х, у))]] [Q (х, g (х)) Р g(x)]}}. Здесь g (х) - функция Сколема, зависящая только от х, она находится в области действия квантора. Получим предваренную форму формулы: VxVy {Р (х) V {[Р (у) V Р (f (х, у))] [Q (х, g (х)) Р (g (х))]}[. Исключим кванторы общности: {Р (х) V [ Р (у) v Р (f (х, у))] [Q (х, g (х)) Р (g (х))]}. Используя закон дистрибутивности, получим КНФ: Р(х) V Р (у) v Р (f (х, у)), Р (х) v Q (х, g (х)), Р(х) v Р (g (х)). 17.4. Универсум Эрбрана Полученная КНФ - это то множество формул Ф] = Фо V F, невыполнимость которого нужно доказать, - доказать, что не существует интерпретации, которая ему удовлетворяет. Очевидно, что невозможно перечислить все возможные области интерпретации. Во-первых, множества могут оказаться бесконечными и, во- вторых, неясно, как их строить. Метод решения этой проблемы основывается на утверждении: если множество Ф] невыполнимо в области Н(Ф[), называемой универсумом Эрбрана, то оно не- выполнимо в любой области [29, 32]. Универсум Эрбрана Н(Ф1) для множества предложений Ф( определяется следующим образом: • множество всех предметных констант, упомянутых в Ф(, принадлежат Н(Ф]); 20-278 305
• если некоторые термы принадлежат Фь то и функции от этих термов принадлежат Н(Ф)); • никакие другие термы не принадлежат универсуму Эрбрана. Пример. Ф[ = {Р (х) vQ(a) V P(f (х)), Q (b) v Р (g (х, у))}. Тогда: Н (Ф,) = {a, b, f (a), f (b), g (a, a), g (b, b), g (a, b), g (b, a), f (f (а)), f (f (b)), g (a, f(a)),...}. Множество константных частных случаев, получающихся в результате подстановки вместо переменных в Ф[ множеств из Н(Ф[), называется Эрбрановским базисом для ФР Множество невыполнимо на Н(Ф[), если любая интерпретация на Н(Ф,) не удовлетворяет ФР Задание интерпретаций на Н(Ф) удобно делать с использова- нием семантического дерева. Каждый путь в нем - одна из ин- терпретаций на Н(Ф). Последовательность меток для каждого пути семантического дерева - модель для данного множества предложений Ф. Каждая модель - определенная интерпретация. Модель не удовлетворяет предложению, если существует констант- ный частный случай этого предложения, имеющий значение «О». Рассмотрим пример, включающий три предиката, описываю- щих свойство транзитивности: Hl : Vx [Р (х)-> Q (х)]; Н2: Vx[Q(x)->R(x)]; , С : Vx [Р (х) R (х)]. Здесь Hl, Н2 — гипотезы, а С - заключение соответствующе- го умозаключения. В этом случае клаузальная форма имеет вид [Р (х) v Q (х)] [Q (х) v R (х)] Р (a) R (а), гдеР (a) R (а) — отрицание заключения Vx[P(x)vR(x)] = 3xP(x)R(x) = =P(a)R(a); а - функция (константа) Сколема. Тогда фундаментальная конкретизация имеет вид (Р (a) v Q (a)] [Q (а) v R (а)] Р (a) R (а). 306
Таким образом, имеется всего 8(23) Эрбрановых интерпре- таций. Соответствующее семантическое дерево имеет вид (рис. 118). Р(а) Рис. 118. Семантическое дерево В соответствии с рис. 118 по всем возможным путям из корня к листьям дерева можно получить все 8 вариантов фундаменталь- ной конкретизации: 0) (0 V 0) (0 V 0) 00 = 0; 1) (0 V 0) (0 V 1) 0Т= 0; 2)(0V 1) (Tv 0)00 = 0; 3) (0v0) (Tvl)0T=0; 4) (TvO) (0 v0) 10 = 0; 5) (T V 0) (0 v 1) 1T= 0; 6) (Tv 1) (TvO) 10 = 0; 7) (Tv l)(Tv 1) 1T= 0; Таким образом, при всех вариантах получаем невыполнимое множество дизъюнктов. В ряде случаев нет необходимости опус- каться до листьев, например, если Р (a), R (а) равны нулю, ясно, что сразу получаем нуль. Это указывается на дереве специальным кружком. 20! 307
18. Использование метода резолюций в логике предикатов 18.1. Подстановка и унификация | В математической логике широко используются приемы j подстановки и унификации. ! Подстановка - прием, в результате которого из некоторых | данных формул получают их частные случаи, например, {(Ц, х(), | ..., (tn, хп)[, где пара (tj, х.) означает, что всюду, где производится 1 данная подстановка, переменная х, заменяется термом tj. Пример [29]. J Литерал Р (х, f (у), Ь) после подстановок: Я О, = {(z, х), (w, у)}; 02 = {(а, у)}; 03 = {(g (z), х), (а, у)} имеет вид Ре| = Р (z, f(w), b); Р02= Р (х, f (a), b); Р03 = Р (g (z), f (a), b). Здесь P0i означает частный случай Р, полученный при подста- | новке 0,. Унификация Множество литералов {LJ называется унифицированным, если существует такая подстановка 0, что L10 = L2 0 =,...= Ln0; i = l,n. Подстановка 0 называется унификатором для {LJ. Унификация применяется и для формул. Формулы, имеющие совместный частный случай, называются унифицируемыми, а на- бор подстановок — общим унификатором. Наименьший возможный унификатор называется наиболее общим унификатором. Известен алгоритм унификации, определяющий, являются ли две заданные формулы унифицируемыми, и, если это так, то позволяющий найти наиболее общий унификатор. Заметим, что при подстановке переменная заменяется тер- мом, но терм не может быть заменен термом, т.е. вместо перемен- ной может быть подставлена константа, другая переменная, функция, но вместо константы или функции ничего не может быть подставлено. 308
18.2. Резольвенция и факторизация При доказательстве теорем в математической логике исполь- зуются представления суждений в виде дизъюнкции литералов (в виде предложений, в клаузальной форме). Литерал L[ называется дополнительным литералу L2, если Ц является отрицанием L2. Резольвента двух предложений получается следующим обра- зом [29]: 1) переменные одного предложения переименовываются та- ким образом, чтобы они отличались от переменных другого пред- ложения; 2) находится подстановка, при которой какой-либо литерал одного предложения становится дополнительным к какому-либо литералу другого предложения, и эта подстановка производится в оба предложения; 3) литералы, дополнительные друг к другу, вычеркиваются; 4) если имеются одинаковые литералы, то все они, кроме од- ного в каком-либо предложении, вычеркиваются; 5) дизъюнкция литералов, оставшихся в обоих предложениях, и есть резольвента. Используется также факторизация. Фактором какого-либо предложения называется следствие этого предложения [29]: 1) находится подстановка, при которой какие-либо литералы одинаковы; 2) после выполнения этой подстановки все одинаковые лите- ралы, кроме одного, вычеркиваются; 3) дизъюнкция оставшихся литералов и есть фактор. Процесс нахождения.фактора называется факторизацией. Пример [29]. Р(х) v R(x) P(g(x))vQ(y) Резольвента R (g (х)) V Q (у) при подстановке {(g (х), х}, т. е. g (х) заменяет х. P(f(x))vR(x) P(g(x))vQ(y) 309
Здесь резольвенты нет. Переменные: х, у; термы: g (х), f (х). Вместо переменной можно подставить терм, но вместо функ- ции или константы терм подставить нельзя. Пример [26]. {Р(х, a, f(g(a))), Р (z, у, f(u))}. В этом случае наименьший общий унификатор: {(z, х), (а, у), (g (а), и)}. Просто унификатор: {(Ь, х), (а, у), (b, z), (g (а), и)}. 18.3. Метод резолюций в логике предикатов Задача установления невыполнимости множества предложе- ний в логиике предикатов наиболее часто решается с помощью метода резолюций. Предварительно получают множество дизъ- юнктов так, как было описано ранее. В отличие от логики выска- зываний для получения резольвент необходима унификация. Это не что иное, как получение частных случаев формул. Далее строят дерево опровержения, как в логике высказываний. Невыполнимая в частном случае формула не может быть вы- полнима в других случаях, так как формула замкнута, а замкну- тая формула либо ложна, либо истинна. На этом и основано ис- пользование метода резолюции в логике предикатов. Например, для умозаключения по модусу «Barbara» при ис- пользовании формализации [8]: A(SaP):Vx[S(x)->Р(х)]; I(SiP):3x[S(x)P(x)]; ‘ E(SeP):Vx^S(x) -^P(x) j; O(SoP):3x[S(x)P(x)]. Получаем для умозаключения ААА по первой фигуре силлогизма конъюнкцию посылок и отрицания заключения: Vx [М (х) —> Р (х)] Vx [S (х) -> М (х)] Vx[S(x) —> Р(х), что соответ- ствует множеству дизъюнктов и дереву опровержения (рис. 119). 310
M(x) v Р(х), S(x) v М(х), S(a), Р(а), 0 (опровержение достигнуто) Рис. 119. Дерево опровержения для модуса «Barbara» На рис. 119 а - это константа, получившаяся после введения функции Сколема при отрицании заключения модуса «Barbara». Для модуса «Darapti» (третья фигура силлогизма) дизъюнкты и дерево опровержения имеют вид (рис. 120): M(x)vP(x), M(x)vS(x), S(x)vP(x), М(х) v Р(х), Рис. 120. Дерево опровержения для модуса «Darapti» Опровержение не достигается, хотя модус правильный. Ана- логично не достигается опровержение и для модусов «Felapton» и «Fesapo». Оказывается, это недостаток формализации, а не мето- да резолюций. В то же время формализация В.А. Смирнова [1] A:3xS(x)Vx[S(x)->Р(х)]; E:Vx[^S(x) ->Р(х)]; I:3xS(x)P(x); O:3xS(x) -> 3x ^S(x)P(x)j 311
лишена этого недостатка. Так, для модуса «Felapton» (рис. 121): М(х) v Р(х), М(а), M(xj v S(x), S(b), S(x) v P(x) 0 Рис. 121. Дерево опровержения для модуса «Felapton» и модели В.А. Смирнова Непосредственной проверкой можно убедиться в том, что при этой формализации метод резолюции «работает» для всех 19 правильных основных и 5 дополнительных модусов [1] и не «ра- ботает» для остальных 232 неправильных. На методе резолюций основан язык логического программи- рования ПРОЛОГ. 18.4. Принцип логического программирования В ряде логических задач [29] выясняют, следует ли логически некоторая формула F из множества Фо. В других задачах устанавливают значение элемента х (если оно существует), при котором данная формула F содержащая в качестве одного из аргументов х, следует из Фо, т.е. сначала уста- навливают, следует ли формула 3xF(x) из Фо, а затем при положи- тельном ответе на этот вопрос определяется соответствующее значение х. Рассмотрим пример [29]. Пусть погрузочный робот (пр) располагается на автоматичес- кой тележке (ат). Тележка находится на складе (скл). Требуется ответить на вопрос, где находится погрузочный робот. Формализуем задачу, введя предикат: «Быть в определенном месте»: B(z,x) - «z находится в х», тогда Фо = {Vx [Б(ат, х) -> Б (пр, х)], Б (ат, скл)}. 312
Первая формула выражает тот факт, что в каком бы месте ни находилась тележка, в этом же месте находится погрузочный ро- бот. Вторая формула — что тележка находится на складе. Необходимо доказать теорему: Фо = lVx (ат> х) -» Б (пр, х)}, Б (ат, скл)} —>,Вх (Б (пр, х)), т.е. что погрузочный робот где-то находится, и определить это соот- ветствующее значение х. Решение: получаем отрицание предположения Эх(Б( np,x)) = Vx(B( пр,х)). Получим множество дизъюнктов и применим метод резо- люций: Фо = {Vx [Б (ат, х) -> Б (пр, х)], Б (ат, скл)} Vx (Б (пр, х)). Таким образом, предположение Эх (Б (пр, х)) следует из гипо- тез Фо = {Vx [Б (ат, х)-> Б (пр, х)], Б (ат, скл)} (рис. 122). Б(ат, х) v Б(пр, х), Б(ат, скл), Б(пр, х) 0 Рис. 122, Дерево опровержения для задачи о роботе После построения дерева опровержения для извлечения отве- та на поставленный вопрос строят модифицированное дерево дока- зательства. 1. К каждому предложению, вытекающему из отрицания пред- ложения, добавляются (в смысле дизъюнкции) его отрицания. 2. Выполняются те же самые резолюции, что и при построе- нии дерева опровержения. 313
В корне модифицированного дерева доказательства получа- ется частный случай предположения, который и используется в качестве ответа (рис. 123). Б(ат, х) v Б(пр, х), Б(ат, скл), Б(пр, х) v Б(пр, х) Б(пр, скл) Рис. 123. Модифицированное дерево доказательства для задачи о роботе Таким образом, погрузочный робот находится на складе. _ В процессе извлечения ответа возникают тавтологии (типа Б (пр, х) V Б (пр, х)). Но, так как тавтологию можно отбросить, не изменяя выпол- нимости или невыполнимости любого множества (конъюнкция с единицей), содержащего кроме тавтологии другие формулы, ука- занные предположения следуют из аксиом. Таким образом, модифицированное дерево опровержения яв- ляется графом доказательства того, что формула, расположенная в его корне, логически следует из аксиом. Описанный процесс извлечения ответа можно применять при автоматическом построении простых программ для ЭВМ. Пусть заданы отношения R (х, у) между х и у некоторым мно- жеством аксиом, а также элементарные функции, определяемые другим множеством аксиом. Требуется написать программу, ко- торая по заданным входным значениям выдает на выходе значе- ние у, удовлетворяющее значению R (х, у). При ее написании можно использовать заданные элементарные функции. Требуемую программу можно построить с помощью процесса извлечения ответа после того, как будет доказано, что предполо- жение логически следует из указанных аксиом. В корне модифи- цированного дерева доказательств будет ответное утверждение в виде композиции элементарных функций. Эта композиция и бу- дет программой. 314
19. Логические исчисления 19.1. Понятие о формальных теориях Согласно энциклопедическому словарю, теория (от греческо- го - рассмотрение, исследование) - система основных идей в не- которой области знания, форма научного знания, дающая пред- ставление о закономерностях и наиболее существенных связях действительности. Без теории невозможно представить научное мировоззрение. Всякая теория выступает как учение о бытии, онтология (греч. ontos - сущее + logos — учение); любая онтология есть тео- рия. Отсюда следует вывод, что именно существует и каким обра- зом выясняется на основе теорий [40]. Многие сложнейшие логико-философские вопросы, так или иначе, приводят к проблеме существования. Что существует? По- чему люди так часто пересматривают свое мнение относительно того, что именно действительно существует? Лишь на первый взгляд вопрос о существовании кажется чрезвычайно простым: существует, мол, все то, что я вижу, слышу, осязаю. Как у В. Маяковского: «...существует - и не в зуб но- гой...». Увы, наука не сводится к очевидностям, более того, она постоянно лишает их ореола самодостаточности. Солнце кажет- ся нам по своим размерам небольшим, а оно огромное. Из физи- ки известно, что на Солнце происходят ядерные реакции, но зна- ем мы об этом в первую очередь благодаря не глазам, а теориям. Онтологические аспекты, так же как и логические, являются одними из основных в науке об искусственном интеллекте [39]. Свое исчерпывающее обоснование проблема существования получает в науках (в том числе в философии). Обратившись к ним, мы встречаемся с различными видами бытия, число кото- рых в точности соответствует числу наук. В данном случае пред- полагается, что все виды бытия попали в сферу внимания совре- менных наук. Во всех случаях существование не есть отдельное свойство ве- щей, нечто подобное цвету, массе или запаху. Существовать - значит иметь определенность, выражаемую концептами (в том числе понятиями и ценностями) теории. Человек обладает зна- ниями о существовании лишь того, о чем толкует теория. Сведе- ния, в чем-то противоречащие теории либо вообще не представ- 315
ленные в ней, считаются несостоятельными. Нечто признается существующим лишь в том случае, если сведения 6 нем удовлет- воряют критериям науки, в том числе таким, как непротиворечи- вость положений теории и их подтверждаемость фактами. Всякая теория определяется алфавитом, с помощью которого строится язык, на котором сформулированы выражения (форму- лы) [32]. Некоторый набор правил позволяет отличить выражение от произвольной последовательности символов. Задаются базис- ные выражения — аксиомы или постулаты, считающиеся истин- ными. Способ рассуждения или доказательства позволяет полу- чать, исходя из аксиом, новые выражения. В XIX в. сформировался такой раздел математики, как осно- вания математики. В этом разделе математики искали ответ на вопрос: «Как должна быть построена теория, чтобы в ней не бы- ло противоречий, каковы должны быть методы доказательства?» Основная идея - последовательное проведение аксиомати- ческого принципа. При этом не допускается пользоваться каки- ми-либо предположениями, кроме явно выраженных в виде аксиом. Аксиома рассматривается как формальная последователь- ность символов или выражений, а методы доказательства - как методы получения одних выражений из других с помощью опера- ций над символами. Ранее мы уже говорили о дедукции, о дедуктивных умозаклю- чениях. Кроме дедуктивных рассматривались и правдоподобные рассуждения с использованием математического аппарата теории вероятности и математической статистики. Дедукция — теоретический метод познания, используется тогда, когда для получения нового знания недостаточно только практики (наблю- дений, измерений, экспериментов) [5]. В зависимости от степени использования дедукции различа- ют [15]: 1. Содержательные теории. В них знания представлены почти полностью на содержательном уровне, словесно (вербально). Де- дукция практически не используется. Например, теория приба- вочной стоимости, теория Дарвина. 2. Формализованные теории. В них дедукция используется час- тично. Знания частично формализованы и структурированы. Например, школьная арифметика, формальная логика, логика высказываний и логика предикатов. Среди формализованных те- 316
орий особо выделяются аксиоматизированные теории. Класси- ческий пример - геометрия Эвклида. Принимаются аксиомы, т.е. истинные утверждения (положения) теории, а из них выво- дятся другие, которые считаются истинными. Если взять другие аксиомы - получается другая теория, например, геометрия Лоба- чевского. 3. Формальные теории. В них дедукция - основной метод. Структурируются не только знания, но и средства их получения. Такова формальная арифметика, разработанная итальянским ма- тематиком Дж. Пеано, теория групп и т.д. Среди формальных те- орий выделяют теории, содержание которых представлено на специально созданном символическом языке и все заданные до- пустимые преобразования - это преобразования одних последо- вательностей символов в другие. Такие теории называют исчисле- ниями. Мы рассмотрим исчисление высказываний и исчисление пре- дикатов. Иногда применяют более широкое понятие — формаль- ная система. Формальные системы - системы операций над объектами, по- нимаемыми как последовательности символов, т. е. как слова в фиксированных алфавитах [19]. Это знаковая система, создавае- мая с использованием процесса образования всех синтаксически правильных символических выражений из букв алфавита систе- мы - языка, т.е. слов, формул и процесса вывода потенциально значимых (т.е. истинных) формул [15]. Термин «формальный» подчеркивает отсутствие содержа- тельной части. Формальной системой является теория алгорит- мов. Аксиомами считаются исходные данные, а их преобразова- ния задаются программой. Другим примером формальной систе- мы являются так называемые формальные грамматики, которые описывают строение искусственных и естественных языков. Большое значение в формальных системах имеют понятия перечислимости и разрешимости. Множество формул, определенных в логике высказываний, перечислимо. Это значит, что процедура порождения этих формул существует. Говорят, что множество разрешимо, если имеется процедура, которая по любому объекту дает ответ, принадлежит он этому множеству или нет. 317
Множество формул логики высказываний разрешимо, по- скольку каждую формулу можно проверить на тождественную истинность, например, построением таблицы истинности. Перечисляющая процедура порождения формул - это, на- пример, индуктивное их определение, рассмотренное нами выше, и эта процедура не детерминирована. Такое описание представляет собой формальную систему, которая однозначно описывает множество формул. Формальная система задается следующим образом [19]: 1) алфавитом; 2) процедурой получения множества формул или правильно построенных выражений на основе алфавита; 3) подмножеством формул, называемых аксиомами теории. Иногда выделяют отдельно логические и нелогические аксиомы; 4) правилами вывода теории. Правила вывода описывают от- ношения выводимости на множестве формул. Рассматривается выводимость формулы из формул и отдель- но выводимость из аксиом (в этом случае говорят, что это вывод из пустого множества формул - доказательство). Пусть G выводится из множества формул Fb F2,...,Fn. Формула G называется непосредственно выводимой из формул Fj, F2,..., Fn по правилу R. FkF2' Д-. Fn R или F)J f2 Fn |-RG. G Правило вывода может и не указываться. Вывод формулы В из формул Аь А2, ..., Ап — это последова- тельность формул Fb F2, ..., Fm, где Fm = В, а любая F от до Fm_j — либо аксиома, либо одна из исходных формул, либо непосре- дственно выводима из Fb ..., Fm.j по какому либо правилу вывода, это обозначают так: А], А2, ..., Ап [ В. Здесь Af — гипотезы, В - вывод: «из А1,А2,...,АП выводимо В». Такие выражения называют секвенциями. Пишется ]- В - выводи- мо В. Доказательство формулы в формальной теории - вывод из пустого множества формул, т.е. вывод, в котором в качестве исходных данных используются только аксиомы. Пишется JB - общезначимо В. Формула, для которой существует доказательство, называет- ся доказуемой или теоремой. 318
Присоединение формул к гипотезам не нарушает выводи- мости. Рассматриваются два основных типа доказательств: 1) доказательство по Гильберту - когда «много аксиом и мало правил вывода»; 2) доказательство по Генцену — когда «мало аксиом (всего одна: А -> А) и много правил вывода». В формальной теории существует два типа высказываний: 1) высказывание самой теории - это теоремы; 2) высказывание о теории - это свойства, которые формули- руются на языке, внешнем по отношению к теории (метаязыке). Такие высказывания называются метатеоремы. К формальным теориям предъявляют следующие требования: • непротиворечивость, т.е. невозможность ([ В) Л ([ В); • минимальность, т.е. минимальность средств задания систе- мы (1, 2, 3, 4); • адекватность: ([ В) => (JB), т.е. если В выводимо, то обще- значимо, где => метасимвол «влечет», «выводится»; • полнота: (JB) => (|-В), т.е. если В общезначимо, то выво- димо. 19.2. Исчисление высказываний Исчисление высказываний является простым примером фор- мальной аксиоматической теории [19]. Порождение тождествен- но-истинных высказываний и является основной задачей исчис- ления высказываний. Построим формальную аксиоматическую теорию исчисления высказываний в одном из возможных ее вариантов. 1. Алфавит исчисления высказываний состоит из: а) высказывательных переменных, которые будем обозначать прописными буквами X, Y, ..., Z; б) символов логических операций, из которых выберем импликацию -> и инверсию ~ (можно показать, что такая систе- ма соответствующих логических функций является функцио- нально полной); в) скобок (,). 2. Формулы исчисления высказываний: а) все переменные - формулы^ б) если А и В - формулы, то (А) и (А -» В) - тоже формулы. 319
Пример. Пусть А, В, С - формулы. _ Тогда: (С -> (А -> В)), (((А) -» В) -> (С)) - тоже формулы. Для сокращения записи опустим в формуле внешние скобки и те пары скобок, которые относятся к инверсии: С -> (А -> В), (А -> В) -> С. 3. Аксиомы исчисления высказываний. Аксиомы должны обеспечивать порождение всех тождествен- но истинных высказываний. Рассмотрим одну из возможных систем аксиом, содержащую всего три аксиомы: А1. А-> (В-> А); А2. (А-> (В-> С))-> ((А-> В)-> (А-> С)); АЗ. (В -> А) -> ((В -> А) -> В). По сути А1 - АЗ — схемы аксиом, поскольку они порождают бесконечное множество формул, учитывая правило подстановки. 4. Правила вывода: 1) правило подстановки. Если X - выводимая формула, содержащая букву А (обозна- чим X (А)), то выводима и формула X (В), получающаяся из X за- меной всех вхождений А на произвольную формулу: Х(А) Х(В)’ 2) правило заключения. Это правило называют Modus Ponens или, сокращенно, ш.р: А,А—>В В Строго говоря, в правилах вывода использованы также схемы формул (метаформулы). Рассмотрим аксиомы и убедимся в их тождественной истин- ности (тавтологичное™, еще говорят — общезначимости). 320
Al. A->(В-» A) =A v(B vA) =1; A2. (A —> (B —> C)) —>((A —> B) —>(A —>C) — =(AvBvC)->((AvB)vAvC) = = (AvBvC)v(ABvAvC)=ABCvABvAvC =C vC =1; АЗ. (B -» A) ->((B ->A) -»B) =(B vA) -»((B vA) vB) = = (B v A) v BA v В = BA vAvB=lvAvB=l. Таким образом, все аксиомы, как и следовало ожидать, тож- дественно истинны, хотя мы и говорили, что аксиомы недоказу- емы. Будем .считать, что мы использовали метадоказательства. Проиллюстрируем вывод формулы исключенного третьего А V А или А -> А, т.е. докажем J (А -> А) для любой формулы А. 1. Возьмем аксиому А2 и подставим формулу А -> А вместо В и формулу А вместо С в соответствии с правилом подстановки: (А-»(В —>С)) —>((А -»В) -»(А -»С)), т т т т А -»А А (А ->А) А Получим: (А -> ((А -> А) -> А)) -> ((А -> (А -> А)) -> (А -> А)). 2. Подставим в А1(А -> А) вместо В: А-»(В-»А), т А -» А. Получим: А -> ((А -> А) ->А). 3. Обратим внимание, что это выражение является левой частью импликации, полученной после первого шага, т.е. по пра- вилу т.р: А -»((А -> А) -» А,(А —>((А -> А) -> А)) ->((А ->(А -> А)) ->(А -> А)) ((А-»(А-> А))->(А->А)) получаем ((А -> (А -> А)) -> (А -> А)), т.е. выражение под чертой. 21-’78 321
4. Подставим теперь в А1 формулу А вместо В: А->(В-»А), т А • Получим А -> (А -> А). 5. Обратим внимание, что это выражение также является ле- вой частью выражения, полученного в результате третьего шага, т.е. по правилу т.р: А->(А-> А),((А->(А —> А)) ^(А-> А)) д _> А ’ получаем [- А -> А, что и требовалось доказать. Поскольку вывод формулы был получен из аксиом А1-А2, то J (А -> А), т.е. фор- мула (А -> А) общезначима. Аналогично могут быть выведены другие тождества логики высказываний. Более строго в исчислении высказываний [19]: 1) всякая выводимая (из пустой системы гипотез) формула исчисления высказываний тождественно истинна; 2) если формула А исчисления высказываний является тожде- ственно истинной, то она выводима. Формальную аксиоматическую теорию называют непротиво- речивой, если не существует формулы А, такой, что одновремен- но выводимы А и А. В математической логике доказывается, что исчисление выс- казываний непротиворечиво. Формальную аксиоматическую теорию называют полной, ес- ли добавление любой невыводимой формулы в качестве схемы аксиом приводит к противоречивой теории. Исчисление высказываний полно. 19.3. Исчисление предикатов В логике предикатов в отличие от логики высказываний нет эффективного способа распознавания общезначимости формул. Поэтому аксиоматический метод становится главным [19, 26]. 322
Алфавит и определение формулы исчисления предикатов сов- падают с логикой предикатов, за исключением того, что в качест- ве логических операций используем только операции . Аксиомы исчисления предикатов’, в качестве трех первых берут- ся, например, аксиомы исчисления высказываний; А1. А -» (В -» А); А2. (А -» (В -> С)) -» ((А -> В) -> (А -> С)); АЗ. (В -» А) -» ((В -» А) -» В). Добавляются «собственные» аксиомы: А4. VXj A (Xj) -> A(Xj), где формула А(х.) не содержит перемен- ной Xj. А5. А (х^) -> 3Xj A (Xj), где формула А(х.) не содержит перемен- ной Xj. Как и ранее, Al - А5 - тождественно истинные (общезначи- мые) формулы. Действительно, А1 - АЗ тождественно истинны ( метадоказа- тельство мы приводили выше). А4: Vx, А(х.) -> A (Xj) - замкнутая формула и ее частный случай Vx, А (\) -> А (\) при подстановке {(\, Xj)}, что тождественно истинно. А5: А (\) -> 3xj A (Xj) может быть представлена в виде А (х.) V 3Xj A (Xj) = А (\) V А (а), где а - функция Сколема. Частный случай этой формулы тождественно истинен: А (а) V А (а). Правила вывода. 1 п А,А —> В . 1. 11равило т.р:------. Нами уже использовалось и дока- В зывалось. 2. Правило связывания квантором общности: В-эА(х,) VxiA(xi)’ где формула В не содержит переменной Воспользуемся «мета- доказательством»: соответствующее множество дизъюнктов В V А (\), В, А (а) невыполнимо (а - функция Сколема). 21* 323
3. Правило связывания квантором существования: А(х() -» В 3xiA(xi)->B’ где формула В не содержит переменной \. Метадоказательство: множество дизъюнктов А (\) V В, А (а), В также невыполнимо. 4. Правило переименования связанной переменной. Связанную переменную формулы А можно заменить (в кван- торе и во всех вхождениях в области действия квантора) другой переменной, не являющейся свободной в А. Докажем общезначимость формулы, описывающей правило перестановки разноименных кванторов [24]: Зх Vy Р (х, у) -> Vy Зх Р (х, у). 1. [-VyP (х, у) -> Р (х, z) - по аксиоме 4. 2. [ Р(х, z) -> 3w Р (w, z) - по аксиоме 5. 3. J (А -> В, В -> С) -> (А -> С) - цепное заключение, которое доказывалось в логике высказываний: А->В В-»С. А—>С’ (Av В)(ВvC) ->(AvC); АВvВСvAvC = ВvB vA vC =1. 4. [- VyP (х, у) -> 3wP (w, z), где 3 применено к 1 и к 2. 5. [ Зх Vy Р (х, у) —> 3w Р (w, z) - по правилу вывода 3 из 4 — связывание квантором существования. 6. [- Зх Vy Р (х, у) -> Vz 3w Р (w, z) - правило вывода 2 из 5 - связывание квантором общности. 7. [ Зх Vy Р (х, у) -> Vy 3w Р (w, у) - правило вывода 4 из 6: пе- реименование z в у. 8. [ Зх Vy Р (х, у) -> Vy Зх Р (х, у) - правило вывода 4 из 7: пе- реименование w в х. Поскольку в качестве исходных формул использованы только аксиомы, то J [Зх Vy Р (х, у) -> Vy Зх Р (х, у)]. 324
19.4. Система натурного вывода Система натурного вывода - это доказательство по Генцену. Название «натурный» или «естественный» говорит о том, что та- кой тип рассуждений близок к человеческому (естественному) [32]. Правила вывода в этой формальной системе делятся на пра- вила введения и правила исключения логических операций. Рассмотрим основные правила введения (В): /о л \ Н=>А,Н=>В 1) введение конъюнкции: (ВЛ) -------, Н=>(АлВ) здесь Н — некоторое множество формул (гипотез); => - метасим- вол «влечет», «выводится». Читается так: «Если из Н выводится А и из Н выводится В, то из Н выводится конъюнкция А, В»; 2) введение дизъюнкции: (BV) Н=> А Н=>В H=>(AvB)’ H=>(AvB)’ 3) введение импликации: (В->) —1; Н=>(А->В) 4) введение инверсии: (В ) Н,А=>0 Н=>А ‘ Рассмотрим основные правила исключения (И): 5) исключение конъюнкции: (ИЛ) Н=>АлВ н=>в ’ 6) исключение дизъюнкции: (Hv) (Н => А у В);(Н,А =>С);(Н,В г»С) Н=>С 7) исключение импликации: (И->) Н => (А -> В) Н,А=>В ’ 0. /тл_\ (Н => А);(Н => А) Н=>А 8) исключение инверсии: (И ) -----—---------------. Н => О Н=> А Н => А л В Н=>А ’ 325
Кроме того, необходимы еще так называемые базисные правила: (Б1):-------; (Б2): Н,А=>А Первое базисное правило (Б1) означает, что всякий вывод, заключение которого совпадает с одной из гипотез (А), общезна- чим, т. е. J (Н, А => А), так как над чертой нет гипотез (пустое множество гипотез). Второе базисное правило (Б2) означает, что добавление гипо- тезы (В) к множеству гипотез не изменяет выводимости. Рассмотрим пример [32]. Пусть имеется множество формул Н: {F, F -» (Р v Q), Р -» С, Q -» С} = Н. Докажем, что из этого множества выводится формула С. 1) [Н, F -> (Р v Q)] => [F -> (Р v Q)]]: правило Б1 — гипотеза [F —> (Р v Q)] выводима; 2) Н => [F -> (Р V Q)]: объединение Н и F -> (Р V Q)] — это Н; 3)Н, F => (Р v Q)]: в соответствии с 2) и правилом исключе- ния импликации (И->): консеквент импликации выводим; 4) Н => (Р V Q): объединение Н и F — это Н: так как из F вы- водится (Р V Q), то и из Н тоже выводится (Р V Q); 5) (Н, Р -> С) => (Р -> С): правило Б1 - гипотеза (Р -э С); вы- водима; 6) Н => (Р -> С): объединение Н и(Р-эС)- это Н; 7) Н, Р => С: в соответствии с 6) и правилом исключения имп- ликации (И->): консеквент импликации выводим; 8) (Н, Q -> С) => (Q -> С): правило Б1 — гипотеза (Q -> С): вы- водима; 9) Н => (Q -> С): объединение Н и (Q -> С) - это Н; 10) Н, Q => С; в соответствии с 9) и правилом исключения импликации (И->): консеквент импликации выводим; 11) Н => С: в соответствии с 4), 7), 10) и правилом исключения дизъюнкции (Hv). Таким образом, мы доказали правило «разбо- ра случаев». 326
19.5. Понятие о математической лингвистике Язык - важнейшее средство человеческого общения — соци- альное средство хранения и передачи информации, одно из средств управления человеческим поведением. До начала XX в., говоря о языках, имели в виду только естест- венные языки (русский, английский и т.д.). В конце XX в. была предпринята попытка создать искусственный язык - эсперанто. Лингвистика - наука о языках, сводилась в основном к изуче- нию конкретных естественных языков, их классификации, выяс- нению сходств и различий между ними. Возникновение матема- тики, логико-философского исследования языка науки привели к появлению идеи структуралистского подхода к лингвистике [19]. Язык может быть описан математическими средствами, как преобразование некоторых абстрактных объектов — смыслов, в некоторые объекты - тексты, и обратно [29]. Преобразование объектов языка выглядит следующим об- разом: 1) переход от смыслов к синтаксическим структурам без ли- нейного порядка; 2) переход к линейным последовательностям слов; 3) получение цепочек звуков. Язык — частный случай знаковой системы. Наиболее хорошо исследованы знаковые системы, в которых знаками являются символы алфавитов, а последовательностями знаков - тексты. К таким знаковым системам относятся естест- венные языки, языки науки, а также сильно развившиеся за по- следние 60 лет языки программирования. Математическая лингвистика - математическая дисциплина, предметом которой является разработка формального аппарата для описания строения естественных и некоторых искусственных языков. Математическая лингвистика является ответвлением матема- тической логики. Наибольших успехов математическая лингвистика достигла в изучении синтаксиса, где за последние годы сложился специаль- ный математический аппарат — теория формальных языков и грам- матик. 327
19.6. Формальный язык Формальный язык в отличие от естественного, допускающего неоднозначность, двусмысленность, строится по математически строгим и точным правилам. Он применяется для описания ис- кусственных языков, например, языков программирования. Задается алфавит V = {а, Ь, с,..., х, у, z}, состоящий из букв или символов [4]. Иногда буквы нумеруют, как в алфавите русского языка, «а» - первая буква, «я» — последняя. Тогда Vk - множест- во слов из к букв. Цепочки Слово и е Vk называется еще цепочкой со. Длина цепочки обозначается |со|. При к = 0 получаем пустое слово, обозначаемое X. |Х| = 0. V* — множество всех слов - эквивалент универсума в теории множеств. Нетрудно видеть, что V* счетно. Пусть V = {а, Ь}. Будем нумеровать слова [4]: а = 1, b = 2, аа = 3 = (1 • 21 + 1 • 2°), ab = 4 = (1 • 21 + 2 • 2°), Ьа = 5 = (2 21 + 1 2°), bb = 6 = (2 • 21 + 2 • 2°) и т.д. Получилась так называемая лексико-графическая нумера- ция. Таким образом, по каждой цепочке можно получить ее но- мер. У пустой цепочки номер 0. По номеру можно получить це- почку в заданном алфавите. Пусть V = {а, Ь, с}. Получим цепочку № 20. Предварительно введем таблицу формирования номера в таком алфавите (табл. 88). Таблица 88 Формирование номера цепочки в V = {а, в, с} 27 9 3 1 а 162 18 6 2 ь 243 27 9 3 с з3 3’ З1 3° Тогда 20 = 9 + 9 + 2, т.е. (1 • З2 + 3 З1 + 2 3°), получаем цепоч- ку acb. 328
Подобным образом можно нумеровать и другие объекты. По- лучим, например, номер формулы логики высказываний А -> В. Алфавит: {А, В, -> тогда номер цепочки: (1-32 + 3-3* + + 2 • 3°) = 20. В этой цепочке старший (левый) разряд А, номер символа А в алфавите равен 1, вес его = З2; следующий символ номер сим- вола -> равен 2, вес его =3!; младший (правый) символ В, номер символа В равен 3, вес = 3°. Ясно, что не все номера представля- ют собой правильные формулы. Например, формула АВ - неправильная. Хотя в случае использования так называемой пре- фиксной формы записи (символ бинарной операции ставится перед символами переменных — это польская инверсная запись ПОЛ ИЗ) эта формула будет правильной. Получим номер автомата - распознавателя последователь- ности 0132 в алфавите {0, 1, 2, 3}: (1 • З3 + 2 • З2 + 4 • З1 + 3 • 3°) = 60. Получим номер модуса Barbara в виде aaal (1 - номер фигу- ры) в алфавите {a, i, е, о, 1, 2, 3, 4}, где буква - вид суждения, цифра - номер модуса: (1 • 83 + 1 • 82 + 1 81 + 5 8°) = 589. Над цепочками вводятся операции, например: • конкатенации 11 (сцепления), например, ab 11 be = abbc; • итерации * (повторения), например: a(bba)* = abbabbabba...; • инверсии ~ (реверса), например, abc = cba; • циклического сдвига fl (циклической перестановки симво- лов), например влево: Q (abc) = Ьса, или вправо: (abc) Q = cab; • перестановки групп символов (подцепочек данной цепоч- ки), например, 0 (ав (вс) (ав)) = ававвс; • замены одной подцепочки данной цепочки другой цепоч- кой: (abbc,bb => d) = adc. Ранее мы упоминали о генетических алгоритмах. В них це- почками представляются некоторые варианты решения комби- наторной задачи. Такие цепочки называют, как в генетике, хро- мосомами. В процессе «скрещивания» двух хромосом образуется новая хромосома, т. е. цепочка, состоящая из частей «родитель- ских» цепочек. В дальнейшем в процессе «эволюции» остаются или «выживают» только самые жизнеспособные, т.е. лучшие ва- рианты. Так происходит и в природе. Все мы носим эти цепочки хромосом с собой и, возможно, передадим их частички в буду- 329
щее. Не будем забывать заветы великого Дарвина: «Выживает сильнейший», в смысле - умнейший. Хотя, точнее, - тот, кто приспосабливается к изменениям. Операции над языками Формальный язык L в алфавите V - это некоторое подмноже- ство: V* L g V. Над языками, как над множествами, вводятся теоретико- множественные операции: объединение, пересечение, разность. На декартово произведение похоже соединение (конкатенация) язы- ков, например: L, = {па, ма, да}, L2 = {па, к}, тогда Lj• L2 = {папа, пак, мапа, мак, дапа, дак}. Очевидно, что L22= {па, к} • {па, к} = {папа, пак, кпа, кк}. Имеется также операция подстановки языка в язык [19]. Пусть заданы языки сумм: Lcm = {а, а + а, а + а + а, ...} и произведений Lnp = {а, аа, ааа,...}. Подстановка Lcm (а -> Lnp) дает язык сумм произведений Lcn = {аа, ааа,... аа + а,...}. Итерация языка — это объединение всех его степеней: L*=ULn. п=0 Определение языков — это их задание. Оно осуществляется сле- дующими способами: • перечислением всех правильных цепочек языка; • порождением всевозможных цепочек и их «фильтрацией» с помощью так называемых распознавателей, которые распознают требуемые цепочки; • заданием соответствующей формальной грамматики, опре- деляющей правила построения языка. Рассмотрим формальные грамматики. 19.7. Формальные грамматики и их свойства Одной из формальных систем является система подстановок, или полусистема Туэ (по имени норвержского математика Аксе- 330
ля Туэ) [19], определяемая алфавитом А и конечным множеством подстановок вида cti=>pi, где ab Pi — слова, возможно, и пустые в А; =>—символ подстановки, ранее понимаемый нами как «влечет», «выводится». В системе Туэ используются отношения вида понимаемые как пары подстановок: а, => pj (левая); Pi <= otj (правая). В полусистеме Туэ подстановка а( => р; интерпретируется как правило вывода R;. Используя эти полусистемы, американский математик Н. Хомский в 50-е годы XX в. сформировал и развил теорию формальных грамматик, являющихся их частным случа- ем [29]. Пусть V - непустое множество символов - алфавит (или словарь), и тем самым задано множество V всех конечных слов в алфавите V Формальный язык L в алфавите V — это произволь- ное подмножество V. Так, если V содержит буквы русского языка, знаки препинания, символы пробелов и т.д., то V - гипо- тетическое множество, включающее все произведения великой русской литературы (написанные и будущие). В качестве символов могут также использоваться слова, мате- матические знаки, геометрические образы и т.п. Языки задаются или определяются грамматикой — системой правил, порождающих все цепочки данного языка и только их. Формальная грамматика - формальная система, исчисление. Различают распознающие, порождающие и преобразующие формальные грамматики. Формальная грамматика называется распознающей* если для любой рассматриваемой цепочки она решает, является ли эта це- почка правильной в смысле данной грамматики. Формальная грамматика называется порождающей, если мо- жет построить любую правильную цепочку. 331
Формальная грамматика называется преобразующей, если для любой правильно построенной цепочки она строит ее отображе- ние в виде правильной цепочки. Рассмотрим класс порождающих формальных грамматик [29]. Порождающей формальной грамматикой G называют четвер- ку данных G = < Т, N, Р, S >, где Т — конечное непустое множество конечных терминальных (основных) символов; N — конечное непустое множество нетерминальных (вспомогательных) символов; Р — конечное непустое множество правил вывода (продукций); S — начальный символ; Т—терминальный словарь — набор исходных символов, из которых строятся цепочки, порождаемые грамматикой; N — нетерминальный словарь — набор вспомогательных символов, озна- чающих классы исходных символов. Т П N = 0. Конечное множество V = Т U N есть полный сло- варь грамматики G. Правило вывода — конечное непустое множество двухмест- | ных отношений вида <р => у, где <р и у — цепочки в словаре V, сим- вол => - «заменить на». Цепочка р непосредственно выводима из цепочки а в грамма- тике G (обозначение а н» Р; индекс G опускается, если понятно, G о какой грамматике идет речь), если а = а]<ра2 , Р = ot] уа2, {ф => у}. । Цепочка р выводима из а, если существует последователь-, ность Ео = a, Ej, Е2, ..., Еп = р, такая, что V; = 0, 1, ..., n—1 Е,гЕ,н. Эта последовательность называется выводом р из а, а п - дли- ной вывода. Выводимость р из а обозначается а => пр (если нужно указать длину вывода). Языком L(G), порождаемым грамматикой G, называется множество цепочек в терминальном словаре Т, выводимых из S, 332 а
где S - начальный символ, обозначающий класс языковых объ- ектов, для которых предназначена данная грамматика. Началь- ный символ называют целью грамматики или ее аксиомой. Грамматики G и G1 эквивалентны, если L(G)=L(G!). При описании естественного языка в терминах теории фор- мальных грамматик терминальные символы интерпретируются как слова или морфемы - мельчайшие осмысленные единицы языка (корни, суффиксы и т.п.), нетерминальные символы — как названия классов слов и словосочетаний (подлежащее, сказуе- мое, группа сказуемого и т.п.). Цепочка символов обычно ин- терпретируется как предложение естественного языка. Пример 1. Пусть грамматика задана следующим образом [29]: Т - {a, b}, N - {S, А, В}, S-S; Р = {1. S => аВ; 2.S => ЬА; 3. А => aS; 4. А => ЬАА; 5. А => а; 6.В => bS; 7. В => аВВ; 8. В => Ь}. Типичные выводы предложений: 1 8 1. S=>aB=>ab. В скобках над стрелками указан номер используемого прави- ла вывода. Вывод заканчивается, так как нет правила Р с левой частью, равной ab. 16 2 5 2. S => аВ =>abS =>abbA =>abba. 2 5 3.S=>bA=>ba. 2 4 5 5 4. S=>bA =>bbAA =>bbaA =>bbaa. Граф такой порождающей грамматики изображен на рис. 124. Здесь а и b — конечные вершины (терминальные). Пример 2. Пусть грамматика задана следующим образом: Т = {<студент>, <прилежный>, <ленивый>, <выполняет>, <не выполняет^ <домашнее задание>}; N = {<сказуемое>, <подлежащее>, <определение>, <допол- нение^ <группа подлежащего>, <группа сказуемого>, <предло- жение^; S = {<предложение>}. 333
Рис. 124. Граф порождающей грамматики Здесь и далее использована неакадемическая запись грамма- тики словами в угловых скобках. Это так называемые металинг- вистические формулы Бэкуса - Наура (БН-формы, или БНФ), I - символ «или». 1. < предложение >=>< группа подлежащего хгруппа сказуемого >; 2. < группа подлежащего >=><определение х подлежащее >; 3. < группа сказуемого >=><сказуемое хдополнение >; Р = <] 4. < определение >=хприлежный >| <ленивый >; 5. < подлежащее >=хстудент>; 6. <сказуемое >=><выполняет >| <не выполняете 7. < дополнение >=>< домашнее задание >. Можно вывести цепочку <прилежный> <студент> <выпол- няет> <домашнее задание>. Очевидно, что последняя цепочка вывода является заключи- тельной и представляет собой предложение естественного языка. Аналогично можно вывести цепочку <ленивый> <студент> <не выполняет> <домашнее задание>. Заметим, что в этом примере нетерминальными символами являются синтаксические кате- гории. Вывод можно также описать структурным деревом, изобра- женным на рис. 125. 334
[Предложение | 1 [Определение | 4. [Группа подлежащего] [Подлежащее | 5 [Прилежный] [Студент | [Группа сказуемого| | Дополнение | | Сказуемоё~| 6 | ВыполняеТ] | Домашнее задание ] 3 7 Рис. 125. Структурное дерево вывода предложения Грамматика может задаваться и синтаксическими диаграмма- ми Вирта, как в языке Паскаль, которые напоминают переключа- тельные схемы, где последовательное соединение указывает це- почку, а параллельное - варианты цепочек вместо символа |. Итак, формальные грамматики могут быть распознающими, порождающими, преобразующими. Кроме того, в теории фор- мальных грамматик различают четыре типа языков, порождае- мых четырьмя типами грамматик. Грамматики выделяют путем положения последовательно усиливающихся ограничений на систему правил Р. Общепринятой классификацией грамматик и порождаемых ими языков является иерархия Хомского, содержащая четыре ти- па грамматик [29]. Грамматика типа 0 — это грамматика, в которой не наклады- вается никаких ограничений на правила вывода ср => у/, где Ф и V могут быть любыми цепочками из V. Такая грамматика может быть реализована машиной Тьюринга. При этом состояние ма- шины Тьюринга соответствуют нетерминальным (вспомогатель- ным) символам, а символы на ленте — терминальным. Правила порождения цепочек описываются системой команд. Грамматика типа 1 — это грамматика, все правила которой имеют вид «Ар => асор, где со е Т U N, А - нетерминальный сим- вол. Цепочки аир- контекст правил. Они не изменяются при его применении. Таким образом, в грамматиках типа 1 отдельный терминальный символ А переходит в непустую цепочку со (А можно заменить на со) только в контексте аир. Грамматики типа 1 называют контекстными или контекстно-зависимыми. 335
Грамматика типа 2 — это грамматика, в которой допустимы лишь правила вида А => а, где а е N-, а - непустая цепочка из V. Грамматики типа 2 называют бесконтекстными или контекстно- свободными. Современные алгоритмические языки описывают- ся с помощью контекстно-свободных грамматик [36]. Грамматика типа 3 - имеет правила вида А => аВ либо А => Ь, где А,В е N; a,b е Т. Здесь А, В, а, b - одиночные символы (не цепочки) соответ- ствующих словарей. Языки, которые задаются грамматиками этого типа, называются автоматными или регулярными. При этом используется язык регулярных выражений (регу- лярный язык) вида: а(вва)*. Такой язык задается конечным автоматом (теорема Клини [19]). В большинстве алгоритмических языков выражения зада- ются с помощью конечных автоматов или регулярных выра- жений. Рассмотрим пример задания конечным автоматом регулярно- го языка [32]: X — {0, 1} — множество входных символов; Y = {S, А, В, qk} - множество внутренних состояний, qk - ко- нечное состояние, S — начальное состояние. Иногда рассматривают несколько конечных состояний и объ- единяют их во множество Е В данном случае F = {qk}. <р: Y • X н» Y функция переходов — недетерминированная: S0 = >А; SO = >qk; <р:- Al = =>В; В0 = *qk; В0 = =>А. Граф переходов конечного недетерминированного автомата показан на рис. 126. Соответствующая порождающая грамматика имеет вид N = {S, А, В}, Т={0, 1}, 336
S=>0; S => OA; A==>1B; B=>0; B=>0A. Соответствующий регулярный язык L = {0, (10)n, n > 0}: 0, 010, 01010,... Рис. 126. Граф переходов конечного недетерминированного автомата Теория формальных грамматик используется при построении компиляторов. Компилятор проводит разбор исходной програм- мы. При этом определяется, является ли заданная цепочка сим- волов правильно построенным предложением, и, если это так, то восстанавливается ее вид. Разбор или синтаксический анализ вы- полняется специальной программой — парсером (to parse - раз- бирать). Для решения этой задачи разработаны специальные программы, например, LEX и YACC. В операционной системе UNIX имеются стандартные прог- раммы LEX и GREP, они построены на основе теории регуляр- ных языков [36]. Программа LEX осуществляет лексический анализ текста - разбивку текста в соответствии с определенным набором регу- лярных выражений. Программа GREP выделяет образец по регулярному выраже- нию, т.е. проводит контекстный поиск в одном или нескольких файлах. При этом строится конечный автомат, на который пода- ются символы из входного потока символов. 22-278 337
В системах автоматического перевода с одного языка на дру- гой выявляются подлежащее, сказуемое, определение, дополне- ние; потом составляется соответствующее предложение по пра- вилам требуемого языка. В настоящее время в компьютерах применяются переводчики типа Promt, Magic Gooddy, Socrat Personal. Кроме того, использу- ются и простые словари типа .Context, Socrat Dictionary, Мульти- Леке. Представление с помощью формальных грамматик лингвис- тических знаний является одной из моделей представления зна- ний вообще, используемых в такой области, как системы с эле- ментами искусственного интеллекта. Следует отметить, что зна- ния отличаются от данных, например, тем, что данные содержа- тельно интерпретируются лишь соответствующей программой ЭВМ, а в знаниях возможность содержательной интерпретации всегда присутствует [29]. Программно-аппаратная часть систем, обеспечивающих интерфейс с пользователем на естественном или близком к естественному языке, реализуется лингвистичес- ким процессором, задача которого - прямой и обратный перевод естественно-языковых текстов на формальный язык внутреннего представления, с которым работает ЭВМ. В Японии некоторые фирмы уже приступили к продаже бы- товых «говорящих» роботов, которые могут общаться с хозяином. В лингвистическом процессоре выделяют декларативную и процедурную части. Первая содержит описание словарей, вто- рая — алгоритм анализа и синтеза естественно-языковых текстов. Логическими моделями представления знаний являются уже известные нам исчисления высказываний и предикатов. Основой формализации семантических (смысловых) знаний о некоторой предметной области являются семантические сети [29]. Семантическая сеть - ориентированный граф, вершинам которого ставятся в соответствие конкретные объекты, а дугам — семантические отношения между ними. Метки вершин имеют ссылочный характер и представляют собой некоторые имена. В роли имен могут выступать, например, слова естественного язы- ка. Метки дуг обозначают элементы множества отношений. Кро- ме того, для представления знаний используются фреймы, кото- рые чаще всего определяют как структуру данных для представле- ния стереотипных ситуаций. 338
19.8. Теоремы Гёделя В математической логике доказывается, что исчисление пре- дикатов непротиворечиво, т.е. в нем невозможно одновременно вывести А(н А), и А(н А). Кроме того, в силу теоремы Гёделя о полноте исчисления предикатов общезначимая формула выводи- ма в исчислении предикатов. Рассмотренное исчисление предикатов - исчисление преди- катов первого порядка. В исчислениях второго порядка возмож- ны кванторы по предикатам, т.е. выражения вида VP (Р (х)), или по функциям. Итак, множество всех истинных высказываний логики вы- сказываний перечислимо и разрешимо. Множество всех истин- ных высказываний логики предикатов перечислимо (ввиду его полноты), но неразрешимо (ввиду бесконечности предметной области). В качестве еще одной формальной теории в математической логике рассматривается формальная арифметика, предложенная итальянским математиком Джузепйе Пеано (1858 - 1932) [26]. Пеано ввел символы и операции е, U, А и впервые излагал логи- ку как математическую дисциплину. Впервые попытка сведения математики к логике была предпринята немецким математиком и логиком Готтлобом Фреге (1848 - 1925). Это он определил мно- жество как объем понятия. Он писал: «Арифметика есть часть ло- гики и не должна заимствовать ни у опыта, ни у созерцания ни- каких основ доказательств». Знаменитый парадокс о множестве всех множеств — это противоречие в системе Фреге, выявленное Бертраном Расселом. К. Гёдель (р. 1906) доказал, что любая формальная теория Т, содержащая формальную арифметику, неполна: в ней существует замкнутая формула F, такая, что F истинно, но ни F, ни F невы- водимы в Т. В соответствии со знаменитой теоремой Гёделя о неполноте для любой непротиворечивой формальной теории Т, содержащей формальную арифметику, формула, выражающая непротиворечивость Т, недоказуема в Т. Таким образом, арифметика и теория чисел являются неакси- матизируемыми теориями, а множество всех истинных высказы- ваний арифметики неперечислимо. 22* 339
Теоремы Гёделя имеют важное методологическое значение [19]. Оказывается, для достаточно богатых математических теорий не существует адекватных формализаций. Правда, любую неполную теорию Т можно расширить, добавив к ней в качестве аксиомы истинную, но невыводимую в Т формулу, однако новая теория также будет неполна. Кроме того, невозможно исследо- вать метасвойства теории средствами самой формальной теории, т.е. всякая метатеория Т для того, чтобы иметь возможность дока- зывать хотя бы непротиворечивость, должна быть богаче Т [19]. Таким образом, под сомнение берется сам подход построения математики как некоторой фиксированной совокупности средств, которые можно было бы объявить единственно закон- ными и с их помощью строить метатеории любых теорий. Но это вовсе не крах формального подхода. Наличие неразрешимых проблем не говорит о том, что конструктивный подход неприго- ден, если он чего-то и не может, то лишь потому, что этого не мо- жет никто [19]. Невозможность полной формализации содержательно опре- деленных теорий — это не недостаток концепции, а объективный факт, неустранимый никакой концепцией. Невозможность адекватной формализации теории означает, что надо либо искать формализуемые ее фрагменты, либо стро- ить более сильную формальную теорию, которая, правда, снова будет неполна, но, быть может, будет содержать всю исходную теорию [19]. 20. Неклассические логики 20.1. Современные модальные логики Рассмотренная выше логика называется классической. С на- чала XX в. развиваются неклассические логики. Таковы, напри- мер, модальные логики. В модальных логиках связь между субъ- ектом и предикатом или ослабляется, или усиливается. Алетическая модальность — модальность возможности — вы- деляет необходимость, возможность. Еще у Аристотеля встреча- ется выражение: «Завтра необходимо будет морское сражение». Применяются, например, обозначения: ±F — необходимо F; OF- возможно F; 340
±F = 0_F - необходимо F — не возможно не F; OF = ±F = - возможно - не необходимо не F. Деонтическая модальность — обязательность, разрешение или запрещение (О, 3, Р). На этой модальности основана логика норм. Норма, соответ- ствующая объективной необходимости общественного развития, считается нормативно истинной [5]. Связь между О, 3, Р выглядит так [5]: РА Не разрешено не А; ОА^ Обязательно А; ЗА Запрещено не А; РА Не разрешено А; ЗА->- Запрещено А; ОА Обязательно не А; ОА Не обязательно не А; РА—> Разрешено А; ЗА Не запрещено А. Например, разрешено употребление пива лицам старше 18 лет (не в общественных местах). Запрещено употребление нарко- тических веществ. Обязательно соблюдение законов. Эписпгемическая. логика рассматривает доказуемые, опровер- жимые, проблематичные суждения. Логика знания и веры использует выражения типа: Верит (а) А - истинно, если индивид а верит в формулу А. Многозначные логики [32]. Используют изученный нами ранее математический аппарат многозначных переключательных функций. Впервые многозначность предложил польский математик Ян Лукасевич (1878 - 1956). Но еще в 1910 г. русский логик Н.А. Васильев [36] разработал «воображаемую логику», в которой суждения могут быть не только утвердительными и отрицатель- ными, но и акцидентальными. Если акцидентальное суждение истинно, то и утвердительное, и отрицательное суждения явля- ются ложными. Введем следующие обозначения: 341
1) необходимость («истинно») - обозначим 2 или ±; 2) невозможность («ложно») - обозначим 0; 3) возможность («нейтрально») - обозначим 1 или 0. Рассмотрим отрицание в системе Лукасевича (табл. 89). Ясно, что закон исключенного третьего не выполняется: 1 V 1 2 (табл. 90). Таблица 89 Отрицание в системе Лукасевича F F 0 2 1 1 2 0 Таблица 90 Таблица истинности IFnOF F ±F OF 0 0 0 1 0 2 2 2 2 Конъюнкция и дизъюнкция вычисляются так, как мы рас- сматривали в дискретной математике: А V В = max (А, В); А & В = min (А, В). Логика более чем с двумя значениями истинности может быть интерпретирована в современных информационных системах та- ким образом: • истинно R - подтверждено в базе данных; • ложно — R явно отрицается в базе данных; • не определено - ничего не сказано об R в базе данных. Иногда в базе данных может быть и противоречивая инфор- мация об R, но чаше всего это запрещено [32]. Однако имеется паранепротиворечивая логика, которая допускает противоречивую информацию. Имеется немонотонная логика, в которой новые данные могут отменить предыдущие выводы. Логика умолчаний формализует выполнимые, а не общезна- чимые рассуждения, т.е., при неполной информации получаем правдоподобное заключение. Логика с ограничениями учитывает ограниченность ресурсов системы по принципу: «Попробуй доказать X, пока не исчерпа- ешь ресурсов, а потом, если доказать не удалось, заключи, что X ложно». 342
Логика вопросов и ответов [38]. С суждениями тесно связана такая форма мышления, как вопрос. Вопросы - особая логичес- кая реальность. По утверждению английского философа Р. Кол- лингвуда, логика, обращающая внимание только на ответы и пренебрегающая вопросами, — ложная логика. Искусство зада- вать вопросы, вести мысль к правильному ответу - необходимый элемент логической культуры. И. Кант писал: «Умение ставить разумные вопросы есть уже важный и необходимый признак ума и проницательности...». Раздел логики, изучающий вопросы, называется эротетичес- кая или интеррогативная логика. В ней «единицей мысли» йысту- пает комплекс вопроса и ответа. Взаимодействие вопроса и отве- та — типичная форма диалога в общении между людьми. Поэто- му одной из важнейших функций вопроса нужно признать ком- муникативную функцию. Исключительно велика роль вопроса и как средства информационного поиска. Без вопроса нет и не мо- жет быть познания. Великая познавательная роль вопроса состо- ит в том, что он является звеном, связывающим познанное с не- познанным, мостиком, перекинутым от старого знания к новому. Вопрос - могучий стимулятор развития знания. Отношения че- ловека с окружающим миром могут быть представлены как свое- го рода диалог, в котором вопросы и ответы постоянно сменяют друг друга. Во второй половине XX в. актуализировались исследования природы вопроса в связи с использованием ЭВМ в так называе- мом диалоговом режиме. Вопрос - это форма мысли, в которой выражено требование уточнить или получить новую информа- цию на основе уже имеющейся. Логическая структура вопроса такова: 1) исходное знание; 2) требование дополнить или уточнить эту информацию, перейти от исходного к искомому знанию. Первая часть вопроса называ- ется его предпосылкой или базисом, а вторая - оператором во- проса. Корректный вопрос - это вопрос, предпосылкой которого является истинное и непротиворечивое знание. Корректный вопрос соответствует всем требованиям логики (определенность, точность, непротиворечивость, обоснованность). Ответ — это суждение, дающее информацию, запрашиваемую в вопросе. Основными функциями ответа являются: 1) снятие (уменьшение) неопределенности, заключенной в вопросе, или 343
2) указание на неправильную постановку вопроса. Ответ являет- ся правильным в том случае, если выраженное в нем суждение истинно и логически связано с поставленным вопросом. Многозначная логика возможных миров [32]. В этом случае ис- пользуется четыре градации истинности: необходимо истинно (3), нейтрально истинно (2), нейтрально ложно (1), необходимо лож- но (0). Получается четырехзначная логика (табл. 91). Таблица 91 Семантика возможных миров Истинно Ложно Не нейтрально Нейтрально Не нейтрально 3 2 1 0 Случайно истинно Необходимо ложно Необходимо истинно Случайно ложно ±И - необходимо истинно - то, что подтверждается в нашем мире и во всех возможных мирах; ±Л - необходимо ложно - то, что не подтверждается ни в од- ном из возможных миров. Пусть существуют мир X («наш») и возможный мир У. Тогда: • ложно и в X и в У - необходимо ложно; • ложно в X и истинно в У - случайно, но не необходимо ложно; • истинно в X и ложно в У - случайно, но не необходимо ис- тинно; • истинно и в X и в У - необходимо истинно. Тогда соответствующая таблица истинности имеет вид табл. 92. Таблица 92 Таблица истинности для двух миров X Y л' Л 0 1Л Л И 1 Л и Л 2 и и и 3 1И 344
Здесь 0 - необходимо истинно, 1 - случайно ложно, 2 - слу- чайно истинно, 3 - необходимо истинно. Отрицание в четырех- значной логике имеет вид табл. 93. Соотношение ±F и OF пред- ставлено в табл. 94. Таблица 93 Отрицание в четырехзначной логике Таблица 94 Таблица истинности ±F и OF 1F . 0F 0 0 0 1 0 3 2 0 3 3 3 3 F F 0 3 1 2 2 1 3 0 Дальнейшим развитием многозначности является п-значная логика Эмиля Поста (1897 - 1954), в которой п значений истин- ности. Рассмотрим отрицание в этой логике (табл. 95). Таблица 95 Отрицание в n-значной логике Поста (п - четное) X N*(x) N2(x) 1 2 п 2 3 п-1 п-1 п 2 п 1 1 N1 — первое отрицание — циклическое; N2 — второе отрицание — симметричное. Наконец, в бесконечнозначных логиках - бесконечное число градаций, т.е. п = <ю. Между двумя крайними значениями 0, 1 лежат промежуточ- ные значения. Абсолютная истина складывается из бесконечного количества относительных истин. Эта логика была предложена в 1930 г. Я. Лукасевичем и Альфредом Тарским (1902 - 1983) Временные логики (темпоральные) учитывают время. Исполь- зуют выражения: иногда (F), всегда (G) (в будущем или в прош- лом), часто (R) и никогда (Н). Например: 345
FA = GA (иногда A - не всегда A); RA = НА (часто A - не никогда A); GA = НА (всегда A — никогда не A); HA = GA (никогда A - всегда не A). Временные логики могут использовать выражения вида РА— «было А»; F* — «будет А»; А 1 В - «если А, то после этого В». Алгоритмическая логика. Академик В.М. Глушков разработал основы теории синтеза дискретных устройств (ДУ). Интересно, что после окончания аспирантуры в Москве он был назначен на преподавательскую должность в Пермский государственный университет, но там оказался невостребован по своему научному направлению. Он предложил алгоритмические алгебры (60-е годы XX в.) для доказательства правильности программ. Понятие об алгоритмической логике Ч. Хоара. Язык алгорит- мических логик сочетает язык описания программ и логический язык, что дает возможность выражать разнообразные свойства программ. Это программная, или динамическая, логика. Приме- няется для описания свойств частичной корректности программ. Использует выражения Р(Х1,Х2,...,ХП) {А(Х],Х2,-,хп)} Q(x„x2,...,xn) . (исходное состояние (программа заканчивает (заключительное состояние памяти) работу) памяти) Здесь Р, Q — логические формулы, а А - программа. Такая формула имеет следующий смысл: Если исходное сос- тояние памяти (исходное значение переменных хД х2°, ..., хп°) удовлетворяет условию Р и программа А завершает работу над хД х2°,..., хп°, то заключительное значение переменных удовлет- воряет условию Q. Верификация - доказательство правильности программ. Алго- ритмическая логика позволяет доказать правильность (непра- вильность) программ без перебора всевозможных вариантов их реализации на различных сочетаниях переменных. В [1] приводятся примеры языков алгоритмических логик, использующих высказывания вида: 346
{U}S{B} — «Если до исполнения оператора S будет выполне- но U, то после него будет В». Здесь U — предусловие, а В — постусловие. При анализе условных операторов программы, если ни при каких вариантах не реализуется один из его выходов, - фиксируется ошибка. При описании циклов, что является наибо- лее трудным, анализируются возможности выходов из них. Каждое состояние памяти, возникающее в ходе исполнения программы, — «возможный мир». Пути исполнения програм- мы - переходы между «мирами». В случае тотальной корректнос- ти программа обязательно завершается: ±В. Частичная коррект- ность: ОВ. Автоматическое доказательство правильности программ — за- дача до сих пор нерешенная. 20.2. Понятие о теории неопределенности Теория неопределенности возникла в связи с решением прак- тических вопросов принятия решений в условиях неопределен- ности. В последнее время все больше ученых склоняются к тому, что неопределенность - фундаментальный принцип, который следует принимать за аксиому. Мы знаем математические неопределенности типа ;0-оо;оо-оо;0°;оо°;1‘:0. Теорией неопределенности в математи- 0 00 ческом смысле занимался еще Э. Галуа. Физическая неопределенность, например, это неопределен- ность параметров электрона. В соответствии с принципом неоп- ределенности В. Гейзенберга чем точнее определяется импульс электрона, тем больше погрешность в координате, и наоборот: электрон в одно и то же время и волна, и частица. Неопределенность связана и с философским понятием сво- боды выбора. Если все предопределено, детерминировано, то где свобода выбора? В православии примером свободы выбора явля- ется, например, выбор Адама в Эдеме, предоставленный ему Соз- дателем. Имеется два основных типа неопределенности: 1) вероятностная, или стохастическая; 2) лингвистическая. 347
Первая обусловлена случайными факторами — отказами про- изводственного оборудования, перебоями с поставками комп- лектующих изделий и сырья, случайностью поведения конкурен- та и т.д. Вероятностная неопределенность формализуется теорией ве- роятности, математической статистикой, теорией массового об- служивания. Вторая связана с нечеткостью (расплывчатостью) целей и (или) ограничений. Она формализуется теорией нечетких мно- жеств, нечеткой логикой и нечеткими алгоритмами. Эти методы сегодня широко применяются в экономике для учета различных рисков. 20.3. Элементы теории нечетких множеств и нечеткая логика Нечеткая логика («fuzzy logic», расплывчатая, размытая, «пу- шистая логика») использует лингвистическую неопределенность и основана на теории нечетких множеств [29]. Впервые была предложена профессором компьютерных наук университета г. Беркли (США) Л. Заде в середине 60-х годов XX в. Обычное «четкое» множество имеет четкие границы в некотором универ- суме. Принадлежность элемента универсума к некоторому мно- жеству оценивается бинарно: «Да» или «Нет». Такая принадлеж- ность элемента х к множеству А на универсуме U может быть описана функцией принадлежности цА: А = {(х, цА(х))}, хе U, цА(х) е {0,1}. Здесь А задано как совокупность пар - «элемент—степень принадлежности к множеству», т. е. для обычного множества цА - это отображение элементов универсума U в бинарное множество {0, 1}:цА:и^{0, 1}. Нечеткое множество А в универсуме (пространстве) U задает- ся функцией принадлежности, отображающей универсум не в бинарное множество, а в интервал [0,1]. Тогда задание нечеткого множества выглядит так: А = {(х, цА(х))}, х е U, цА(х) е [0, 1], цА: U [0,1], 348
т. е. степень принадлежности элемента к множеству оценивается не скачком «либо 0, либо 1», а плавно, например: 0; 0,1; 0,4; 0,7; 0,9; 1. Функция принадлежности может задаваться формулой, графически — например, так, как указано на рис. 127. Рис. 127. Функции принадлежности: а — дискретная; б — плавная-кусочно-линейная; в — сигмоида В случае конечного обозримого множества применяют следу- ющую запись [41]: 0 0,1 0,3 0,5 0,8 ----1-------1----1------1--- 1 2 3 4 5 Это означает, что: • элемент 1 принадлежит к универсуму U со степенью 0, т.е. не принадлежит; • элемент 2 принадлежит к универсуму U со степенью 0,1; • элемент 3 принадлежит к универсуму U со степенью 0,3; • элемент 4 принадлежит к универсуму U со степенью 0,5; • элемент 5 принадлежит к универсуму (J со степенью 0,8. Знак + означает объединение элементов. Сам универсум U = l + 2 + 3 + 4 + 5. Множество пусто, если Vx е U цА(х) = 0, т.е. А = 0. Если Vx е U цА(х) = 1, то А = U. Два множества А и В равны, если цА = цв, т.е. А = В. Множество А включается в В, если цА< цв, т.е. Ас В. Множество А есть дополнение множества А, если цА = 1 - цА. Вводятся также двухместные теоретико-множественные опе- рации: Пересечение множеств А и В: ААВ = цАПВ = шт{цА; цв}. 349
Пример. 0 0,1 0,3 0,5 0,8 „ 1 0,9 0,5 0,4 0,2 — + — + — + — + — В=- +—+—+—+—; 12 3 4 5 1 2 3 4 5 0 0,1 0,3 0,4 0,2 -----1-------1--------1---------1--- 1 2 3 4 5 2. Объединение множеств A U В = цАоВ = max {цА; цв}. Пример. 0 0,1 0,3 0,5 0,8 „ 1 0,9 0,5 0,4 0,2 - + — + — + — + — В = - +—+—+—+—; 1 2 3 4 5 1 2 3 4 5 А . 1 0,9 0,5 0,5 0,8 AUB = - + — +—+—+—. 1 2 3 4 5 Этим операциям соответствуют нечеткие конъюнкция и дизъюнкция в нечеткой логике, где А и В - элементарные нечет- кие высказывания, а А V В - нечеткое составное высказывание «А или В», АлВ - нечеткое составное высказывание «А и В». Тог- да U - область рассуждения. Импликация в том виде, который используется в классичес- кой логике, не применяется. Чаще всего используют импликацию в виде: «Если А, то В, иначе С», при этом такое высказывание определяют через нечет- кое отношение на декартовом произведении множеств, т. е. (А • В) U (А • С). При этом X - область рассуждения для высказы- вания A, Y - область рассуждения для высказывания В, и в об- щем случае они разные. Если С не указано и универсум Y - облас- ти рассуждения для высказывания В, то получаем (А • В) U (А • Y) [41]. При этом.функция принадлежности пары определяется как минимум функций принадлежности элементов пары. Пусть X = 1 + 2; Y = 1 + 2; А ; В=-^+- 12 12 350
Тогда А • В = 0,5 (1,1) + 1 (1,2) + 0,5 (2,1) + 0,7 (2,2). Или в виде табл. 96: Таблица 96 Декартово произведение нечетких множеств А и В В 1 2 А 1 0,5 1 2 0,5 0,7 п Т 0 0,3 Получим А = —+ — 1 2 Тогда (А • Y) = 0 (1,1) + 0 (1,2) + 0,3 (2,1) + 0,3 (2,2). Или в ви- де табл. 97: 1 _ Таблица 97 Декартово произведение нечетких множеств А и Y Y 1 2 А 1 0 0 2 0,3 0,3 Очевидно, что универсум Y = у +-. В таком случае (А • В) U (А • Y) = 0,5 (1,1) + 1 (1,2) + 0,5 (2,1) + + 0,7 (2,2), т. е. в данном случае получили (А • В) U (А Y) = А • В. В теории нечетких множеств также вводится операция кон- центрации: Con (А) - возводит функцию принадлежности в квадрат. Деконцентрация (растяжение) Dil (А) - извлекает квадрат- ный корень из функции принадлежности. 351
Пример. А 0,6 0,7 ' ,АЧ 0,36 0,49 , А = — + —; Соп(А) =-----+----; 1 2 1 2 Dil(B)=^+2d. 1 2 12 Например, если А — «маленький», то Con (А) = «очень маленький». Если В — «хороший», то Dil (В) = «более или менее хороший». Вводятся также и алгебраические операции над нечеткими множествами: 1) алгебраическое произведение: А • В : цА . в = цА цв; 2) алгебраическая сумма: А ® В : цАФВ = цА + цв — цАцв. Рассмотрим пример применения нечеткой логики. Пусть не- четкие множества заданы графически на числовой (денежной) оси. Пусть П — нечеткое подмножество универсума X «Прибыль», 3 - нечеткое подмножество универсума У «Зарплата». Рассмот- рим три подмножества прибыли - малая (Мп), средняя (Сп), вы- сокая (Вп); три нечетких подмножества зарплаты - малая (М3), средняя (С3), высокая (В3) (рис. 128). Па Рис. 128. Нечеткие подмножества: П —прибыли; 3 — зарплаты 352
Пусть дано нечеткое высказывание: «Какая прибыль, такая и зарплата». Очевидно, что это не одно и то же с высказыванием «Какая зарплата, такая и прибыль». В отличие от «четкой» логики, где имеет место высказывание «Прибыль тогда и только тогда, ког- да зарплата» (эквиваленция П о 3). задается матрица нечеткого отношения R на декартовом произведении соответствующих мно- жеств П, 3 : П 3 = R. Получим табл. 98. В ней степени принадлеж- ности выбраны, например, путем опроса специалистов-экспертов. Таблица 98 Матрица нечеткого отношения «Какая прибыль, такая и зарплата» м3 с3 В3 Mn 0,7 0,2 0 Сп 0,2 0,7 0 Вц 0 0,2 0,7 Пусть предприятием получена некоторая прибыль (точка N на оси прибыли см. рис. 128), которая может быть представлена выражением 0 0 8 0.4 Мп Сп Вп Мы провели фаззификацию - по конкретному значению прибыли N получили нечеткое множество П, показанное на рис. 128 штриховкой по оси прибыли. Спрашивается, какая будет зарплата? Зарплата 3 определяет- ся как произведение нечеткого множества П на матрицу отноше- ния R: max(min(0 0,'7)+min(0,8 0,2) +min(0,4 -0)) Мд max(min(0 0,2) +min(0,8 0,7) +min(0,4 -0,2)) 4-*—---------------------------------------- c3 max(min(0 0) +min(0,8 0) +min(0,4 0,7)) 0,2 0,7 0,4 + м7 + с? + вГ 23-278 353
Полученный результат графически (штриховкой) представ- лен на рис. 128 (ось 3). Это нечеткая зарплата, нечеткое множе- ство 3. Но мы хотим четкую зарплату! Поэтому проводят так называемую дефаззификашпо, т.е. получение четкого значения параметра. Одним из способов дефаззификапии является опре- деление «центра тяжести» нечеткого множества (показанного на рис. 128 штриховкой). Таким образом, получаем довольно не- плохую зарплату. 20.4. Нечеткие алгоритмы В настоящее время рынок нечетких контроллеров, которые используются в системах с элементами искусственного интеллек- та и даже в стиральных машинах LG, оценивается миллиардами долларов [41]. Нечеткие алгоритмы реализуют сложные зависимости между нечеткими множествами, нечеткими высказываниями, а также и между так называемыми нечеткими числами. Нечеткий алгоритм — это последовательность нечетких инструкций. Инструкции классифицируются следующим обра- зом [41]: 1) назначающие, например, «х — высокий», «у — маленький»; 2) нечеткие высказывания, например, «Если X, то У иначе Z»; 3) безусловные активные, например, «немного увеличить х», «чуть левее г». Здесь могут добавляться и обычные «четкие» инструкции. Вначале может производиться фаззификация для получения нечетких множеств по точечным значениям. После получения результата может производиться дефаззи- фикация - получение точечных значений выходных перемен- ных. Разработаны специальные микропроцессоры, реализующие нечеткие алгоритмы. Управляющие устройства, основанные на нечеткой логике, называют контроллерами нечеткой логики. В них вместо точных зависимостей используют формализованные с помощью лингвистических переменных знания экспертов. В настоящее время разработаны специальные пакеты програм- много обеспечения, реализующие нечеткие алгоритмы, напри- мер FuzzyCalc.
ЛИТЕРАТУРА 1. Алешина Н.А. Логика и компьютер. Моделирование рассужде- ний и проверка правильности программ / Н.А. Алешина, П.И. Ани- сов. - М.: Наука, 1990. - 240 с. 2. Аляев Ю.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учеб.-справ, пособие / Ю.А. Апяев, О.А.Козлов. - М.: Финансы и статистика, 2004. - 320 с. 3. Аляев Ю.А. Практикум по алгоритмизации и программирова- нию на языке Паскаль: Учеб, пособие /Ю.А. Аляев, В.П. Гладков, О.А. Козлов. - М.: Финансы и статистика, 2004. - 528 с. 4. Белоусов А.И. Дискретная математика: Учебник для вузов / А.И. Белоусов, С.Б. Ткачев; под ред. В.С. Зарубина, А.П. Крищенко. - М.: Изд.-во МГТУ им. И.Э. Баумана, 2001. - 744 с. 5. Бочаров В.А. Основы логики. — М.: Логос, 1994. - 296 с. 6. Викентьев Л .Ф. Основы дискретных автоматов / Л. Ф. Викенть- ев, Ю.А. Аляев, В.Г. Некрасов - Пермь: Тип. ПВВКИУ, 1985. — 196 с. 7. Вьюкова Н.И. Систематический подход к программированию / Н.И. Вьюкова, В.А. Галатенко, А.Б. Ходулев; под ред. Ю.М. Байков- ского. - М.: Наука, 1988. - 208 с. 8. Гетманова А.Д. Учебник по логике. - М.: ЧеРО, 2000. - 304 с. 9. Горбатов В.А. Основы дискретной математики / Учеб, пособие для вузов. - М: Высшая школа, 1986. - 312 с. 10. Горбатов В.А. Фундаментальные основы дискретной матема- тики. Информационная математика: Учеб, пособие для вузов. — М.: Наука, 2000. - 540 с. 11. ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и сис- тем. Условные обозначения и правила выполнения. — М.: Издатель- ство стандартов, 1991. - 26 с. 12. Даль В. Толковый словарь живого великорусского языка: В 4 т. - Т. 1: А—3. - М.: ТЕРРА, 1994. - 800 с. 13. Дементьев В.А. Теория и синтез дискретных автоматов / В.А. Дементьев, Л.Н. Крылов, В.П. Осипов; под ред. В.А. Дементье- ва. - М.: МО СССР, 1979. - С. 7 - 33. 14. Дискретные устройства автоматизированных систем управле- ния /Под ред. ГН. Тимонькина, В.С.Харченко. - М.: МО СССР, 1990.-486 с. 23: 355
15. Ивин А.А. Строгий мир логики. - М.: Педагогика, 1988. - 154 с. 16. Ивлев Ю.В. Логика: Учебник для вузов. - М.: Логос, 2001. - 272 с. 17. Коган Т.И. Дискретные устройства (автоматы). - Пермь: Тип. ПВВКИУ, 1985.- 208 с. 18. Коршунов Ю.М. Математические основы к