Текст
                    \


А.Д.ЗАКРЕВСКИЙ ЛОГИЧЕСКИЙ СИНТЕЗ КАСКАДНЫХ СХЕМ МОСКВА «НАУКА» л i^ ГЛАВНАЯ РЕДАКЦИЯ П^Ш ФИЗИКО-МАТЕМАТИЧЕСКОЙ ЛИТЕРАТУРЫ ИГТЭД 1981 ISSy
32.812 3 20 УДК 62-50 Логический синтез каскадных схем. Закревский А.Д.— М.: Наука. Главная редакция физико-математической литературы, 1981.— 416 с. """... Книга посвящена важным проблемам современной вычислительной техники. Излагаютсявопросы логического проектирования каскадных схем (в частности,- программируемых логических матриц) — широкого класса дискретных устройств, порожденного технологией больших интегральных схем. Описываются эффективные методы решения разнообразных задач анализа и синтеза этих устройств. В их основе лежат матричное представление структуры устройств и векторно-матричная интерпретация некоторых разделов булевой алгебры. Особое внимание уделяется реализации предлагаемых алгоритмов на ЭВМ. Книга предназначена для специалистов в области вычислительной техники, дискретной математики и лиц, интересующихся использованием ЭВМ для решения логических задач. Илл. 97. 30501—111 ».„л#, па ,„лллллллЛ © Издательство «Наука», гез/пох Я4 КБ-2-44-81. 1502000000 Главная редакция VDo\y £)-oi физико-математической литературы. 1991
ОГЛАВЛЕНИЕ Предисловие 7 Глава 1. Модели электронных матричных схем 11 1. Электронные матричные схемы 11 Вентильные сетки (11). Структурные и функциональные булевы матрицы (12). Вентильные матричные схемы (13). Транзисторные матричные схемы (15). Каскадные схемы и программируемые логические матрицы (18) 2. Булевы функции и их матричные представления ... 21 Булевы функции и их простейшие формы (21). Элементарные булевы функции и алгебраические формы (24). Дизъюнктивные нормальные формы (26). Система булевых функций и ее представление булевыми матрицами (28). Интервальные формы систем булевых функций (29). 3. Матричные операторы 31 Уравнения для р-схем (31). Учет неопределенности в информационных матрицах (33). Обобщение законов де Моргана (35). Уравнения для т-схем (36). Безызбыточность матричных схем (39). Упрощенные схемные изображения (42). 4. Правильные цепочки 44 Образование правильных цепочек (44). Преобразования де Моргана (44). Эквивалентные преобразования правильных цепочек. (46). Универсальность правильных цепочек (50). Глава 2. Методы комбинаторного поиска 52 5. Комбинаторный поиск 52 Полный перебор (52). Дерево поиска (53). Методы комбинаторного поиска (56). Анализ троичной матрицы на вырожденность (59). 6. Задачи о покрытии множеств 64 Нахождение всех покрытий множества (64). Нахождение кратчайшего покрытия (67). Демонстрация алгоритма (70).
ОГЛАВЛЕНИЕ 7. Поиск минимальных разбиений 74 Задача о раскраске графа (74). Метод последовательной раскраски (75). Пример (77). Метод конденсации (79). Демонстрация метода (82). 8. Приближенные методы 84 Стратегии поиска оптимального решения (84). Поиск приближений (89). Разбиение системы функций (92). а в а 3. Теория элементарных матричных схем 9. Исследование уравнений элементарных матричных схем Задача моделирования (97). Задача анализа (98). Задача синтеза (104). 10. Задачи диагностики Сравнение матричных операторов (107). Отображение интервалов (111). Задача диагностики для р-схемы (113). Пример (115). Приближенный метод (118). Диагностика неисправностей в т-схе- мах (119). 11. Нахождение минимального дизъюнктивного базиса Минимальный дизъюнктивный базис для матрицы У и ее кратчайшее минорное покрытие^ (121). Прямой метод нахождения кратчайшего минорного покрытия (123). Редуцирование матрицы У (126). Комбинирование методов (130). Заключительные замечания (134). 12. Задача о кодировании О перекодировании входных булевых векторов. (135). Нахождение минимального диагностического теста (137). Обобщение задачи о минимальном тесте (142). Поиск минимальной троичной кодирующей матрицы (144). 13. Задача о генерировании Задача о кратчайшем покрытии булевой матрицы парными минорами (148). Точный метод (149). Приближенный метод (151). а в а 4. Минимизация ДНФ булевой функции 155 14. Классические методы минимизации булевых функций 155 Реализация монотонных булевых функций (155). Задача минимизации ДНФ (158). Метод Квайна — МакК ласки (160). Метод Б лека — Порецкого (165). 15. Сжатие булевой матрицы 168 Определяющие элементы и обязательные интервалы (168). Допустимые интервалы как элементы крат- 97 97 107 121 135 148
ОГЛАВЛЕНИЕ 5 чайшего покрытия (172). Пример (175). Ветвящиеся процессы конструирования интервальных покрытий (177). 16. Методы сканирования булева пространства .... 179 Метод минимального соседства (180). Представление булевой функции на гиперкубе и его двумерной развертке (184). Визуальный метод минимизации булевых функций (189). 17. Упрощение троичных матриц 191 Устранение избыточности (191). Нахождение обязательных строк (194). Построение допустимых совокупностей максимальных интервалов (197). Пример (199). Матрица простых совокупностей (202). 18. Оптимальная реализация слабо определенных булевых функций 206 Частичные и слабо определенные булевы функции (206). Нахождение кратчайшей ДНФ. слабо определенной булевой функции (207). Метод конкурирующих интервалов (211). Пример (213). Глава 5. Синтез программируемых логических матриц . . 218 19. Оптимизация ПЛМ по входу • 218 Непосредственная реализация системы булевых функций (218). Классификация аргументов частичных функций (220). Минимизация числа аргументов в реализующей системе (222). Сокращение числа транзисторов (224). Минимизация числа литералов (226). Обобщение метода на случай троичных информационных матриц (230). 20. Минимизация системы булевых функций 233 Нахождение кратчайшей ДНФ системы булевых функций (233). Пример (235). Метод выделения интервальных миноров (238). Поиск приближений к оптимальному решению (241). 21. Синтез ПЛМ с заданной выходной матрицей .... 247 Постановка задачи (247). Синтез «от входа» (248). Синтез «от выхода» (251). Метод конструирования пересекающихся интервалов (255). 22. Диагностирование ПЛМ 259 Содержательные постановки задач (259). К диагностике неисправностей в первом ярусе ПЛМ (262). Проверка ПЛМ, реализующей одну ДНФ (264). Проверка реализации системы ДНФ (269). Об универсальном проверяющем тесте (274). Глава 6. Многоярусные комбинационные сети 279 23. Моделирование и анализ 279
ОГЛАВЛЕНИЕ Модели многоярусных схем (279). Исследование правильных цепочек (282). Анализ оператора Bv (285). Анализ оператора Tw (289). Методы аппроксимации отображений (292). 24. Декомпозиционные методы синтеза в базисе эле- lb ментарных матричных схем 293 £ ^ ! Метод стандартной декомпозиции (293). Парал- Т лельная декомпозиция «редких» матриц (296). Комбинированная декомпозиция (300). Метод матричной факторизации (303). 25. Синтез одноярусных сетей из ПЛМ 310 Методы стандартной декомпозиции (310). Сокращение числа ПЛМ (314). Декомпозиция ПЛМ с короткими термами (318). Реализация системы слабо определенных булевых функций (319). 26. Синтез многоярусных сетей из ПЛМ 329 Декомпозиция ПЛМ, реализующей булевы функци и поэлементно (330). Декомпозиция ПЛМ, реализующей булевы функции на ортогональных интервалах (324). Метод тождественных отображений в пространстве промежуточных переменных (341). Корректировка метода (359). Итерационные методы декомпозиции(353). лава 7. Реализация автоматов с памятью 358 27. Элементы теории последовательностных схем . . . 358 Схемы комбинационные и последовательностные (358). Дискретные устройства и автоматы (359). Представления автоматов (363). Отношение реализации (366). 28. Секвенциальные автоматы 368 Системы секвенций (368). Отношения между секвенциальными автоматами (372). Реализация секвенциальных автоматов на ПЛМ (376). Оптимизирующие преобразования (380). 29. Устойчивость поведения автоматов 385 Состязания между булевыми переменными (385). Метод соседнего кодирования (388). Критерий отсутствия опасных состязаний при прямых переходах (3?Ю). Нахождение минимальной кодирующей матрицы (393). Критерий устойчивости для секвенциальных автоматов (396). 30. Реализация состояний и переходов на ПЛМ .... 398 Реализация внутренних состояний (398). Реализация микропрограммных автоматов (404). Кодирование состояний микропрограммного автомата (408). Предметный указатель 411
ПРЕДИСЛОВИЕ Перспективы развития управляющей и вычислительной техники определяются сейчас прогрессом микроэлектронной технологии, вызвавшей к жизни широкую гамму больших интегральных схем. Частным, но весьма важным случаем последних являются программируемые логические матрицы, или ПЛМ, представляющие собой матричные структуры, содержащие сотни и тысячи транзисторов, размещенных на одном кристалле с площадью в доли квадратного сантиметра *). Логическое проектирование ПЛМ может в известной степени опираться на ставшие классическими методы совместной минимизации систем булевых функций в классе ДНФ, однако оно порождает и массу новых задач, требующих развития новых методов логического проектирования, особенно при разработке сетей из ПЛМ, практически сводящейся к решению сложных задач типа декомпозиции «больших» систем ДНФ на «малые». Определяющую роль играют при этом новые критерии оптимизации проектируемой схемы, в первую очередь — величина площади, на которой размещается схема. Новая микроэлектронная технология практически исключает практику натурных испытаний проектируемых схем с целью последовательного нахождения и устранения логических ошибок в схеме. Это ужесточает требования к надежности процесса проектирования и приводит к необходимости его автоматизации, возможной, как известно, лишь при достаточно высоком уровне формализации 2). 2) Баранове. И., Синев В. Н. Программируемые логические матрицы в цифровых системах (обзор).— Зарубежная радиоэлектроника, 1979, № 1. а)3акревский А. Д. Автоматизация логического синтеза дискретных устройств.— Кибернетика, 1975, № 4, с 10Q—
8 ПРЕДИСЛОВИЕ Дополнительным стимулом к ориентации на машинную реализацию процессов логического проектирования является их большая трудоемкость — следствие сложности проектируемых устройств и высоких требований к их качеству. Эти соображения послужили причиной разработки автором формального аппарата, направленного на решение задач логического проектирования программируемых логических матриц и схем более общего типа, названных каскадными схемами. Полученные при этом результаты составляют основное содержание предлагаемой вниманию читателя книги. В основу этого аппарата положены матричные структурные и функциональные модели исследуемых схем. Такой выбор представляется обоснованным, поскольку сами исследуемые объекты обладают матричной структурой. Кроме того, матричная форма оказывается удобной и при представлении моделей в ЭВМ, облегчая выполнение разнообразных операций над ними. Различные формы матричных моделей уже давно используются для представления структурных и функциональных свойств дискретных устройств. Достаточно упомянуть матричные модели вентильных и контактных схем *), матричные модели переходов между состояниями автомата 2>3), матричные модели булевых функций и комбинационных схем4), использование матричного аппарата при синтезе надежных дискретных устройств 6). Такие модели хорошо зарекомендовали себя как при развитии соответствующих формальных аппаратов логического анализа и синтеза, опирающихся на матричную алгебру, так и при разработке алгоритмов, реализуемых на ЭВМ в). *) Гаврилов М.А. Теория релейно-контактных схем.— М. Изд-во АН СССР, 1950. 2) Л а з а р е в В. Г., П и й л ь Е. И. Синтез управляющих автоматов.— М.: Энергия, 1970. 3) Мелихов А. Н. Ориентированные графы и конечные автоматы.— М.: Наука, 1971. Ы 4) Миллер Р. Теория переключательных схем. Том 1.— М.: Наука, 1971. ?) Сагалович Ю.Л. Кодирование состояний и надежность автоматов.— М.: Связь, 1975. () Закревский А. Д. Алгоритмы синтеза дискретных автоматов,— М,: Наука, 1971,
Предисловие О Естественно, что появление программируемых логических матриц инициировало разработку серии «матричных» методов их анализа и синтеза, предложенных практически одновременно рядом исследователей, усмотревших в ПЛМ благоприятную точку приложения и конкретизации своих прежних идей. Появились работы, в которых ПЛМ рассматривалась как определенная модификация однородной двумерной ереды *), как эффективное средство реализации асинхронного 2»3»4) и микропрограммного б»в) автоматов, как техническое воплощение системы булевых функций, заданных в дизъюнктивной нормальной форме 7). За пионерскими работами в указанных направлениях последовали десятки новых публикаций, однако время для их систематизации и обобщения, по-видимому, еще не наступило. Работая над настоящей книгой, автор уделил основное внимание оригинальным разработкам, преследующим цель более глубокой формализации и, в перспективе, автоматизации логического проектирования ПЛМ и каскадных схем более общего типа. Логическое проектирование понимается при этом в широком смысле — к нему относится не только логический синтез, но также ^ А ч а с о в а С. М., Бандман О. Л. Матричный метод синтеза комбинационных схем и логических преобразователей конечных автоматов.— Известия АН СССР. Техническая кибернетика,. 1975, № 6, с. 99-106. а) Якубайтис Э. А. Синтез структуры программируемой логической матрицы.— Автоматика и вычислительная техника, 1976, № 4.' 8)Лемберский И. Г., Фрицнович Г. Ф., Ча- п е н к о В. П. Кодирование внутренних состояний асинхронного конечного автомата с учетом его реализации на программируемой логической матрице.— Автоматика и вычислительная техника, 1976, № 4, с. 11—19. 4) Г о б з е м и с А. Ю., Даниленко О. С, Скляре- вич А. Н., Удалов В. И. Структурно-операторный метод технического диагноза ПЛМ.— В кн.: Микропроцессоры, т. 1.— Рига, 1977. ?) Баранов СИ. Автоматы на матрицах.—В кн.: Оптимизация в проектировании дискретных устройств.— Л.: ЛДНТП, 1976, с. 5—26. •) Баранов СИ., Синев В. Н. Синтез автоматов на программируемых логических матрицах.— Управляющие системы и машины, 1979, № 2. 7) ЗакревскийА.Д. Матричный аппарат логического анализа и синтеза дискретных устройств из ПЛМ.— Доклады АНБССР, 1977, № И, с. 991—994.
10 ПРЕДИСЛОВИЕ логический анализ и построение диагностических тестов для синтезированных схем. Одним из перспективных путей развития теории дискретных устройств является формулировка разнообразных задач логического проектирования в терминах логических уравнений и сведение процесса решения этих задач к поиску соответствующих корней *). Этот подход принят и в настоящей книге. Рассматриваемые схемы описываются логическими матричными уравнениями. Связываемые этими уравнениями формально однородные величины — булевы и троичные матрицы — представляют как структуру схем (структурные матрицы), так и перерабатываемую ими информацию (информационные матрицы). Решение конкретной задачи сводится при этом к нахождению корней некоторого уравнения, в котором одни величины считаются заданными, а другие требуется найти. Исследуемые задачи оказываются довольно сложными и усложняются еще более, когда требуется найти не произвольный корень решаемого уравнения, а достаточно хороший в каком-то смысле или даже наилучший. Такие корни удается отыскивать только с помощью специальных методов комбинаторного поиска, изложению которых отводится в книге значительное место. Добавим при этом, что хотя эти методы ориентированы на машинную реализацию (и многие из них реализованы к настоящему времени в рамках системы программирования ЛЯПАС-М 2), автор старался описывать их скорее на идейном уровне, ориентируясь при этом не на ЭВМ, а на читателя. Автор выражает глубокую благодарность первым читателям и критикам настоящей книги в ее рукописном варианте, чьи замечания позволили значительно улучшить ее качество: П. П. Пархоменко и сотрудникам лаборатории системного программирования и логического синтеза Института технической кибернетики АН БССР А. А. Уткину и А. С. Полякову. А. Закревский ^Закревский А. Д. Логические уравнения.— Минск: Наука и техника, 1975. 2) Закревский А. Д., Т о р о п о в Н. Р. Система программирования ЛЯПАС-М.— Минск. Наука и техника, 1978.
ГЛАВА 1 МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ 1. Электронные матричные схемы Вентильные сетки. Еще в сороковых годах нашего столетия в технике связи и телеуправления, а также в зарождавшейся тогда электронной вычислительной технике применялись стандартного вида схемы, известные под названием вентильных сеток. Вентилем (диодом, или выпрямителем) называется радиотехнический элемент;- обладающий следующим замечательным свойством: его сопротивление прямому прохождению тока (т. е. слева направо на рис. 1, где показано схематическое изо- ° И—° бражение вентиля) весьма мало, а об- Рис. 1. Вентиль, ратному прохождению (справа налево) — велико. В качестве грубого приближения можно принять прямое сопротивление равным нулю, а обратное — равным бесконечности. При исследовании свойств схем, содержащих вентили, такое приближение в большинстве случаев оправдывается и приводит к существенным ошибкам лишь тогда, когда в схеме существуют цепи, содержащие большое число последовательно или параллельно включенных вентилей. Основу вентильной сетки образуют два пересекающихся набора проводников, показанные на рис. 2 под прямым углом друг к другу. Будем называть эти проводники вертикальными и горизонтальными и положим, что число вертикальных проводников равно я, а число горизонтальных равно т (на рис. 2 гс = 5, а т = 4). Вертикальные проводники связаны непосредственна с входными полюсами схемы, обозначаемыми через хх, х^ . . ., ^горизонтальные — с выходными полюсами, обозначаемыми через Jfii У21 • • м Ут- Точки пересечения вертикальных проводников с горизонтальными образуют своеобразную матри-
12 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ цу размером т на п, и в некоторых из этих точек могут Находиться вентили, связывающие пересекающиеся проводники, пропуская ток с вертикального проводника на горизонтальный, т. е. с некоторого входного полюса на W WW WW w w ^w w w >я -4 -о Уз -4 ■y2 У* Рис. 2. Вентильная сетка. Рис. 3. Упрощенное изображение вентильной сетки. некоторый выходной. В изображенной на рис. 2 вентильной сетке ток с входного полюса хх может пройти на выходные полюсы уг и у4, но не может пройти на полюсы Уг* Уз- С полюса х2 ток проходит на полюсы у3 и у4, но не'может пройти на полюсы уг и у2 и т. д. Изображение вентильной сетки можно упростить, договорившись о стандартной ориентации вентилей в направлении с вертикального проводника на горизонтальный и о замене их прежних изображений на кружочки. Результат этого упрощения приведен на рис. 3. Структурные и функциональные булевы матрицы. Дальнейшее упрощение изображения вентильной сетки приводит нас к следующей булевой матрице, т. е. матрице, элементы которой принимают только значения 0 и 1 (такие матрицы называются также (0,1)-матрицами): я = Единичные элементы этой матрицы соответствуют тем точкам схемы, в которых находятся вентили, нулевые — тем точкам, где вентили отсутствуют. Другими словами, элемент 6f, находящийся в i-й строке и /-м столбце, принимает значение 1, если в схеме имеется вентиль, связываю- 0 0 1 1 1 0 0 0 1 1 1 0 0" 1 0 1.
1. ЭЛЕКТРОННЫЕ МАТРИЧНЫЕ СХЕМЫ 13 щий вертикальный проводник, идущий от входного полюса xj, с горизонтальным проводником, идущим к выходному полюсу yt. Если же такого вентиля в схеме нет, элемент b{ принимает значение 0. Матрица В содержит полную информацию о расположении вентилей в схеме, в связи с чем ее с полным основанием можно назвать структурной матрицей. В то же время матрица В описывает функциональные свойства рассматриваемой вентильной сетки. Действительно, В можно интерпретировать как матрицу проводимости: Ъ\ = 1, если двухполюсник, образованный из данной схемы выбором входного полюса xj и выходного полюса yt, является проводящим, и Ь\ = 0 в противном случае. Это позволяет считать матрицу В функциональной матрицей. Говоря о функциональных свойствах технического устройства, обычно имеют в виду некоторое функциональное соответствие между множеством входных воздействий, с одной стороны, и множеством выходных реакций устройства, с другой стороны. При этом каждому входному воздействию ставится в соответствие строго одна выходная реакция. В современных электронных схемах входными воздействиями и выходными реакциями обычно служат комбинации электрических потенциалов на входных и выходных полюсах соответственно. Как правило, полагается, что потенциал каждого полюса может принимать одно из двух значений, высокое или низкое. Придерживаясь сложившейся традиции, будем говорить, если потенциал некоторого полюса высокий, что этот полюс находится в состоянии 1, или что на него подано значение 1. Есди же потенциал полюса низкий, то это можно выразить так: полюс находится в состоянии 0, или на него подано значение 0*). Вентильные матричные схемы. Чтобы перейти к описанному способу подачи входных воздействий и снятия^реакций, дополним рассматриваемую вен- тильную ceTKyJсопротивлениями, как это показано на рис. 4. Полюс, к которому присоединены все сопротивления, имеет фиксированный низкий потенциал (значение *) Конечно, возможно и обратное соответствие: высокий по- тенпиал — 0, низкий — 1. Оно иногда используется, но не приводит к чему-либо существенно^новому.
14 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ 0), реализуемый обычно подключением полюса к «земле». Величина введенных сопротивлений значительно больше прямого сопротивления.вентилей и в то же время значительно меньше^ их обратного сопротивления. Поэтому *\г V 6 * жъг > < ~^°- *[* т » ( > U t 2. 3 4* Ч Рис. 4. Вентильная матричная схема. подача высокого потенциала (значения 1) на некоторый в^о^ной полюс, вызывая ток чед>ез непосредственно связанные с этим полюсом вентили ц через соотв^етстйу1р1г(йе сопротивления, приводит к появлению высоких потенциалов (значений 1) на определенных выходных полюсах. В этом случае матрица Я, задающая расположение вентилей в схеме, может интерпретироваться как матрица передачи единиц с входных полюсов на выходные: значение 1, поданное на входной полюс xj, передается на все выходные полюсы yiy для которых Af = 1. Назовем полученную схему в^таильпой матричной схемой. Схема описанного типа не всегда удобна, поскольку подача значения 1 на входные полюсы должна осуществляться их подключением к некоторому источнику высокого потенциала. На практике большее распространение получил другой тип вентильных матричных схем, иллюстрируемый на рис. 5. Здесь к источнику высокого потенциала подключается общий полюс всех сопротивлений, вентили ориентируются в обратном направлении, подача значения 0 на входные полюсы реализуется их замыканием на «землю», а подача значения 1 — отключением от «земли». Матрица В интерпретируется в этом случае как матрица передачи нулей: значение 0, поданное на входной полюс xj, проникает на все выходные полюсы *уи для которых
1. ЭЛЕКТРОННЫЕ МАТРИЧНЫЕ СХЕМЫ 15 Вентильные схемы обладают одним существенным недостатком: они ослабляют проходящие через них электрические сигналы, что приводит к размыванию используемых потенциальных уровней на выходе схемы и их взаимному сближению, т. е. уменьшению напряжения. Это W WW WW w WW w V IT •+sr, -•4 Рис. 5. Вентильная матричная схема с обратным представлением значений переменных. *г £" с *г г ^ ЪГ' °#з «г* Рис. 6. Р-схема. в сильной степени затрудняет построение каскадных, многоярусных вентильных схем. Транзисторные матричные схемы. В связи со сказанным выше более широкое распространение получили в настоящее время матричные схемы, в которых вентили заменены транзисторами — радиотехническими элементами, которые можно рассматривать как «управляемые вентили». В отличие от вентиля, транзистор обладает дополнительным, третьим, полюсом, через который и осуществляется управление. Подача на этот полюс высокого потенциала приводит к тому, что транзистор начинает вести себя, как вентиль, а подача низкого — делает транзистор непроводящим. На рис. 6 показана транзисторная матричная схема, подобная по структуре рассмотренной выше вентильной
16 ГЛ. 1. МОДЕЛИ ЭЛЕТРОННЫХ МАТРИЧНЫХ СХЕМ матричной схеме. Входные полюсы схемы связаны с управляющими входами транзисторов. Если на эти входы подается низкий потенциал (значение 0), то транзисторы будут находиться в «закрытом» состоянии, т. е. не будут пропускать ток. Подача высокого потенциала (значения 1) приводит к «открыванию» транзистора. Транзистор пропускает ток, растет напряжение на последовательно соединенном с ним сопротивлении и падает потенциал на соответствующем выходном полюсе — он получает значение 0. Матрица 0 1 В = 1 0 0 0 0 1 0 1 1 1 о о показывающая теперь расположение транзисторов в схеме, может интерпретироваться как матрица преобразования единиц в нули: значение 1, поданное на входной полюс xj, отображается значением 0 на тех выходных полюсах yh для которых Ъ\ = 1. Иначе говоря, выходной полюс yt рассматриваемой схемы получает значение 0, если существует элемент Ь\ матрицы В, обладающий значением 1, и на входной полюс Xj подано значение 1. В противном случае полюс yt принимает значение 1. Схему описанного типа назовем ^-схемой. Наряду с |3-схемами в современной электронной технике используются и такие матричные схемы, у которых каждый входной полюс соединен с двумя вертикальными проводниками, причем с одним непосредственно, а с другим через инвертор — радиотехнический элемент, изменяющий значение проходящего через него двоичного сигнала на дополнительное, т. е. 0 на 1, а 1 на 0. Такие схемы будем называть х-схемами. Структуру т-схемы также можно описать соответствующей булевой матрицей. Например, т-схема, изображенная на рис. 7, представляется булевой матрицей "0 1 1 0 0 01 в = 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0
1. ЭЛЕКТРОННЫЕ МАТРИЧНЫЕ СХЕМЫ 17 Однако более удобным оказывается представление т-схем троичными матрицами, элементы которых принимают наряду со значениями 0 и 1 также значение «—». с Oi Г *Г ш Г с -+У, ^У2 -«Уз d± Ув Рис. 7. т-схема. Разобьем элементы матрицы В на пары, каждая~~из которых соответствует пересечению некоторого горизонтального проводника с парой вертикальных, связанных с некоторым входным полюсом: В "01 10 00 00 01 10 10 00 10 00 00 01 10 10 00 Отметим, что среди четырех формально возможных комбинаций значений элементов в паре (0, 0, 0 1, 1 0 и 1 1) в матрицах схем данного типа могут встречаться лишь первые три. Четвертая комбинация 1 1 отвечает такому подключению транзисторов, при котором соответствующий выходной полюс получает значение 1 вне зависимости от значений на входных полюсах. Чтобы получить такую константу, незачем применять транзисторную матричную схему. ^Ограничимся поэтому рассмотрением трех пар значений 0 0, 01 и 1 Ои заменим их всюду в матрице В соотвеишвдка вд «яаи».&\я*1г'ш>лучив таким образом
18 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ И следующую троичную матрицу: г0 1 —" — О 1 Г = | 1 — 1 - - о 1 1 —. представляющую структуру схемы, изображенной на рис. 7. Функциональная интерпретация полученной троичной матрицы Т такова: выходной полюс yt приходит в состояние 0, если существует такой входной полюс Xj, который находится в состоянии 0, причем i[ = О, или находится в состоянии 1, причем i[ = 1. В противном случае полюс yt приходит в состояние 1. В дальнейшем мы будем пользоваться упрощенными изображениями транзисторных матричных схем, иллюстрируемыми на рис. 8. Прямоугольником слева здесь X 1 2 3 4 5 а) W Ш-Е -и/ -Н» 3 И>5 X 1 6 6 2 3 б) Рис. 8. Упрощенные изображения схем: а) Р-схема (см. рис. 6), б) т-схема (см. рис. 7). показан блок сопротивлений, подключенных одним концом к горизонтальным проводникам схемы, а другим — к источнику высокого потенциала (ранее эти сопротивления обозначались в схеме раздельно). Короткая жирная черточка, пересекающая линию проводника, изображает инвертор. Инверторы, показанные на выходе схемы, добавляются формально, облегчая логический анализ схемы, как это будет видно из последующего текста. Каскадные схемы и программируемые логические матрицы. Каскадными схемами принято называть такие логические схемы, элементы которых распределены по ярусам. При этом выходной по-
1. ЭЛЕКТРОННЫЕ МАТРИЧНЫЕ СХЕМЫ 19 люс элемента, попавшего в ярус с номером i, может быть непосредственно связан лишь с входными полюсами элементов, образующих ярус i + 1. Входные полюсы элементов первого яруса связываются с входными полюсами схемы е целом, а выходные полюсы последнего яруса образуют множество выходных полюсов схемы. Как р-схему, так и т-схему можно рассматривать как некоторую совокупность логических элементов, соединенных параллельно. Отсюда следует, что последовательное соединение транзисторных матричных схем приводит к структуре, которую" можно интерпретировать как каскадную схему. F?! РРДостаточно простым и в то же время широко известным примером такой структуры может служить схема, образованная^ парой последовательно соединенных транзисторных матричных схем, одна из которых, входная, является т-схемой, а другая, выходная,— р-схемой. ...Например, соединив последовательно т- и р-схемы, изображенные на рис. 8, мы получим схему, обладающую входными полюсами хх, x2j x3j промежуточными полюсами zx, z2, z3, z4, z5 и выходными полюсами уи у2, у3, У* Эта каскадная схема показана на рис. 9. Изображение т-схе- мы, образующей ее первый ярус, для удобства повернуто х 1 < J4 z б!б2бЗ и т t ь° / -HJ 1 У Рис. 9. Программируемая логическая матрица. if Ъ Ъ Ъ ^ if ^ z •г ^ iT Рис. 10. Заготовка для транзисторной матричной схемы. на 90°. Отметим в связи с этим условность терминов «вертикальный проводник» и «горизонтальный проводник», введенных ранее. Эти термины означают не более чем имена для проводников в матричной транзисторной схеме,
20 гл. 1. модели электронных матричных схем непосредственно связанных соответственно с входными и выходными полюсами схемы. Нетрудно определить реакцию этой схемы на любое входное воздействие, анализируя по очереди поведение со* ставляющих ее матричных схем. Например, рассматривая комбинацию 10 0 состояний входных полюсов (в этой комбинации полюс хг обладает значением 1, а полюсы х2 и х3 — значением 0), легко проследить за ее преобразованием в комбинацию 10 0 0 0 состояний промежуточных полюсов и в свою очередь за преобразованием этой последней комбинации в комбинацию 0 110 состояний выходных полюсов. Двухъярусные каскадные схемы рассмотренного типа получили широкое распространение в современной микроэлектронике, представляя собой частный, но важный случай больших интегральных схем (БИС). Эти схемы принято называть программируемыми логическими матрицами (ПЛМ) и вот почему. Современная технология про* изводства таких устройств основана на предварительном изготовлении так называемых заготовок, когда на одном кристалле площадью в доли квадратного сантиметра возникают матричные структуры, сплошь заполненные транзисторами (пример такой структуры показан на рис. 10), и в последующем удалении из этой структуры некоторых транзисторов путем разрушения соответствующих связей импульсом тока, пучком света, электронным лучом или химическим травлением. Вторую фазу этого процесса можно трактовать как вписывание нулей в структурную булеву матрицу, ее своеобразное программирование (если пользоваться языком технологов). Этим и объясняется установившееся название получаемых при этом схем — программируемых логических матриц (англ. programmable logic array — PLA). ^ ?ЩW При проектировании дискретных устройств обычно стремятся найти по возможности наиболее простую структуру, обладающую заданными функциональными свойствами. Критерием простоты с давних пор считалось число элементов в схеме, однако в новой, микроэлектронной технологии этот критерий потерял свое значение. На первый план^выходят такие критерии, как площадь матричной схемы, определяемая произведением числа строк в матрице на число ее столбцов, а также число полюсов схемы,"входных и выходных. Чем^менылих значе-
2. БУЛЕВЫ ФУНКЦИИ 21 ний этих величин удается достичь, тем лучше. Естественно, что смена критерия простоты не могла не повлечь за собой развитие новых методов проектирования. В настоящей книге мы ограничимся рассмотрением вопросов, связанных с логическим проектированием транзисторных матричных схем и состоящих из них более сложных образований. В связи с этим схемы будут рассматриваться на уровне их логических моделей: булевых и троичных матриц, систем логических уравнений и их разнообразных интерпретаций. 2. Булевы функ *ии и их матричные представления Булевы функции и их простейшие формы. Символы хг, х2, . . . хп, использованные выше для обозначения входных полюсов транзисторных матричных схем, удобно интерпретировать как некоторые булевы (двоичные) переменные, принимающие значение О или 1 и показывающие таким образом, в каких состояниях находятся одноименные полюсы. Упорядоченная совокупность этих переменных (хх, х2, . . ., хп) образует л-компонентный булев вектор х, который может принимать любое из 2П значений, задающих различные наборы состояний входных полюсов. Множество этих комбинаций, называемое булевым пространством переменных хъ х2, ... . . ., ж,1> обозначим через М. Аналогично, состояния выходных полюсов представляются значениями булевых переменных у1у у2у . . ., ут — компонент булева вектора у, и множество всех различных значений этого вектора образует булево пространство N. Транзисторная матрица реализует некоторое функциональное отображение множества М в множество N, находя для каждого элемента из М некоторый элемент из N. При этом каждая из компонент вектора у оказывается некоторой функцией f (хг, х2, . . ., хп) булевых переменных Xi, х2, .. ., хп, принимая определенное значение (0 или 1) для каждого набора значений этих компонент булева вектора х. Такая функция называется булевой. Простейшим, хотя и громоздким, способом задания булевой функции является использование табличной формы, в которой перечисляются все возможные наборы зна-
22 гл, i. модели электронных матричных схем чений аргументов и показываются (в правом столбце) соответствующие им значения функции. Например, табл. 1 задает булеву функцию /, принимающую значение 0 на наборе 0 0 0 {хг = 0, х2 = 0, х3 = 0), значение 1 — на наборе 0 0 1 (хх = О, х2 = 0, х3 = 1) и т. д. Таблица 1 Xi Хг Хз 0 0 0 0 0 1 0 10 0 11 10 0 • 1 0 1 '/■1.1 О 111 / (Xi,X2, Хз) 0 1 1 1 0 1 0 1 Представление функции / можно сжать, ограничившись перечислением элементов ее характеристического множества, т. е. тех элементов пространства Af, на которых функция / принимает значение 1. Это множество обозначается через М) или, если из контекста ясно, какая именно функция имеется в виду, через М1. Множество М1 удобно задавать как множество строк некоторой булевой матрицы, принимающей для рассматриваемого случая следующий вид: ГО 0 1] 0 10 0 11 10 1 [_1 1 1J (нумерация столбцов для простоты опущена, однако будем помнить, что они соответствуют переменным х1г х2, х3). Очевидно, что интерпретация такой матрицы как булевой функции не зависит от цорядка перечисления строк и не изменяется при добавлении в матрицу новых строк, если они совпадают с некоторыми из уже имеющихся в матрице.
2. БУЛЕВЫ ФУНКЦИИ 23 Представляемое матрицей характеристическое множество М1 рассматривается как неупорядоченное множество без повторений. Назовем две булевы матрицы эквивалентными, если множества их строк равны, т. е. для любой строки каждой из этих матриц найдется равная ей строка в другой матрице. Компактность представления характеристического множества М1 можно повысить, используя троичные векторы, компоненты которых могут принимать в качестве своих значений кроме символов 0 и 1 также символ «—». Будем при этом интерпретировать троичный вектор как совокупность всех таких булевых векторов, которые получаются из него всевозможными подстановками значений 0 и 1 вместо значения «—». Если в троичном векторе существует к значений «—», то он порождает таким образом 2* булевых векторов, образующих в булевом пространстве М интервал, минимальный элемент которого получается подстановкой вместо «—» нулей, максимальный — подстановкой единиц. Например, троичный вектор 1 1—0 — при такой интерпретации рассматривается как интервал пространства пяти булевых переменных, образованный элементами 1 100 0, 1 1 0 0 1, 1 1 1 00 и 1 1 1 0 1. Далее, введем в рассмотрение троичные матрицы, строками которых служат троичные векторы. Положим, что троичная матрица эквивалентна булевой матрице, получаемой из нее заменой каждой троичной строки на порождаемую ею совокупность булевых строк и последующим «приведением подобных», при котором устраняются повторения среди строк. Будем считать, что они представляют одну и ту же булеву функцию. Например, приведенная выше булева матрица оказывается эквивалентной троичной матрице [о 1 -_|> позволяющей, как видно, представить рассматриваемую булеву функцию /, т. е. ее характеристическое множество М1, значительно более компактно. Две троичные матрицы эквивалентны, если они эквивалентны одной и той же булевой матрице, т. е. если они представляют одну и ту же булеву функцию.
24 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ Может оказаться (обычно так и бывает), что для заданной булевой матрицы существует много эквивалентных ей различных троичных матриц, отличающихся друг от друга, в частности, числом строк. Представляет интерес найти среди них матрицу, минимальную по числу строк. Решение этой задачи в общем случае оказывается далеко не простым и будет рассматриваться ниже. Элементарные булевы функции и алгебраические формы. Познакомимся теперь с алгебраическим способом задания произвольных булевых функций, основанным на использовании небольшого числа простейших, так называемых элементарных булевых функций, введении вычисляющих их значения одноименных булевых операций и рассмотрении суперпозиций последних. За основные элементарные булевы функции и операции при этом принимаются отрицание, дизъюнкция и конъюнкция, за вспомогательные — дизъюнкция с исключением, эквиваленция и импликация. Определяя эти функции, будем использовать в качестве символов их аргументов, кроме хг, х& . . ., хп, также буквы р, q и г. Отрицанием называется одноместная (с одним аргументом) булева функция, значение которой всегда противоположно значению аргумента *). Оператором этой функции служит символ """"], который ставится перед аргументом, или символ , который ставится над аргументом: ~~1 р или р. Таким образом, ~~~|0 = 1, ~~]1 = 0 (или 0 = = 1,1 = 0). Двуместные (с двумя аргументами) булевы функции определяются табл. 2, содержащей имена функций и их обозначения, а также значения, принимаемые данными функциями на каждом из четырех наборов значений аргументов р и q. Из таблицы видно, что операции, вычисляющие значения всех этих функций, кроме импликации, являются коммутативными, т. е. вычисленные значения не изменяются при перестановке аргументов: pV q = q\/ p, pq = qp, (2.1) р © q = q © р, р ~ q = q ~ р. *) Эта функция называется также инверсией, а реализующая ее электронная схема — инвертором.
2. БУЛЕВЫ ФУНКЦИИ 25 Таблица 2 Аргумент р Аргумент q Дизъюнкция р V Я Конъюнкция р /\q, или pq Дизъюнкция с исключением р 0 q Эквиваленция р ~ q Импликация р —» q 1 # 0 0 11 0 10 1 0 111 0 0 0 1 0 110 10 0 1 110 1 Легко убедиться и в ассоциативности этих операций: (р V я) V г = р V (? V г), (р Л ?) Л г = Р Л (? Л г), (2.2) (р е ?) е г = р е (? е г), (р ~ ?) ~ г = р ~ (я ~ г)- Наличие данных свойств позволяет обобщить функции, введя соответствующие многоместные функции над множеством аргументов, образующих булев вектор х = = (#!, х2,. . ., хп). Нам потребуются две из них: многоместная дизъюнкция хх V х2 V ••• V хп и многоместная конъюнкция хг /\х2 /\ ... /\ хп. Первая из них принимает значение 1, если хотя бы один из аргументов имеет значение 1, вторая — если значением 1 обладают все аргументы; в противном случае рассматриваемая функция принимает значение 0. Другими словами, значение дизъюнкции равно максимальному из значений аргументов, значение конъюнкции — минимальному: хг V *2 V ••• V хп = max fo, х2, . . ., хп), xi Л хг Л ••• Л хп = min (хг, х2, . . ., хп). Данные функции удобно представлять ленные свертки вектора х: п ХХ V Х* V • • • V Хп = \/Хг i—1 п xiAxi/\---f\xn = A^i также как опреде- = VM. (2.4) = Л[х].
26 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ Наибольшее внимание мы будем уделять основным булевым операциям: отрицанию, дизъюнкции и конъюнкции. Эти операции часто называются операциями HE,*f ИЛИ и И соответственно. Они образуют так называемый булев базис, алгебраические выражения их суперпозиций называются булевыми формулами, и этими формулами можно представить любую булеву функцию. Ч*«'Н Действительно, любая булева функция может быть задана таблично, откуда легко перейти к представляющей ее булевой матрице, включающей те наборы значений аргументов, на которых функция принимает значение 1. Построим для каждого из этих наборов Элементарную конъюнкцию (т. е. многоместную конъюнкцию некоторых переменных и отрицаний других), включив в число ее аргументов переменные, обладающие в данном наборе значением 1, и отрицания переменных, обладающих в данном наборе значением 0. Дизъюнкция полученных таким образом элементарных конъюнкций будет представлять рассматриваемую булеву функцию. ^ Дизъюнктивные нормальные фор- м ы. Дизъюнкцию элементарных конъюнкций принято называть дизъюнктивной нормальной формой, или ДНФ. В данном случае, когда все элементарные конъюнкции оказываются полными, т. е. содержат символы всех переменных хг,х2, . . -,хп, мы имеем дело с совершенной'дизъюнктивной нормальной формой (СДНФ). £^* Подобно тому как булевой матрице, представляющей некоторую булеву J функцию, ставится в соответствие СДНФ этой функции, для эквивалентной троичной матрицы Р можно построить соответствующую ДНФ, включая в число аргументов г-й элементарной конъюнкции переменную Xj, если/?! = 1, ее отрицание %j, если pi = 0, и не включая ни xv ни xv если р\ = «—». Эта ДНФ будет представлять ту же булеву функцию, так как каждая элементарная конъюнкция принимает значение 1 на всех наборах значений булевых переменных, порождаемых соответствующей троичной строкой, и нигде более. Например, от булевой матрицы ""0 0 11 0 10 0 1 1 1 0 1 1 1 11
2, БУЛЕВЫ ФУНКЦИИ 27 задающей некоторую булеву функцию переменных хх, х2, xs, легко совершается переход к соответствующей СДНФ: а от эквивалентной троичной матрицы [-1] — к ДНФ х3 V Ххх^ Как видно, эта формула значительно короче и, следовательно, удобнее. Получение простейших ДНФ для заданной булевой функции представляет собой довольно сложную задачу, известную под названием задачи минимизации булевой функции (в классе дизъюнктивных нормальных форм). За критерий простоты при этом может быть принято общее число букв в формуле, и в этом случае говорят о поиске минимальной ДНФ. Нас больше будет интересовать другой критерий, а именно число элементарных конъюнкций в ДНФ. Дизъюнктивная нормальная форма, простейшая в этом смысле, называется кратчайшей. Задача нахождения кратчайшей ДНФ совпадает с задачей получения троичной матрицы, эквивалентной заданной и содержащей минимальное число строк. g$| Если значения некоторой булевой функции заданы на всех наборах значений аргументов, она называется полностью определенной (или всюду определенной) функцией. Наряду с такими функциями практический интерес представляют неполностью определенные булевы функции, называемые также не всюду определенными или частичными булевыми функциями. Их значения определены лишь на некоторых наборах. Будем считать, что на остальных наборах такая функция принимает неопределенное значение (неизвестно, 0 или 1), обозначаемое символом «—». Неполностью определенная булева функция / может быть задана разбиением булева пространства М на три подмножества М1, М° и ЛТ~, образуемые наборами, на которых функция получает соответственно значение 1, О или «—». Очевидно, чтобы определить такую функцию, достаточно задать лишь два из этих подмножеств, например, выбрав те из них, которые содержат меньше элементов.
28 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ Система булевых функций и ее представление булевыми матрица- м и. Перейдем к рассмотрению системы булевых функций: Уг == Л (#i> #2» • • •> xn)t У2 == /2 V^i» х2* • • •» xn)i Ут /m V*^i> ^-2» • • •» *^п/> которую иногда удобно представлять как векторную булеву функцию У = f (x), памятуя, что х = (хг, x2l . . ., агя), а у = (уг, y2i. . . , ут). Очевидно, что проще всего задать эту систему, перечислив все значения вектора х и соответствующие им значения вектора у. Совокупности этих значений можно собрать в булевы матрицы X и У, в которых отдельные значения будут представляться столбцами (выбор именно столбцов, а не строк, оказывается для нас более удобным, поскольку он упрощает символику в излагаемом ниже математическом аппарате исследования матричных транзисторных схем.) В результате £-й столбец матрицы У будет представлять значение вектора у, соответствующее тому значению вектора х, которое представлено i-м столбцом матрицы X. Эта форма применима (хотя и может оказаться громоздкой) при представлении системы полностью определенных булевых функций, а также таких неполностью определенных булевых функций, области определения которых совпадают. Например, пара булевых матриц Х = может рассматриваться как задание системы из четырех неполностью определенных булевых функций уг, у2, Уз» у4 от пяти переменных хг, х21 х3, #4, #5, определенной на шести наборах значений этих переменных, заданных столбцами матрицы X. Функция уг, заданная первой строкой L 2 3 4 5 6 10 10 0 1" 0 0 10 10 0 '1 0 0 1 0 1110 10 0 0 1 \. 0 0_ 1 2 з , 4 5 У = 1 2 3 4 5 6 -001001- 1110 0 0 0 10 10 1 _0 0 0 0 1 1_ 1 2 3 4
2. БУЛВВЫ^ФУНКЦИИ 29 матрицы У, принимает значение 1 на наборах 110 11 и 1 0 0 0 0 и принимает значение 0 на остальных из перечисленных в матрице X наборов, функция у2 представляется аналогичным образом второй строкой матрицы У и т. д. Если же области определения функций yt не совпадают, матрицей X представляется объединение этих областей, а матрица У становится троичной: наряду со значениями 0 и 1 в ней будут встречаться символы неопределенности «—». Интервальные формы систем булевых функций. Компактность задания системы булевых функций в некоторых ситуациях может быть существенно повышена, если использовать троичную матрицу X. В этом случае значения булевых функций рассматриваемой системы будут задаваться уже не на отдельных элементах, а на интервалах булева пространства переменных хг, x%i • • •» хы и эти интервалы будут представлены вектор- столбцами матрицы X. Например, пара матриц Х = 1 — 0 — — — 0 1 1 — 0 — — 0 0 1 0 — — — —" — 1 1 0 , Y = \ i — 1 — 0 1 0 — — 0 0—10 — .— 1 0 — 1 J задает систему булевых функций, в которой функция ух принимает значение 1 на интервалах 1 — 0 и 0 — —- 0 0 и значение 0 на интервале 110; функция у2 принимает значение 1 на интервале 1— 0 и значение 0 на интервалах —0 11—и 1 1 0 и т. д. Важно отметить, что при таком способе задания системы булевых функций ни одна из них не должна принимать различных значений на пересекающихся, т. е. содержащих некоторый общий элемент, интервалах, поскольку это противоречило бы определению понятия функции. Проверка этого условия несложна, так как непересекающиеся интервалы представляются ортогональными троичными векторами, т. е. такими, один из которых имеет в некоторой компоненте значение 1, а другой значение 0 в одноименной компоненте. Из сказанного вытекает следующее условие, которому должна удовлетворять любая пара троичных матриц X
30 Л* 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ и У, представляющая некоторую систему булевых функций: если некоторые два столбца матрицы У находятся в отношении ортогональности, то соответствующие им два столбца матрицы X также должны быть взаимно ортогональными. Очевидно, что это условие будет всегда выполняться, если все столбцы матрицы X взаимно ортогональны, в частности, если мы используем булеву матрицу X с попарно различными столбцами. Для дальнейшего изложения нам понадобится еще одна форма представления системы булевых функций. Точнее говоря, эта форма представляет систему ДНФ. Она состоит из троичной матрицы X, задающей своими столбцами некоторую систему интервалов и соответствующих им элементарных конъюнкций, и булевой матрицы У, интерпретируемой теперь следующим образом: если у\ = = 1, то ;-я элементарная конъюнкция, представляемая /-м столбцом матрицы X, входит в i-ю дизъюнктивную нормальную форму, представляемую г-й строкой матрицы У. Примером может служить пара матриц Li — о — —J Ь 1 1 о oj представляющая следующую систему ДНФ: У\ = ХхХгХ^ V Х1 V *2#8i Уз = ^1^2*^4 V *^2*^3 у X}X$$±. С вводом значения «—» мы перешли, по существу, к рассмотрению троичных переменных. Подготавливая почву для дальнейшего изложения, введем серию операций над троичными переменными, определив их как такое обобщение соответствующих булевых операций, при котором значение «—» интерпретируется как символ неопределенности двоичного значения, т. е. считается, что рассматриваемая переменная принимает одно из двух значений, 0 или 1, но какое именно, неизвестно. Результат этого обобщения представим табл. 3, определяющей вводимые троичные операции. Например, рассматривая дизъюнкцию р \уf q, мы полагаем, что эта функция принимает значение 1, если из-
3. МАТРИЧНЫЕ ОПЕРАТОРЫ 31 Таблица 3 Аргумент р Аргумент д Отрицание "~| р Дизъюнкция р V Я Конъюнкция р Л Яj или рд Дизъюнкция с исключением р ф д Эквиваленция р ~ д Импликация р —* д 0 0 0 111 0 — 10—10 — 1 | 111 0 0 0 0 — 1 1111 0 00 0 0-1 0-1 1—0 1—0 0 — 1 111 10 — 1 вестно, что по крайней мере одна из переменных р и q обладает значением 1, принимает значение 0, если известно, что обе переменные имеют значение 0, и принимает значение «—», т. е. остается неопределенной, во всех остальных случаях. Нетрудно убедиться, что сохраняется старая интерпретация дизъюнкции и конъюнкции: р V Я = max (p, q), р Д Я = min (p, q) (2.5) (при этом надо считать, что 0 < — < 1). Сохраняются также остальные свойства всех операций и отношения Йежду ними. 3. Матричные операторы Вернемся к рассмотрению транзисторных матричных схем, реализующих некоторые функциональные соответствия между «входным вектором х и выходным вектором у. Введенные выше булеву матрицу В и троичную матрицу Т, задающие структуру схем, будем теперь интерпретировать как соответствующие функциональные операторы преобразования вектора х в вектор у, а само преобразование будем описывать векторно-матричным уравнением у = Вх или у = Гх, в которых х и у служат вектор- столбцами. Проанализируем эти уравнения подробнее, начав с первого из них: у = Вх. Уравнения для р-схем. Напомним правило определения значений компонент выходного векто-
32 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ ра у. Компонента yt получает значение 0, если среди компонент Xj входного вектора х, соответствующих единичным компонентам Ь\ матрицы В, по крайней мере одна имеет значение 1, в противном случае yt = 1. Это правило представляется булевой формулой Л = П(\/Ь{*Д t = l,2,...,m. (3.1) 3=1 Например (см. рис. 6), если у = Вх и rl 0 1 1 От __ 0 0 0 11 ^_ 0 1 0 1 0 ' Li 1 о о 1J то Vi = П («1 V *з V ^)» У2 = И (*4 V *б), УЗ = "1 («2 V *4), 2/4 = 1 (*1 V Х2 V *б)- Выразим матричный оператор В как суперпозицию "~~l#v оператора ~~| покомпонентного отрицания, или инверсии, применимого как к векторам, так и к матрицам, и дизъюнктивного матричного оператора Bv, определяемого следующим образом: если у = Bvx, то Й=\/Ь?**, * = l,2,...,m. (3.2) Таким образом, Вх = ] JBvx, т. е. если у = Вх, то у = ~~| Bvx. Суперпозиция операторов интерпретируется при этом обычным образом. В данном случае мы считаем, что существует некоторый булев вектор z такой, что у = = ~> и z = Bvx. При решении многих задач проектирования каскадных схем приходится рассматривать не один набор значений входных переменных хг, х2, . . ., хп, а некоторую серию наборов. Ее удобно представлять булевой матрицей X, где вектор-столбцом х' задается /-й набор. Матрица X называется входной информационной матрицей. Аналогично определяется выходная информационная матрица У, задающая соответствующую серию наборов значе*
3. МАТРИЧНЫЕ ОПЕРАТОРЫ 33 ний выходных переменных уг, у2,. . . , ут. В этом случае поведение (3-схемы будет описываться матричным уравнением Y = ВХ, содержащим информационные матрицы X и Y и структурную матрицу В и означающим, что г4 = П(\/Ь?4), * = l,2,...,m; / = 1,2,...,Z, (3.3) где / — число рассматриваемых пар наборов. Это матричное уравнение представляет выходную информационную матрицу Y как некоторую одноместную функцию от входной информационной матрицы X, конкретизируемую значением структурной булевой матрицы В. Однако можно сменить точку зрения и считать матрицу Y двуместной функцией от булевых матриц X и В, задаваемой соответствующим двуместным оператором. Введем операцию В X X произведения булевых матриц В и X: если Y = В X X, то yl=\/bki4, * = lf2,. ..,/7г; ;=1,2,...,Z. (3.4) Уравнение Y = В X X будет играть особо важную роль в дальнейшем изложении, поскольку к нему сводится рассмотрение многих других матричных уравнений. Например, из определений следует, что BVX = В х X, ВХ = -| (В х X). (3.5) Заметим, что, кроме транзисторных матриц рассмотренного выше типа, в которых каждая строка реализует отрицание многоместной дизъюнкции отмеченных единицами входных двоичных переменных, в технике используются матрицы, реализующие аналогично отрицания многоместных конъюнкций. Мы не будем вводить специальные обозначения для операторов таких схем, представляя их суперпозициями типа ~~\ВА, где ВА = конъюнктивный матричный оператор, определяемый следующим образом: если Y = ВАХ, то yl=/\(Pi-*rt)> i = l,2,...,m; /= 1, 2,...,/. (3.6) Учет неопределенности в информационных матрицах. Любое из уравнений Y = BX,Y= #vx, Y = В^Х и У = В X X обобщает- 2 А. Д. ЗакревскиЗ
34 гл. i. модели электронных матричных схем ся путем введения в рассмотрение троичных матриц X и У, в которых некоторые элементы могут иметь значение «—», играющее роль символа неопределенности. Обобщение идет через интерпретацию операций дизъюнкции и конъюнкции как операций выбора соответственно максимального и минимального среди значений аргументов (см. (2.3) и (2.5)). Например, рассматривая уравнение У = В X X с заданными значениями матриц В и X г0 1т1 1 0 1 0 1 1 В = О О 1 О 0 1 0 0 0 х = Г1 0 0 Lo 0 1 1 0 °1 0 1 lj нетрудно вычислить по формуле (3.4) соответствующее значение матрицы Y: У>= '0110 10 10 0 111 0 0 0 1 10 0 0 X ~1 0 0- 0 1 0 0 1 1 _0 0 1_ = "0 1 1] 111 0 11 0 0 1 1 0 Oj Здесь значения всех элементов матриц определены, и матрицы булевы. Если же некоторые элементы матрицы X имеют неопределенные значения «—», то соответствующая неопределенность может появиться и в матрице Y. Например, 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0" 0 1 1 0 X 1 0 0 ООП 1 0 1 — 0 1 _ = "0 1 — — _1 1 —1 1 - 1 1 0 1 о о ! В данном случае символ «—» показывает на неопределенность значения некоторых входных и выходных булевых переменных в соответствующих ситуациях. Аналогичную неопределенность можно внести и в структурную матрицу В, где эта неопределенность будет означать, к примеру, отсутствие информации о наличии транзисторов в некоторых точках матричной схемы. Такре обоб'
ft. МАТРИЧНЫЕ.ОПЕРАТОРЫ 35 щение может оказаться полезным в задачах диагностирования схем рассматриваемого типа. Например, если матрица В обладает значением В = (три ее элемента остаются неопределенными), то по входной матрице Г1 0 0 1 0 1 0 0 1 - - 0 1. 0 1 0 0 1 1 0 1 0 — — 1 1 0 0 0 0 1 0 х = легко находится соответствующая выходная матрица У = 1 1 0 о X ООП 1 О 4|- 0*1 0 1 — — 1 1 1 1 0 — 1 0 Обобщение законов де Моргана. Одним из основополагающих тождеств в булевой алгебре являются законы де Моргана, позволяющие выражать операцию дизъюнкции через операцию конъюнкции и обратно. В операторной форме эти законы имеют следующий вид: V = HA"b A = ~IV~i, (3.7) и их применение можно продемонстрировать на следующем примере: abc\Jad\JU = ~|П (аЬс) Д ~~i (ad) Д ~\(5г)) = = -1,((а\/ Ь\/ с) /\(а\/ а) /\(Ь\/ с)). Законы де Моргана обобщаются на матричные операторы SVnBA,npn этом получаются следующие выражения: #v = -|sa-|, ДЛ = ~]£у-|. (3.8) Действительно, если Y = В^Х, то ri = V bU = "1А 1 (ъЫ) = ~] Л (bt V 4) = = ПЛ(Ь? i'i) 2*
36 ГЛ. 1, МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ Сравнивая полученное выражение с (3.6), мы убеждаемся, что У = П#л X. Если же У = ВЛ х, то 2/1 = Л(ь?^4) = п\/П(й?\/4) = п\/ь?4, откуда следует, что У = ~~~| Bv ~~| X. В частности, из (3.8) вытекает, что уравнение У = = | В^Х, описывающее матричную схему упомянутого выше типа, можно заменить уравнением У = В^ ~~| X или Y = В X X. Уравнения для т-схем. Прежде чем перейти к рассмотрению уравнения у = Гх, описывающего поведение т-схемы, введем оператор inf, применимый к троичным переменным, векторам и матрицам и реализующий покомпонентное преобразование (0 -> 0, >• О, 1 ->■ 1), т. е. осуществляющий переход к соответствующим двоичным величинам путем замены значения «—» на О и сохранения значений 0 и 1. Например, inf (0) = 0, inf (—) = 0, inf (1) = 1, inf (0-1 0 1) = 0 0 1 0 0 0.1, 1-0 — — 1 1 -П Г0 0 0 1 1 0-1 .J— — 1 — 1 0001010 int 1 1 — — 0 — — 1 1 0 0 0 0 • |_— 0 1 0 — 1 J LO 0 1 0 0 1.1 Далее введем следующие две операции над троичными переменными р и q: pV q = (inf p)q у (inf p) q, p Aq = (inf p -> q) Д (inf p -> q), (3.9) назвав их операциями набла (V) и дельта (А). Для удобства приведем табличное представление этих операций: Таблица 4 р 1 q pVq 1 Р&Я 0 0 0 1 11 0 — 1 0 — 10 — 1 1—0 0 0 00 — 1 1—0 1 1 10 — 1
з, матричные;операторы 37 Напомним теперь интерпретацию уравнения у = Гх. Компонента yt получает значение 0, если среди компонент Xj вектора х, соответствующих нулевым элементам t[ матрицы Г, по крайней мере одна имеет значение 0 или среди компонент #/, соответствующих единичным элементам ti матрицы Г, по крайней мере одна имеет значение 1, в противном случае yt = 1. Представим это правило формулой « = 1.2,. ., т. (3.10) Например, рассматривая схему, изображенную на рис. 7 и описываемую троичной матрицей "О 1 —" — О 1 Т = | 1 - 1 — — О -1 1 — - нетрудно получить по формуле (3.10) следующую систему булевых функций, реализуемую данной схемой: 01 = П (*1 V *2>t 02 = ~1 (3» V *в). Уз = 1 (*i V *з). У* = I ^з == x3i Уъ = П (х± V *£)• Оператор Г также удобно расщепить на два, представив его в виде суперпозиции ~~| Гу, в которой основную роль играет матричный набла-оператор Гу, определяемый следующим образом: если у = Гух, то 0i = V(tft*j)> ^ = 1,2,. т. (3.11) Аналогично может быть рассмотрена матричная схема, строки которой реализуют отрицания многоместных конъюнкций, а столбцы разбиты на пары, питаемые противоположными (прямым и обратным) значениями соответствующих входных переменных. Функциональные свойства такой схемы описываются суперпозицией ~|ГЛ.
38 гл. i, модели электронных матричных схем Входящий в нее матричный дельта-оператор Гл порождает функциональное отношение у = ГЛх, где Vi = /\ $Д*,.), i = 1,2,..., т. (3.12) Действие операторов Tv и Гд распространяется на матрицы: уравнения У = TVX и У = jTaX соответственно интерпретируются как yJ=V(t?Va£), i = l,2,...,m; / = 1,2,. ..,/(3.13) и »{=^(t?Aa4), i = l,2,...,m; / = 1,2,...,Z. (3.14) Матричные операторы Tv и jTa находятся в том же взаимном отношении, что и операторы BV и ВАУ так как законы де Моргана обобщаются и на них: Tv = -] Гл -|, Гл = -| Гу П- (3.15) Действительно, 1 (РЩ = ~1 ((inf />) ? V (inf P) q) = = (П ((inf /») 9)) Л П «inf p) ?)) = = (-|inf^V?)r|inf^V?) = = (inf /; -> ^) (inf p\->- q) =-- рДд = /;Дд, т. е. П (р V д) = рДд = pAq. (3.16) Аналогично выводится и второе тождество П (pAq) = р V $ = р V д. (3.17) Далее найдем отношение между правыми частями выражений (3.13) и (3.14), дающих интерпретацию операторов Гу и Т*: П (V (rfv4)) = Л П («* v4) = Л (*? Д4), fr «г * откуда непосредственно следуют обобщения (3.15). Матричные операторы Т% и Г^ можно выразить через оператор X матричного произведения. Предварительно распространим введенные ранее булевы операции на век-
3, МАТРИЧНЫЕ ОПЕРАТОРЫ 39 торы и матрицы, полагая, что операнды обладают одинаковым числом компонент и операции выполняются над одноименными компонентами, т. е. покомпонентно. Заметим, что для одноместной операции отрицания, а также для операции inf такое распространение уже было реализовано. Например, ОЮОИДИОИО -010010, 1.101000-^0110010 = 0110111, [~1 0 0 1 0~| ГО 0 1 1 01 Г1 0 1 1 0~| 00 1 1 О К/ 1 ° ° 00 = 1 0 1 1 0 . Lo 1 1 o.^oj Lo о 1 о ij Lo l 1 о ij Рассмотрим уравнение Y = TVX. По определению (3.13) гД= V (tfVoi) = V ((inf t{)4 V(inft\)d) = k=l *=1 откуда следует, что = (V(inffi)4)V(V(mf^)4), TwX = (mlT) x X\/(infT) x X. (3.18) Аналогичное выражение можно найти и для оператора ГЛ, для чего достаточно использовать соответствующее обобщение закона де Моргана = l((inff) xX\Z(ini\T) X\X). (3.19) • Будем считать, что операторы Bv, ВЛ, Tv и Гл описывают свойства некоторых матричных схем, которые мы назовем элементарными. Анализ и синтез реальных транзисторных схем типа ПЛМ и с более сложной структурой сводятся к рассмотрению элементарных матричных схем и их суперпозиций. Безызбыточность матричных схем. Практическое проектирование транзисторных схем обычно связывается с поиском простейших решений, т. е. с нахождением таких схем, которые удовлетворяли бы
40 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ заданным требованиям и были при этом максимально простыми. Тривиальным способом получения некоторого приближения к такому оптимальному решению является следующий: сначала находится некоторая довольно произвольная схема, лишь бы она реализовывала заданную функцию, а затем из этой схемы удаляется избыточность, т. е. выбрасываются те транзисторы, которые оказываются излишними. Если из схемы уже нельзя удалить ни одного транзистора так, чтобы не нарушить реализуемую функцию, то схема считается безызбыточной. Отсюда следует, что элементарная матричная схема, описываемая оператором Bv или Вл, считается безызбыточной, если ее требуемое функционирование нарушается при замене некоторой единицы на нуль в матрице В; элементарная схема, описываемая оператором Tv или ГЛ, безызбыточна, если ее функционирование нарушается при замене в матрице Т на «—» некоторой единицы или'нуля. Нетрудно показать, что любая элементарная матричная схема является безызбыточной, если ее функция определяется на всем булевом пространстве входных переменных. При этом достаточно ограничиться рассмотрением значений функции на тех элементах булева пространства, на которых лишь одна из входных переменных принимает значение 1, а также на тех элементах, где лишь одна из переменных принимает значение 0. Представим совокупность таких элементов столбцами квадратной булевой матрицы £", в которой значением 1 обладают лишь элементы главной диагонали (е\ = 1 при i = / и е\_= 0 в противном случае), а также столбцами матрицы Е, представляющей результат покомпонентного отрицания матрицы Е, называемой матрицей-единицей. Матрица Е играет роль левой и правой единиц в операции матричного произведения: Е X В = В и В X Е = = В. Отсюда следует, что если Е будет служить входной информационной матрицей транзисторной схемы, описываемой оператором Sv, то матрица Y получит значение матрицы В: Y = Bw Е = В. В результате любое изменение значения матрицы В влечет такое же изменение значения У, что и доказывает безызбыточность схемы. Аналогично доказывается безызбыточность матричной схемы, описываемой оператором ВЛ, только при этом мат-
3. МАТРИЧНЫЕ ОПЕРАТОРЫ 41 рица X принимается равной E:Y = ВАХ = ""] Ву ~~] X = = ~}ВУЕ= ПВ. Теперь допустим, что рассматриваемая матричная схема описывается оператором Гу. В этом случае во входную информационную матрицу X можно включить по одному столбцу хк для щего значением каждого элемента t{ матрицы Г, обладаю- 1 0 или 1. Столбец х образуется из строки Xi «; если 1ф j и Аф «—», t,- следующим образом: то xl = l\\ если же U = «—», то х\ получает произвольное значение. Соответствующий столбец выходной матрицы Y будет обладать значением 1 в г'-й строке (yi = 1) при исходном состоянии схемы. Однако если транзистор, представляемый элементом t\i выйдет из строя, элемент у\ сменит значение 1 на 0. Таким образом, рассматриваемая транзисторная схема оказывается безызбыточной. Аналогично доказывается безызбыточность схемы, описываемой оператором ТА. Однако если реализуемая элементарной матричной схемой функция определяется не на всех элементах булева пространства входных переменных, т. е. оказывается частичной, или не полностью определенной, рассматриваемая схема может оказаться избыточной. Например, анализируя уравнение Y = ВУХ с заданными значениями матриц В и X: В [1 0 1 11 110 0, Х= 0 1 0 1J Г1 1 0 Lo 0 0 1 1 1-1 0 1 0J можно убедиться в том, что замена подчеркнутых в матрице В единиц на нуль не приводит к изменению значения матрицы У. Действительно, [10 11"] 110 0 0 1 0 lj X rl 1 0 L0 0 0 1 1 1п 0 1 oj [1 1 1] 10 1 1 1 Oj
42 гл. t. модели электронных матричных схем Упрощенные схемные изображения. Будем считать, что введенные матричные операторы реализуются соответствующими схемами, примеры которых приведены ниже. В упрощенных изображениях этих схем в случае дизъюнктивных операторов используются светлые кружочки, в случае конъюнктивных — темные. Например, оператору Ву с матрицей [01100"] 10 0 10 0 0 1 1 1J непосредственно соответствует схема, показанная на рис. 11, а, а оператору ВА с тем же значением матрицы В — схема, показанная на рис. 11, б. Операторы Tv и Гл с матрицей [0 — 1 11 = i - -ч реализуются соответствующими схемами, показанными на рис. 12, а, б. Изображение схемы, описываемой оператором ~~~|, тривиально — это пучок перечеркнутых линий (рис. 13). Данные три типа схем образуют базис, позволяющий представить в виде их композиции любую из рассматриваемых ниже схем достаточно компактно и наглядно. При этом легко прослеживаются различные эквивалентные преобразования сложных схем. Например, программируемая логическая матрица, описываемая уравнением Y = ВТХ = Hfiv -]JVX, с конкретными значениями структурных матриц В и Г, представляется как композиция соединенных последовательно схем, реализующих соответственно операторы Tv, |, 5V и "~| (от входа к выходу схемы), и эта композиция, согласно обобщенному закону де Моргана, эквивалентна композициям, соответствующим составному оператору ~~\BVTA "^ и составному оператору B^TV (рис. 14).
3. МАТРИЧНЫЕ ОПЕРАТОРЫ 43 4-ф- > / 4 4 4 о J 6 6 6 6 6 X12 3 4 5 S) Рис. 11. Изображения схем, реализующих булевы матричные операторы: а) дизъюнктивный, б) конъюнктивный. + —I f I t I ° 1 1 t 1 I I 1 f ° I I I 4 I 1 I I ° «3 x f x / в) Рис, 12. Схемы, реализующие троичные матричные операторы: а) набла, б) дельта. х 1 о- -о / 2 о 1 о 2 J о 1 о J 4 о 1 о 4 Рис. 13. Pea* лизация оператора отрицания. а) 5) В) Рис. 14. Программируемая логическая матрица (а) и эквивалентные ей схемы (б, в). L3 5 3
44 гл. i. модели электронных матричных схем 4. Правильные цепочки Образование правильных цепочек. Соединяя последовательно друг с другом различные Р~ и т-схемы или элементарные матричные схемы, причем так, чтобы число входных полюсов в любой из этих схем, кроме первой, было равно числу выходных полюсов в непосредственно предшествующей ей схеме, можно получать цепочки, которые мы будем называть правильными. Структура таких цепочек описывается последовательностью соответствующих матриц, булевых или троичных, в которых правая матрица представляет входную схему, левая — выходную. Функциональные свойства цепочки представляются соответствующей суперпозицией матричных операторов, выполняемых справа налево. Например, последовательность BCTDU, составленная из булевых матриц В, С и D и троичных матриц Т и U и удовлетворяющая сформулированному выше требованию согласования числа полюсов в соседних схемах, может интерпретироваться как составной матричный оператор, а именно суперпозиция В (С (Т (D (£/)))). Используя эту суперпозицию в уравнении у = BCTDUx, задающем функциональную связь между входным булевым вектором х и выходным булевым вектором у, мы полагаем, что существуют некоторые промежуточные булевы векторы z, u, v и w такие, что у = Sz, z = Си, и = = Туу v = Dw и w = Ux. Опираясь на тождества типа В = -| £v и Т = -| Tv, мы всегда можем перейти к суперпозициям элементарных матричных операторов. Например, рассматривая составной оператор BCTDU, мы можем преобразовать его в суперпозицию П Ву "1 Cv -| Tv П Dv И Uv. Преобразования де Моргана. Обобщения законов де Моргана (3.8) и (3.15) позволяют производить такие эквивалентные преобразования цепочек, при
4, ПРАВИЛЬНЫЕ ЦЕПОЧКИ 45 которых может изменяться число операторов отрицания | и их расположение в цепочке, а также может изменяться тип остальных операторов, но остаются неизменными как порядок следования операторных матриц, так и их значения. При этом всегда оказывается возможным свести число операторов ~~] до нуля или до единицы, оставив в последнем случае единственный оператор | на левом или на правом краю цепочки. Такого результата можно добиться, рассматривая операторы ~~] последовательно и передвигая очередной из них влево или вправо по цепочке, пока он не встретится с некоторым другим оператором *Й, после чего эта пара взаимно уничтожается. При этом типы всех матричных операторов, через которые переносится оператор |, изменяются на дополнительные. Взаимно дополнительными считаются операторы Bv и 5Л, а также операторы Tv и Гд. Например, пронумеровав для удобства операторы ~~| в суперпозиции ~~| £v —| £v -j Tv y| Dy —j jjv^ легко про. следить за выполнением описанной процедуры в следующей серии упрощающих преобразований: Hi£v H2cv Из Tv n^v ~]bU* = = BA Hin2Cv ~\3TV ~1*DV ~]bUv = = BACV -}3TV H4#V 1bUv = SaCv7tA Hal^ v Нб#V = = BACVT*DV -^6UV = BACyT*DyU* -|e = = BACVT*DVU*-}. Чтобы сделать преобразования цепочек обратимыми, достаточно разрешить вставлять в произвольные места цепочки пары операторов "~~]~~"|, после чего эти операторы можно «растаскивать». Сформулируем более общее правило эквивалентных преобразований цепочек, позволяющее сразу получать искомый результат. Расстановка операторов отрицания ~~| в цепочке может заменяться любой другой расстановкой, имеющей тот же показатель четности числа операторов ~~|. При этом тип каждого матричного оператора меняется на дополнительный, если меняется показатель четности числа операторов "^, расположенных слева от данного матричного оператора (или справа, что все равно), и остается неизменным в противном случае.
46 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ Например, если мы желаем преобразовать суперпозицию Bv —] TAUV~~\CAD* ~~] EV к такому виду, когда в ней останется лишь один оператор ~~|, а именно после матричного оператора Сл (а такое преобразование возможно, поскольку число операторов "^ как было, так и остается нечетным), то достаточно сравнить обе расстановки операторов ~~| и выделить в рассматриваемой цепочке те матричные операторы, для которых показатель четности числа операторов ~% расположенных слева, изменяется. Такими операторами оказываются ГЛ, Uv и Z)v. Изменяя^их тип, мы непосредственно получаем интересующий нас результат: Bv _| ^д^у -| cadv -| еу = B^vu^cA -| DAEV. Кроме тождеств (3.15) при эквивалентных преобразованиях суперпозиций, содержащих матричные операторы Tv и ГА, могут оказаться полезными также тождества ГУН = ^\ ГЛП = ГЛ, (4.1) выводимые из выражений (3.16) и (3.17). Здесь через Т обозначается результат покомпонентного отрицания матрицы Г, т. е. Т = П т- Например, BVTVU*CA П DAEy = ByTvU* П CyDAEy = = ByTvU*CvDAEv. Интересно отметить, что аналогичных отношений для матричных операторов типа Bv или ВА не существует. Действительно, инверсия троичной матрицы Т полностью компенсируется сменой фаз входных двоичных переменных, и множества аргументов, представляемые строками матрицы Г, остаются неизменными. Булева оператор- лая матрица В интерпретируется иначе, и ее инверсия привела бы к замене заданных строками совокупностей аргументов их дополнениями. Эквивалентные преобразования правильных цепочек. Правильные цепочки, составленные из булевых матричных операторов, могут подвергаться и более общим эквивалентным преобразованиям, при которых могут изменяться и значения операторных матриц, и даже их количество.
4. ПРАВИЛЬНЫЕ ЦЕПОЧКИ 47 Эти преобразования опираются на свойство ассоциа» тивности операции произведения булевых матриц В X (С X D) = (В X С) X D, (4.2) выводимое следующим рассуждением: если А = В ;< X (С X D), то а! = V tf (V 44) = V V Ь? (cidf) = V. V (Ь\с1?Щ, к I к I l к -•'■■■=ь*)д т. е. Л = (В X С) X Я. Из данного свойства операции произведения булевых матриц следует, что любая цепочка из пары дизъюнктивных матричных операторов fiv и Cv, представляемая суперпозицией 5VCV, эквивалентна одному дизъюнктивному матричному оператору, матрица которого равна произведению матриц В и С: fivcv = (В х C)v. (4.3) Действительно, SVCVZ = В X (С X X) = (В X С) X X = (В X C)vx. Аналогичная эквивалентность имеет место и для произвольной пары конъюнктивных матричных операторов SA и С*: 5ЛСЛХ = И £VCV ni = n(BxC)vni=(BxC)AX, откуда следует, что £ЛСЛ = (Вх С)л- (4.4) По индукции заключаем, что любая цепочка, образованная целиком из дизъюнктивных матричных операторов или целиком из конъюнктивных матричных операторов, «стягивается» в один матричный оператор того же типа, причем матрица этого оператора равна произведению матриц всех операторов рассматриваемой цепочки. Пусть, например, задана цепочка B^C^D^E^, в которой] операторные матрицы обладают следующими значениями (рис. 15): Г5 о ol Го 1 о о 01 в= о о 1 > с= h oioo, Lo i oJ Lo о о i ij
48 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ D = 110 0 0 0 10 0 0 0 1 0 10 0 0 0 10 Е = го 1 0 Li 1 0 0 0 01 0 1 oj Перемножая эти матрицы, мы получим матрицу оператора fv, эквивалентного заданной цепочке: F = В X С X X D X Е, т. е. -1 1 П 0 0 1 1 0 1 Li 1 oj Заметим, что операция перемножения булевых матриц равносильна нахождению множества путей между полю- F = X С /о- J о- Т Т 'В -• 2 -о J -+4 ? Рис 16. Каскадная дизъюнктивная матричная схема (а) и ее одноярусный эквивалент (б). а) Рис. 16.Каскадная сеть (а) и эквивалентная ей одноярусная сеть (б). сами каскадной сети, ярусы которой соответствуют перемножаемым матрицам. На рис. 16 приведена иллюстрация рассмотренного примера в этой интерпретации.
4. ПРАВИЛЬНЫЕ ЦЕПОЧКИ 49 Операция В X С перемножения булевых матриц В и С очевидно некоммутативна, т. е. символы В и С не могут поменяться своими местами в выражении операции (хотя бы потому, что при этом может быть нарушено условие равенства числа столбцов в левой матрице числу строк в правой). Однако имеет место «квазикоммутативность» этой операции, выражаемая тождеством В х С = (Ст X Вт)т (4.5) (т — символ транспонирования матрицы) и достаточно очевидная, чтобы опустить ее доказательство. Из этого свойства рассматриваемой операции вытекает весьма интересное следствие. Анализируя взаимодействие оператора 5V, матрица В которого задает структуру некоторой транзисторной схемы, с матрицей X, представляющей совокупность наборов значений двоичных переменных, подаваемых на входы этой схемы, можно убедиться в своего рода эквивалентности и взаимозаменяемости этих матриц, структурной и информационной. Действительно, BVX = BxI = (ITX Вт)т, откуда следует, что если В^Х = У, то ут = Хт X Вт = (Xt)V#t. Это означает, что выходная матрица У может быть получена построчно, т. е. значения выходного вектора у будут представляться строками этой матрицы, если в качестве оператора схемы взять оператор (XT)V с транспонированной матрицей Хт, а в качестве значений входного вектора использовать строки матрицы В. Например, если заданы матрицы Д = 0 110 10 10 0 111 0 0 0 1 10 0 0 х = Г1 0 0 Lo 0 1 1 0 0П 0 1 1J го 1 0 0 Li 1 1 1 0 0 11 1 1 1 oj связанные уравнением В^Х = У, то легко находятся
50 ГЛ. 1. МОДЕЛИ ЭЛЕКТРОННЫХ МАТРИЧНЫХ СХЕМ матрицы [10 0 0] 0 110, 0 0 1 1J г-[] удовлетворяющие аналогичному уравнению B'VX' = У, причем В' = Х\ X' = 5* иУ'= Ут. Универсальность правильных цепочек. Рассматривая составные операторы типа rv£7v или ГЛС/Д, можно убедиться, что они не могут быть сведены, в общем случае, к одному элементарному матричному оператору, в чем и заключается одно из их существенных отличий от операторов Ву и ВА. Не сводятся к элементарному оператору и суперпозиции BvCA,5vrA, T ВА, а также множество других, включая многоэлементные. Причиной этого является неуниверсальность элементарных матричных операторов: далеко не всякая система булевых функций может быть реализована одним элементарным матричным оператором. В то же время для всякой системы булевых функций можно подобрать реализующую ее правильную цепочку матричных операторов. В частности, свойством универсальности обладают цепочки типа ВУГЛ, поскольку для любой системы булевых функций можно найти цепочку этого типа. В самом деле, любая система полностью определенных булевых функций может быть задана простейшим образом: парой булевых матриц 1и7, первая из которых представляет (столбцами) множество входных наборов, а вторая (также столбцами) — множество соответствующих выходных наборов. Легко убедиться, что функциональное отношение, задаваемое этой парой матриц, реализуется составным оператором BVTA, если передать матрице В значение матрицы У, а матрице Т — транспонированное значение матрицы X, Реализующая цепочка типа Bw ТА легко находится и для такой системы булевых функций, которая задается Х' = го 1 о о 1- 10 10 0 1110 0 .00110. 10 0 1 110 0 1110
4. ПРАВИЛЬНЫЕ ЦЕПОЧКИ 51 в дизъюнктивной нормальной форме троичной матрицей X, перечисляющей некоторую систему интервалов пространства входных переменных, и булевой матрицей У, показывающей состав отдельных ДНФ. Решение здесь также тривиально: В = Y, Т •= Хт. Любая правильная цепочка реализует в конечном счете некоторую систему булевых функций, откуда следует, что всегда можно найти эквивалентный ей (цепочке) двухэлементный оператор типа ВУТ^. Существенные трудности могут возникнуть здесь лишь при поиске простейшего решения, т. е. при поиске операторных матриц В и Т, обладающих минимальным размером. Эта задача оказывается в общем случае весьма сложной и будет рассматриваться в следующих главах. Особый интерес представляет исследование правильных цепочек, которые описываются суперпозициями матричных операторов типа Ву и ВА. Будем называть такие цепочки монотонными, поскольку они обладают свойством монотонности: изменение значения любой входной переменной может повлечь лишь аналогичное, того же направления, изменение значений выходных переменных (например, если хг меняет значение 0 на 1, а значения остальных входных переменных остаются прежними, то никакая выходная переменная yj не может сменить значение 1 на 0). Легко проверить, что среди рассмотренных ранее булевых операторов"""], V» Д, ф, ~ и ->■ свойством монотонности обладают только операторы V и Д. «Склеивая» в монотонных цепочках однотипные соседние матричные операторы, легко превращать их в чередующиеся монотонные цепочки вида ... BVCADVEA...
ГЛАВА 2 МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА 5. Комбинаторный поиск Полный перебор. Традиционная математика приучила нас к аналитическим процессам решения различных задач, представляющим собой целенаправленные вычислительные процедуры, непосредственно ведущие к цели. Комбинаторные аспекты остаются при этом в тени. Однако при решении логических задач комбинаторика выходит явно на первый план, становится очевидной и неизбежной. Процесс поиска решения приобретает комбинаторный характер. В своей простейшей, тривиальной форме комбинаторный поиск сводится к так называемому полному перебору конструкций некоторого типа, среди которых, как нам заранее известно, должно находиться и решение рассматриваемой задачи. Перебираемые конструкции по очереди испытываются, и как только выясняется, что очередная из них является решением, процесс решения задачи может считаться завершенным. В некоторых случаях этот простой метод может оказаться единственно возможным, особенно в специально созданных ситуациях. Пусть, например, нам требуется открыть секретный замок, зная лишь, что ключом к нему служит некоторое пятизначное десятичное число, а какое именно — неизвестно. Очевидна неизбежность перебора, объем которого может достигать 100 000 перебираемых элементов (лишь в этом случае решение гарантируется). Логические задачи замечательны тем, что то множество, среди элементов которого ищется решение, всегда конечно, и, реализовав полный перебор элементов множества, мы всегда найдем решение или убедимся в том, что рассматриваемая задача вообще не имеет решений. Поэтому любая логическая задача может быть решена
54 КОМБИНАТОРНЫЙ ПОИСК 53 «в принципе», т. е. конечной решающей процедурой. Однако это не означает, что она может быть решена практически, за приемлемое время, даже с помощью самой быстродействующей ЭВМ. Допустим, что, решая некоторую задачу, мы знаем, что ее решение представляется неизвестной нам булевой функцией от восьми переменных. Можно ли надеяться на успех, применив здесь метод полного перебора? Известно, что число различных булевых функций от т переменных равно 22™, т. е. при т = 8 равно 22* = 22бв > > 1086. Это очень большое число, и перебрать столько элементов практически невозможно. Чтобы убедиться в этом, достаточно вспомнить, что число элементарных частиц во Вселенной не превышает 1079 (по Эддингтону), или подсчитать, что сверхбыстродействующая ЭВМ, выполняющая за одну секунду 100 000 000 операций, успела бы выполнить за все время существования нашей Галактики (десятки миллиардов лет) не более чем 1026 элементарных операций. Становится очевидным, что метод полного перебора применим разве что в самых простых ситуациях. В общем же случае поиск решения должен быть сопряжен с существенным сокращением объема перебора, возможным лишь на основе учета дополнительной информации о решаемой задаче и свойствах ее решений. Дерево поиска. Один из наиболее общих и плодотворных подходов к решению самых разнообразных логических задач заключается в построении многошаговых ветвящихся процессов, реализующих режим поиска решения с ветвлением вариантов, их оценкой, выбором перспективных продолжений решающего процесса, захождением в некоторые тупики и отбрасыванием соответствующих ветвей, после чего приходится возвращаться к старым ситуациям, с тем чтобы рассмотреть другие вытекающие из них варианты, и т. д. Общая схема такого процесса может быть представлена деревом поиска, которое определяется следующим образом. Корень дерева поиска ставится в соответствие с исходной ситуацией, остальные вершины — с ситуациями, которых можно достичь в процессе поиска. Дуги соответствуют некоторым достаточно простым операциям — шагам решающего процесса — и связывают вершины, со-
54 ГЛ, 2» МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА ответствующие ситуациям, одна из которых преобразуется в другую посредством одного шага. Решения рассматриваемой задачи могут представляться некоторыми вершинами этого дерева или путями. Иногда требуется найти все решения, иногда лишь одно из них, неважно какое именно, а иногда — оптимальное в определенном смысле, например представленное кратчайшим путем. Важно отметить, что дерево поиска обычно не задается априори, а строится уже в процессе поиска: когда возникает некоторая ситуация, тогда и определяются возможные продолжения процесса, представляемые совокупностью дуг, исходящих из вершины, соответствующей данной ситуации. Естественно стремиться по возможности сократить число этих дуг, чтобы быстрее найти решение. Способы этого сокращения строятся с учетом особенностей конкретных задач. Проиллюстрируем этот общий подход на следующем примере. Как отмерить ровно 6 л воды, пользуясь водопроводным краном и двумя кувшинами, первый из которых обладает емкостью 5 л, второй — 7 л? Представим текущую ситуацию вектором (р, д), где р — количество воды в первом сосуде, q —количество воды во втором сосуде, и примем за начальную ту ситуацию, когда оба кувшина пусты, т. е. ситуацию, представляемую значением (0, 0) вектора (/?, q), или, короче, значением 0 0. В каждой ситуации возможны следующие операции: а) долить первый кувшин, б) долить второй кувшин, в) вылить воду из первого кувшина, г) вылить воду из второго кувшина, д) отлить из первого кувшина во второй, освободив при этом первый кувшин или долив второй, е) отлить из второго кувшина в первый, освободив при этом второй кувшин или долив первый. Построение полного дерева поиска решения этой задачи, без каких бы то ни было упрощений, невозможно, поскольку дерево окажется бесконечным: например, можно наполнять первый кувшин, освобождать его, вновь наливать в него воду и т. д. без конца. Конечно, можно ограничить глубину поиска, полагая, что если данная зада-
5. КОМБИНАТОРНЫЙ; ПОИСК 55 ча имеет какое-то решение, то должен существовать и ведущий к нему путь ограниченной длины. Но даже в этом случае построение соответствующего дерева может привести к слишком громоздкой картине, поскольку каждый последующий ярус дерева будет содержать вершин в шесть раз больше, чем предыдущий. Поэтому разумно ограничить число дуг, исходящих из рассматриваемых вершин, отбрасывая заведомо излишние варианты. Например, можно отказаться от выполнения в конкретных ситуациях таких элементарных операций, которые не ведут к изменению ситуации (не стоит выливать воду из пустого кувшина или доливать полный!). Тогда первые ярусы дерева поиска будут иметь вид, показанный на рис. 17 (вершины отмечены значениями вектора (/?, q), характеризующими соответствующие ситуации, а ребра — символами операций). Однако такое ограничение слабо упрощает дерево поиска. г 50 J^S/\d 57 00 05. 57 00 52 в/\г а/\б а/б\\\е в/\г aj \( б/в\ Y\j 07 50 50 0755 07 00 50 07 50 50 0757 02 50 L Рис. 17. Первые ярусы дерева поиска с простейшим ограничением* Рис. 18. Дерево поиска без повторения ситуаций. К существенно более'сильному сокращению дерева приводит отказ от ^рассмотрения уже встречавшихся ситуаций, гарантирующий, в частности, сходимость решающего процесса и позволяющий завершить построение дерева, выявив при этом все достижимые ситуации. Если при этом дерево строится поярусно, сверху вниз, то гарантируется нахождение не только решения, но и кратчай-
56 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА шего пути к нему. Построенное таким образом дерево, соответствующее рассматриваемому примеру и показывающее все достижимые ситуации, изображено на рис. 18 (интересующие нас решения отмечены кружками). Возможен и другой способ построения ограниченного дерева поиска, при котором все достижимые ситуации будут размещены на одном пути. Правда, мы не можем при этом гарантировать того, что путь к найденному решению окажется кратчайшим, зато сам процесс поиска несколько упрощается. Заметим лишь, что такой способ применим в тех случаях, когда выполняемые элементарные операции не могут завести нас в некоторый тупик, из которого мы уже никогда не сможем достичь искомого решения, если только не возвращаться вверх по дереву поиска. В данном случае этот способ оказывается допустимым, поскольку, не уклоняясь с пути, всегда можно восстановить начальную ситуацию, вылив воду из обоих кувшинов. Способ заключается в том, чтобы выбирать в текущей ситуации такой шаг, который приводит к новой ситуации, какой именно — неважно, и этот процесс заканчивается, когда очередная ситуация оказывается решением. Допустим, что каждый раз мы будем по очереди рассматривать операции а, б, <?, г, д, e и выполнять первую из них, если только она удовлетворяет сформулированному условию, т. е. не приводит к уже встречавшейся ситуации. На рассматриваемом примере описанный способ реализуется следующей цепочкой операций и последовательно получаемых ситуаций (цепочка обрывается при достижении решения): 00 — а — 50 — б — 57 — в — 07 — е — 52 — в — 02 -е- 20 -б- 27 - е - 54 — в — 04 — е — 40 — б - 47 — е - 56. Методы комбинаторного поиска. Задача, с которой мы познакомились, принадлежит обширному классу так называемых лабиринтных задач, процесс решения которых напоминает блуждание по лабиринту в попытках найти выход из него. Для простейших методов их решения, подобных описанным, характерно сильное ограничение информации, используемой при поиске ре-
5. КОМБИНАТОРНЫЙ ПОИСК 57 шения, из-за чего в каждой возникающей ситуации приходится рассматривать все возможные в ней действия вместе с их последствиями, за исключением, быть может, лишь тех действий, которые приводят к уже исследованным ситуациям. Универсальность этого простого метода в сильной степени обесценивается его малой эффективностью: метод может оказаться практически реализуемым лишь при достаточно простых исходных данных решаемой задачи. Желая построить более эффективные методы, мы должны использовать и больший объем информации о свойствах формальной модели, в рамках которой ставится рассматриваемая задача, и в особенности о свойствах искомых решений этой задачи. Выявление характера этой информации и разработка способов ее использования должны производиться на основе содержательного исследования конкретных задач. Излагаемые в настоящей книге методы при всем своем разнообразии обладают общей структурой, отражающей весьма общий подход к поиску решений и позволяющей присвоить этим методам обобщающее название методов комбинаторного поиска. Эти методы опираются на использование дерева поиска и порождают ветвящиеся процессы последовательного конструирования искомых решений, реализуя многошаговые переходы от начальной ситуации, отражающей лишь исходные данные для решаемой задачи, через некоторое множество промежуточных ситуаций, в каждой из которых решается одна и та же задача — изменяются лишь данные,— к заключительным ситуациям, в которых будут представлены найденные решения. Разработка методов решения конкретных задач свя зывается с конкретизацией понятий ситуация и элементарный шаг, с определением способов последовательного конструирования решений, с введением некоторых оптимизирующих правил. Довольно общим средством повышения эффективности решающего процесса является редуцирование, т. е. упрощение текущей ситуации, сокращающее объем вычислений, проводимых при анализе множества вытекающих из нее вариантов. Конкретные способы редуцирования могут быть весьма разнообразны и уходят своими корнями в теорию задач соответствующего класса.
58 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА При редуцировании текущая ситуация заменяется некоторой другой, более простой ситуацией, в которой должна решаться та же задача. Допустим, например, что мы ищем корень алгебраического уравнения / (х) = 0 с непрерывной функцией / (х) и рассматриваем текущую ситуацию, заданную отрезком [хъ х2] с вычисленными значениями функции на его концах. Если эти значения оказываются разного знака, то очевидно, что на отрезке существует по крайней мере один корень. В этом случае текущая ситуация может быть редуцирована путем вычисления значения функции / (х) в средней точке отрезка [хъ х2], сравнения полученного значения со значениями / (хг) и / (х2) и заменой исходного отрезка той его половиной, на концах которого функция / (х) принимает значения снова разного знака. В данном случае упрощение ситуации заключается в сокращении отрезка, на котором, как нам известно, существует корень рассматриваемого уравнения. Однако редуцирование возможно не всегда, в связи с чем оно должно переплетаться с процессом расщепления ситуаций — такого обобщения редуцирования, при котором текущая ситуация оказывается критической и поэтому заменяется не одной, а несколькими более простыми ситуациями, каждую из которых необходимо исследовать. В расщепляемой ситуации процесс вычислений ветвится, что отображается в дереве поиска вершинами, из которых исходит"; несколько ребер. Назовем число этих ребер коэффициентом ветвления вариантов в соответствующей вершине. Обычно существует некоторая свобода выбора при расщеплении текущей ситуации, которую целесообразно использовать для того, чтобы по возможности минимизировать коэффициент ветвления. Способы такой минимизации разнообразны и уточняются при содержательном анализе конкретных задач. Иногда те ситуации, на которые расщепляется текущая, можно упорядочить, поставив на первое место наиболее перспективную из них, которая скорее всего должна привести к желаемому результату, на второе — самую перспективную среди остальных, и т. д. Перебор ситуаций в таком порядке также повышает эффективность вычислений. Кроме того, может оказаться, что полный обход
I. КОМБИНАТОРНЫЙ ПОИСК 59 дерева поиска почему-либо практически невозможен и тогда приходится отказываться от рассмотрения менее перспективных вариантов. Оценка перспективности ситуаций производится опять- таки на основе содержательного рассмотрения конкретных задач. Покажем, как оно проводится, на примере следующей задачи. Анализ троичной матрицы на вырожденность. Эта задача формулируется так: задана некоторая троичная матрица £/, и требуется найти троичный вектор v, ортогональный каждой строке матрицы £/, или убедиться в том, что такого вектора не существует (в этом случае матрица U называется вырожденной). Напомним читателю, что два вектора ортогональны, если один из них обладает значением 0, а другой значением 1 некоторых одноименных компонент. Заметим также, что анализ троичной матрицы на вырожденность имеет массу полезных интерпретаций. Например, если матрица U задает ДНФ некоторой булевой функции /, то эта задача интерпретируется как известная в теории формального вывода задача проверки тождества / = 1. К этой задаче сводится решение и ряда других задач, рассматриваемых в настоящей книге. Будем решать данную задачу методом комбинаторного поиска, наполнив его следующим конкретным содержанием. Положим, что текущая ситуация будет характеризоваться двумя переменными величинами: троичным вектором w, число компонент которого фиксировано и равно числу столбцов в матрице С/, и троичной матрицей Г, значениями которой будут служить некоторые миноры матрицы U. Именно перебор значений вектора w должен привести нас к искомому решению, т. е. к вектору v, разумеется, если последний существует. Положим также, что в текущей ситуации уже определены значения некоторых компонент вектора w, т. е. им приписаны значения 0 или 1, и отыскиваются значения остальных компонент, такие чтобы вектор w стал ортогональным каждой из строк матрицы Т (ее текущего значения), столбцы которой ставятся в соответствие этим компонентам. В начальной ситуации матрица Т совпадает с матри-
60 ГЛ< 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА цей U, а вектор w полностью неопределен, т. е. все его компоненты имеют значение « — ». Элементарный шаг заключается в приписывании значения 0 или 1 некоторой компоненте вектора w или в упрощении матрицы Т путем удаления некоторых строк и столбцов с сохранением нумерации остающихся. Содержательный анализ данной задачи приводит к нахождению следующих правил редуцирования, применение которых может существенно ускорить поиск решения. Правило 1. Из матрицы Т удаляются столбцы, не содержащие ни значений 0, ни значений 1. Правило 2. Из матрицы Т удаляются строки, ортогональные вектору w, а затем столбцы, которым соответствуют компоненты вектора w со значением 0 или 1. Правило 3. Если в матрице Т имеется строка, где лишь одна компонента обладает значением, отличным от «—», то соответствующей компоненте вектора w приписывается инверсное значение. Правило 4. Если в матрице Т существует столбец, не содержащий значения 0 (или значения 1), то это значение приписывается соответствующей компоненте вектора w. Когда редуцирование становится невозможным, производится расщепление текущей ситуации. Правило расщепления предписывает перебор значений 1 и 0 некоторой компоненты вектора w. При этом рекомендуется выбирать такую компоненту, которая соответствует максимально определенному, т. е. имеющему минимальное число значений «—», столбцу матрицы Т. Правило нахождения решения. Если непосредственно после удаления некоторой строки из матрицы Г, согласно правилу 2, матрица становится пустой, текущее значение вектора w представляет искомое решение v. Правило возврата. Если матрица Т становится пустой непосредственно после удаления некоторого столбца или если она содержит строку без значений 0 и 1, то на данной ветви дерева поиска вектор v найти невозможно и следует продолжить обход дерева поиска, возвратившись к последней из точек ветвления с незавершенным перебором. Правило прекращения поиска. Если при полном обходе дерева поиска вектор v найти не удалось, то это свидетельствует о вырожденности матрицы U.
5, КОМБИНАТОРНЫЙ ПОИСК 61 Рассмотрим, к примеру, следующую троичную матрицу, столбцы которой обозначены для удобства теми же буквами a, 6, с, d, e, /, что и соответствующие им компоненты вектора w = (a, 6, с, d, e, /): U = а 0 0 0 0 0 0 0 0 ъ — 0 1 1 — 0 — 1 1 — 0 с — 1 — 0 — — — — — — 1 0 d — — — — 0 1 — — — е — 1 1 0 — 0 1 1 1 0 0 0 / 0" — — 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Договоримся для удобства нумеровать рассматриваемые далее значения переменной матрицы Г, т. е. некоторые миноры (остатки) исходной матрицы U, представляя их как матрицы-константы 7\, Г2, Г3 и т. д. Положим, что Тг = С/. Непосредственное сокращение матрицы U невозможно, поскольку но выполняются условия применения правил редуцирования. Поэтому воспользуемся правилом расщепления и образуем точку ветвления процесса поиска вектора v, соответствующую, выбору значения компоненты а вектора w. Допустим, что а = 1. Тогда, согласно правилам 2 и 1, определение значений остальных компонент вектора w сводится к поиску вектора, ортогонального матрице beef т* = Обратив внимание на строку 1 и применяя правило 3, припишем компоненте / вектора w значение 1, после чего — — 0 — 1 — 1 — — 0 — 1 1 0 — (Г — 1 1 1 1 2 а 4 а
62 ГЛ, 2, МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА матрица сокращается по правилу 2 до следующего вида: — 1 0 — •__ — _ 1 0 1- 1 0 —_ 2 3 4 5 т* = Далее опять применяется правило 3, компонента е получает значение 1, и матрица Т сокращается до ь с Г4 = I О — I 3 . -[•Л Согласно правилу 3 полагаем с = О, а Ъ = 1. Далее срабатывает правило возврата, поскольку матрица Т становится пустой после удаления столбцов. Возвратившись к точке ветвления, полагаем теперь а = = 0. Последующее редуцирование приводит к следующему значению переменной матрицы Т: Ть = ь 1 п и 1 1 0 с — — — — 1 0 d — — 0 1 — — — е — 0 1 1 1 0 0 0 / г 1 0 0 0 0 0 0 7 9 10 11 12 13 Поскольку дальнейшее редуцирование невозможно остается применить правило расщепления. Выберем компоненту е и положим для начала, что е = 1. Тогда матрица Т сокращается до Тй = ъ 1 0 1 d — — 0 1 / 1- — 0 0_ в 8 9 10 Далее по правилу 3 компонента Ъ получает значение 1
5. КОМБИНАТОРНЫЙ ПОИСК 63 и матрица Т сокращается до d "-["J 3 10 затем следует выбор значения 0 для компоненты / и получение остатка d 8 - Г°19 который оказывается вырожденным: компонента d должна получить одновременно значения 0 и 1, что невозможно. Опять срабатывает правило возврата. Рассмотрим теперь оставшийся вариант, положив е = 0. Здесь мы должны найти вектор, оротогональный матрице ь 1 1 0 с — ^~ — 1 0 / г 1 0 0 0 в 7 11 12 13 а=/ а = 0 /Ki Q5 Х*я/ ф \с=0 1 ъч Остаток Вырожден /wV =0 @ ® Хд=/ ф 7f=o f=0 b=0 с=0 (g\ Остаток у вырожден Остаток вырожден Т* = В соответствии с правилом 3, мы должны последовательно выбрать значения /=0, 6 = 0ис = 0, после чего становится очевидным, что мы не можем сделать вектор w ортогональным строке 13. Этим завершается перебор значений вектора w с целью нахождения» ортогонального вектора v и устанавливается отсутствие последнего, т. е. доказывается теу самым вырожденность заданной матрицы U. Описанная последовательность рассуждений отображается в более сжатом виде деревом поиска, показанным на рис. 19. Как видно, дерево оказывается довольно простым и имеет лишь две точки ветвления. Нумерация вершин отражает порядок рассмотрения промежуточных ситу- Рис. 19. Дерево поиска ортогонального вектора.
64 ГЛ. 2, МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА аций: используются те же номера, что и в обозначениях соответствующих значений переменной матрицы Т. На рисунке приведена также информация о выбираемых значениях компонент вектора w. 6. Задачи о покрытии множеств Решение ряда логических задач сводится к рассмотрению некоторых конечных множеств и поиску в них подмножеств с заданными свойствами. Часто поиск сопровождается оценкой качества подмножеств и в этом случае требуется находить такие подмножества, которые, удовлетворяя заданным требованиям, обладали бы наивысшим качеством. Иногда требуется находить все такие подмножества, иногда достаточно найти одно из них. Естественно, что в последнем случае объем вычислений может быть меньше. Зачастую оказывается, что множество решений — подмножеств с заданными свойствами — является выпуклым по отношению включения, и это означает, что если некоторое подмножество является решением, то и любое его расширение, получаемое добавлением в подмножество некоторых новых элементов, также будет представлять собой решение. В таком случае нахождение множества всех решений сводится к нахождению его нижней границы, что может иногда существенно сократить объем производимых при поиске вычислений. Хорошим примером к этому может послужить следующая задача. Нахождение всех покрытий множества. Пусть заданы множество А и множество 5, причем элементами последнего служат некоторые подмножества из первого и В является покрытием множества А, что означает следующее: объединение всех элементов из В, т. е. соответствующих подмножеств из А, равно множеству А % Требуется найти все покрытия множества А, составленные из элементов множества В. Выпуклость множества всех покрытий очевидна: действительно, если некоторое подмножество из В является покрытием, то, добавив к нему некоторый новый элемент из В, мы получим опять-таки покрытие, в силу свойств теоретико-множественной операции объединения. Если же мы будем удалять из покрытия некоторые его элементы, мы сможем получить такое подмножество из
6. ЗАДАЧИ О ПОКРЫТИИ МНОЖЕСТВ 65 множества В, которое уже не является покрытием. Множество всех покрытий имеет нижнюю границу, образованную простыми покрытиями, т. е. такими подмножествами из В, которые являются покрытиями, но перестают быть ими при удалении любого элемента. Множество простых покрытий задает таким образом множество всех покрытий, поэтому при решении сформулированной задачи в целом можно ограничиться нахождением именно простых покрытий. Это в какой-то степени упрощает задачуг поскольку перебор подмножеств из В, производимый при поиске простых покрытий, можно ограничить некоторой окрестностью нижней границы множества всех покрытий. Покажем, как это делается, на примере конкретных множеств А и В, используя для их представления булеву матрицу С, строки которой с^ поставлены в соответствие элементам at множества А, а столбцы с; представляют (единицами) те подмножества из А, которые служат элементами bj множества В. При таком представлении данных задача может быть переформулирована в задачу нахождения всех простых столбцовых покрытий булевой матрицы С. Действительно, покрытие множества А будет в этом случае представляться подмножеством столбцов из Су содержащих сообща не менее одной единицы в каждой из строк матрицы С. Если это свойство подмножества утрачивается при удалении любого столбца, покрытие оказывается простым. Итак, пусть А = {аъ а2, а3, а4, аь, а6, а7}, В = = {Ьъ b2, b3, b4, Ьь, be} = {a, b, с, d, e, /}. Обозначая строки матрицы С номерами элементов множества А, положим С = Отобразим производимый перебор последовательностью значений, принимаемых переменным множеством В*. Представим номер старшего элемента в этом подмножестве из В значением индекса /. Например, если В* = {Ьь Ь3, 66}, то/ = 6. Другой индекс £, значениями которого также а Ь 0 1 0 1 1 1 1 0 0 0 1 0 1 0 с 0 1 0 1 1 0 0 d 0 1 0 0 0 1 0 е 1 0 0 0 0 0 1 / 0" 0 1 0 1 0 0 1 2 3 4 5 в 3 А. Д. Закревский
66 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА служат номера элементов из 5, используем для выбора подмножества Bt = {bt, bi+1, ..., bm) из множества В = = {6Ь Ь2, ..., &,, bi+1 ..., 6m}. Представляя формулой i := j операцию присвоения индексу i значения индекса /, сформулируем алгоритм перебора. 1. i:= 0. Множество В* приравниваем пустому множеству ф. 2. Добавляем в В* младший из тех элементов множества Вих, которые не покрываются множеством В*, i := /'.. Если 5* не покрывает множество Л, переходим к началу п. 2. В противном случае текущее значение множества В* включаем в результативное множество Q." 3. i := /. Удаляем из 5* элемент Ъ . Если В* (J ^i+t покрывает множество Л, переходим к п. 2. Иначе, если В* не пустое множество, переходим к началу п. 3, в противном случае реализация алгоритма завершается. Заметим, что в получаемом'с помощью описанного алгоритма множестве Q будут содержаться все простые покрытия множества Л, но, может быть, не только они. Поэтому требуется дополнительный анализ покрытий на простоту. В рассматриваемом примере перебор отражается следующей матрицей, строки которой представляют последовательно анализируемые значения множества В*: а "1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 ь 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 с 0 0 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 rd 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 е 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 / 0" 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 , 1- + + + + + +•
в. ЗАДАЧИ О ПОКРЫТИЙ МНОЖЕСТВ 67 (знаком + отмечены те из найденных покрытий, которые оказываются простыми). Большую роль при решении многих комбинаторных задач играют покрытия с минимальным числом элементов, называемые кратчайшими. Очевидно, что любое кратчайшее покрытие является простым, однако не все простые покрытия кратчайшие. В рассмотренном примере кратчайшими оказались три первых покрытия. Нахождение кратчайших покрытий можно свести к поиску всех простых покрытий и последующему выделению из них кратчайших. Однако этот путь может привести к слишком громоздким вычислениям, особенно когда нужно найти только одно из кратчайших покрытий. В этом случае целесообразно прибегнуть к специальным методам. Нахождение кратчайшего покрытия. Пусть, например, требуется найти кратчайшее столбцовое покрытие следующей булевой матрицы: 1 2 3 4 б 6 " 7 S 9 10 Каждый столбец cj этой матрицы задает элемент bj множества В = {а, 6, с, .., £}, т. е. некоторое подмножество из множества А = {аъ а2, ..., а10}, которое можно использовать в качестве элемента покрытия. Каждая строка ct задает аналогичным образом некоторое подмножество Bt из множества В и представляет одно из предъявляемых к покрытию требований: в покрытие должен войти по крайней мере один из элементов подмножества В(. Если это подмножество содержит лишь один элемент (в строке только одна единица), включение этого элемента становится обязательным, в противном случае допустим выбор, тем более ограниченный, чем меньше единиц в рассматриваемой строке. а Г1 0 0 1 0 0 0 1 0 Lo ь 0 1 0 0 0 1 1 0 0 0 с 0 1 1 0 1 0 0 1 0 0 d 0 0 1 1 0 0 0 1 0 1 е 0 0 0 1 0 0 1 0 0 0 / 1 0 1 0 0 1 0 0 1 0 g 0 1 0 0 1 0 1 0 0 0 h 1 0 0 0 1 0 0 1 1 0 i 11 0 1 0 1 0 1 0 0 lj 3*
68 ГЛ, 2. МЕТ0Д1Д КОМБИНАТОРНОГО ПОИСКА Эти соображения учитываются в следующем простейшем алгоритме конструирования подмножества столбцов, которое может служить достаточно хорошим приближением к кратчайшему покрытию: найти минимальную (по числу единиц) строку, выбрать максимальный среди столбцов, содержащих в ней единицу, и включить его в конструируемое подмножество (вначале оно пустое), затем удалить из матрицы выбранный столбец и все строки, содержащие в нем единицу, и повторить эту процедуру уже для остатка матрицы, и так до тех пор, пока растущее подмножество не станет покрытием. Оно и будет представлять решение задачи. В подготовленном примере этот алгоритм приводит к начальному выбору строки 6 (первой по порядку среди минимальных строк) и столбца /, после чего из матрицы удаляются столбец / и строки 1, 3, 6, 9 и она сокращается до abcdeghi 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 1 0 о" 0 1 1 0 1 2 4 5 7 8 10 Затем выбираются строка 10 и столбец d, а матрица сокращается до a b с е g h i 10 1 1 0 1 0 О*]2 0 0 10 1116. 0 1 0 1 1 0 lj 7 Следующий выбор строки 2 и столбца g приводит к получению покрытия {d, /, g}. В данном случае оно оказывается кратчайшим. Гарантия того, что полученное покрытие действительно будет кратчайшим, может быть выдана лишь алгоритмом комбинаторного поиска, организующим некоторый достаточный для этого перебор, который может оказаться весьма трудоемким. Существенное сокращение этого перебора обеспечивается на основе формулируемых ниже правил редуцирования переменной матрицы X, характеризующей текущую ситуацию. Данные правила применимы в
6. ЗАДАЧЩ.0 ПОКРЫТИИ МНОЖЕСТВ 69 тех ситуациях, когда некоторые два столбца или две строки матрицы X находятся в отношении поглощения. Это отношение определяется следующим образом: булев вектор а поглощает булев вектор Ь, если каждая пара одноименных компонент at и bt удовлетворяет условию at > bt, т. е. не может быть, чтобы at = О, a bt — 1. Правило удаления строки. Из матрицы X удаляется строка х{, если она поглощает некоторую другую строку х;. Правило удаления столбца. Из матрицы Л удаляется столбец х1, если он поглощается некоторым другим столбцом xj. Первое из этих правил универсально в следующем смысле: требования, предъявляемые к покрытию со стороны строки Xj, будут полностью удовлетворены при удовлетворении требований строки х;. Следовательно, строка xt оказывается излишней. Второе правило имеет более частный характер. Удаляя столбец х1, мы тем самым отказываемся включать его в искомое покрытие. Этот отказ оправдывается следующим рассуждением: если существует некоторое кратчайшее покрытие со столбцом хг, то, заменив хг на х;, мы получим другое покрытие, которое также будет кратчайшим. Таким образом, удаляя из рассмотрения столбец хг, мы не теряем возможности найти одно из кратчайших покрытий. Возможность нахождения некоторых из кратчайших покрытий при этом теряется, но это не должно нас волновать, так как для нас достаточно найти лишь одно из них. Наряду с актами редуцирования матрицы X в число элементарных шагов включаются приращения конструируемого покрытия. Правило приращения покрытия. Если некоторая строка х( матрицы X имеет лишь один элемент ос\ со значением 1, то столбец xJ включается в конструируемое покрытие. Естественно, что включаемые в покрытие столбцы удаляются из матрицы X вместе со всеми покрываемыми ими строками, в которых они содержат единицы. Сформулированные правила редуцирования позволяют последовательно упрощать переменную матрицу X, выбрасывая из нее поглощающие строки и поглощаемые столбцы, и искать затем кратчайшее покрытие остатка
70 гл. 2. Методы комбинаторного поиска исходной матрицы С — некоторого ее минора. Если в очередном миноре нет ни поглощающих строк, ни поглощаемых столбцов, следует применять правило расщепления, представляющее собой обобщение правила приращения покрытия. Правило расщепления. В матрице X отыскивается минимальная (по числу единиц) строка и поочередно рассматриваются варианты, связанные с включением в конструируемое покрытие столбцов, имеющих в этой строке единицу. Дополнительное сокращение перебора обеспечивается следующим правилом ограничения, или правилом возврата. Правило возврата. Если в процессе поиска решения удалось найти некоторое покрытие, последующий перебор ограничивается рассмотрением таких подмножеств из В, мощность которых меньше мощности найденного покрытия. Рассмотрим работу сформулированных правил на старом примере. Демонстрация алгоритма. В исходной ситуации принимается, что Х0 = С, а конструируемое покрытие пока пустое. В матрице X удаляется строка 1, поскольку она поглощает строку 9, и строка 3, поглощающая строку 10. В полученном миноре выбрасывается столбец а, так как он поглощается столбцом d. Получается неупро- щаемый далее минор Ь с d e j g h г Хг = -1 0 0 1 1 0 0 Lo 1 0" 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 СИ 0 1 0 1 0 0 lJ 2 4 5 6 7 8 9 10 Выберем теперь строку 4, первую из минимальных по числу единиц. Она содержит единицы в столбцах d и е, в соответствии с чем предстоит рассмотреть два варианта расширения конструируемого множества: включение в него элемента d или отказ от этого и, следовательно, включение элемента е. Анализируя первый вариант, мы удаляем как столбец d, так и покрываемые им строки 4, 8 и 10 и
б. ЗАДАЧИ О ПОКРЫТИИ МНОЖЕСТВ 71 рассматриваем далее остаток матрицы b с е f g h г "1 1 0 0 1 -О (Г 0 10 0 111 Х2 =|1 0 0 1 О О О 10 10 10 1 0 0 0 10 10 Затем выбрасываются поглощаемые столбцы с, е, i и поглощающая строка 2, в результате чего получаем ь f g h ГО 0 1 1-, б 1 1 0 1 0 1 0 1 0 0 0 1 в 7 9 Производится расщепление по строке 5. Включение в решение элемента g приводит к удалению покрываемых им строк 5 и 7, а также к последующему выбрасыванию поглощаемых столбцов b и /г. Очередной минор элементарен: X, -И Становится очевидным, что в решение следует включить единственный оставшийся элемент /. Таким образом получаем покрытие {d, g, /}, содержащее три элемента. Запомним пока его. В дальнейшем есть смысл продолжать поиск покрытий только среди таких подмножеств из В, которые состоят не более чем из двух элементов. Возвращаясь к предшествующей точке ветвления вариантов, мы вновь рассматриваем минор Xs и выбираем теперь оставшийся вариант покрытия строки 5, по которой производилось расщепление, т. е. выбираем столбец h. Испытывая получаемое при этом подмножество {d, h}, убеждаемся, что оно не является покрытием, например им не покрывается строка 6. В связи с этим возвращаемся к рассмотрению ситуации, характеризуемой матрицей Хг. В этой ситуации расщепление производилось по строке 4. Теперь в качестве первого элемента решения выбираем не rf, a e и выбрасываем его и покрываемое им строки 4 и 7. Удаляется также столбец d1
72 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА соответствующий уже рассмотренному варианту, после чего мы переходим к рассмотрению матрицы Хъ = матрице b '1 0 1 0 0 0 ст с 1 1 0 1 0 0 ро ь "1 1 0 0 0 / 0 0 1 0 1 0 ка с 1 0 1 0 0 g h 1 0 1 1 0 0 0 1 0 1 0 0 5 и ci / h 0 0 1 0 0 1 1 1 0 0 г 0" 1 0 0 0 1_ гол г 0] 0 0 0 1J 1 2 5 6 8 9 10 беи 2 6 8 9 10 ха для покрытия строки 10 необходимо включить в решение элемент i. Однако после этого потребуется обеспечить покрытие остатка ь с f к -1 1 0 От2 1 0 1 0 6 0 1 0 ll8' Lo о 1 i_ х7 = для чего испытываемое подмножество {е, i) придется расширить. Отсюда заключаем, что покрытия мощностью менее трех не существует. Следовательно, найденное ранее покрытие {d, g, /} является кратчайшим. Проведенные рассуждения представляются более компактно схематически в виде дерева поиска, изображенного на рис. 20, где точки ветвления рассматриваемых вариантов отмечены кружками. В последних заключены номера строк, по которым производится разложение, а исходящие из них дуги отмечены символами выбираемых столбцов. Дуги нагружены также метками выполняемых действий: показана последовательность рассматриваемых миноров и способ получения их друг из друга — перечислены удаляемые столбцы и строки. Номера ярусов дерева совпадают с мощностью дсдьггываемых подмножеств из Вч
в, ЗАДАЧИ О ПОКРЫТИЙ МНОЖЕСТВ 73 Отбросив информацию об однозначных операциях редуцирования, не связанных с ветвлением вариантов, можно существенно упростить вид дерева поиска (рис. 21). Производимый при поиске перебор оказывается в данном случае мизерным: он ограничен двумя точками ветвления коэффициентом О Рис. 20. Дерево поиска кратчайшего покрытия. £ в каждой из них. Рассмотренный пример оказался,таким образом, довольно простым. Однако объем вычислений быстро возрастает с увеличением размеров исходной булевой матрицы. В этом случае для решения задачи могут быть рекомендованы дополнительные приемы. Рассмотрим, например, си- Qx Щ / (р N 2 П J Решение Рис. 21. Упрощенная форма дерева поиска кратчайшего покрытия. туацию, когда ищется покрытие мощностью не свыше к (допустим, что некоторое покрытие мощностью к + 1 уже найдено) и анализируется очередной минор на глубине Z, где испытываются подмножества из В мощностью I. Очевидно, что в этой ситуации следует ограничиться проверкой лишь таких добавок к испытываемому подмножеству, мощность которых не превосходит к — Z. Если к — I = 1, можно обращать внимание лишь на столбцы, состоящие сплошь из единиц, если к — I = 2, производится поиск таких пар столбцов, покомпонентная дизъюнкция которых дает столбец без нулей, и т, д.
74 гл. 2. методы компййаторного поиска 7. Поиск минимальных разбиений Довольно часто решение логических задач связывается с поиском уже не какого-то одного подмножества заданного множества, а некоторой совокупности подмножеств, удовлетворяющей определенным требованиям, и оптимальной в том или ином смысле, например минимальной по числу выбранных подмножеств. Иногда эта совокупность представляет собой разбиение заданного множества на некоторые классы. Примером задачи такого типа может служить широко известная задача о раскраске графа, формулируемая следующим образом. Задача о раскраске графа. Задан неориентированный граф G = (F, U) с множеством вершин V и с множеством ребер U. Требуется раскрасить его вершины в минимальное число цветов, причем так, чтобы соседние вершины были окрашены в различные цвета. Поясняющий эту задачу пример приведен на рис. 22, где показаны конкретный граф (а) и минимальная раскраска его вершин (б): номера вершин заменены начальными буквами имен использованных красок (к — красная, с — синяя, з—зеленая). Этот пример достаточно прост и решить его можно вручную, как говорится «эвристически», не утруждая себя использованием или тем более разработкой строгих формальных методов, гарантирующих а) б) Рис. 22. Неориентированный граф (а) и его минимальная раскраска (б). оптимальность получаемых решений. Однако нахождение минимальной раскраски более сложных графов представляет собой весьма трудоемкую задачу, решение которой реально только с помощью ЭВМ, а последняя может ру-
1. ПОИСК МИНИМАЛЬНЫХ РАЗБИЕНИЙ 75 ководствоваться лишь четко сформулированными правилами поиска. Займемся поэтому соответствующей формализацией. Простейшим и в то же время наиболее трудоемким является решение задачи «в лоб», заключающееся в переборе всевозможных раскрасок вершин, отсеивании тех из них, в которых нарушается условие разноцветности соседей, и выборе среди остающихся минимальной по числу использованных красок. Однако этот метод явно неразумен — уж очень много приходится перебирать вариантов раскраски: до сп, где п — число вершин, а с — число используемых красок. Более практично свести эту задачу к задаче о кратчайшем покрытии. Для этого следует отыскать все максимальные пустые подграфы графа G (пустым называется граф без ребер) и построить матрицу бинарного отношения принадлежности вершин графа G этим подграфам. После нахождения кратчайшего покрытия этой булевой матрицы остается выбрать образующие его подмножества вершин, т. ^е. некоторые из максимальных пустых подграфов, и устранить возможные пересечения между ними. Полученное таким образом разбиение множества V представит искомое решение: вершины каждого класса окрашиваются в свой цвет. Этот метод гарантирует нахождение минимальной раскраски, однако обладает своими недостатками, связанными с необходимостью построения матрицы указанного бинарного отношения, которая может оказаться слишком громоздкой. Рассмотрим в связи с этим другой способ раскраски графа, позволяющий избежать построения промежуточной матрицы и поиска ее кратчайшего покрытия, но также гарантирующий получение оптимального решения. При этом способе выполняется некоторая последовательность довольно простых действий — элементарных шагов, изменяющих текущую ситуацию путем ее редуцирования или расщепления. Таким образом, мы будем иметь дело с некоторым методом комбинаторного поиска* Уточним его. Метод последовательной раскраски. Будем окрашивать вершины последовательно, ана~ ливируя возникающие ситуации и решая каждый раз, какую вершину следует выбрать в качестве очередной и в ка-
76 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСК \ кой именно цвет ее следует окрасить — так определяется содержание элементарного шага. Текущая ситуация будет характеризоваться тем, что часть вершин окажется уже окрашенной в определенные цвета, остальные — нет. Ситуация может оказаться такой, что для того, чтобы не потерять возможности нахождения минимальной раскраски, будет необходимо рассмотреть несколько вариантов выбора очередного шага, т. е. потребуется расщепить текущую ситуацию. Однако может встретиться и такая ситуация, которую можно редуцировать, окрашивая некоторую из вершин с гарантией того, что при этом не будет допущена какая-то ошибка и возможность нахождения оптимального решения не будет утрачена. Сформулируем соответствующие правила редуцирования ситуации. Правило ввода нового цвета. Если существует неокрашенная вершина, которую нельзя окрасить ни в один из уже использованных цветов, то ее следует окрасить в новый цвет. Правило это весьма тривиально, но эффективно. Например, изГ него следует, что решение задачи в целом целесообразно начинать с раскраски вершин некоторого полного подграфа. Очевидно, что такая раскраска однозначна: все вершины полного подграфа должны быть окрашены в различные цвета, а в какие именно, неважно, поскольку другие вершины еще не окрашивались. Чем больше вершин будет при этом окрашено, тем лучше, откуда следует, что для раскраски стоит выбирать наибольший из полных подграфов, т. е. содержащий максимальное число вершин. По правилам раскраски, вершину нельзя окрашивать в те цвета, которые уже использованы для окраски соседних с нею вершин. Поэтому, окрашивая некоторую вершину, мы одновременно вводим запрет на использование выбранного цвета для окраски соседних вершин. Однако такой запрет может быть наложен ранее — при окраске некоторых других вершин. Правило использования старого цвета. Для окраски некоторой вершины можно применить старый (уже использованный) цвет, если это не приводит к сокращению числа вариантов возможной окраски соседних неокрашенных вершин. Применение этих двух правил редуцирования может носить цепной характер, когда предшествующие акты реду-
7. ЦОИСК МИНИМАЛЬНЫХ РАЗБИЕНИЙ 77 цирования будут создавать условия для последующих. При отсутствии таких условий применяется следующее правило. Правило расщепления. Рассматриваются все допустимые окраски некоторой вершины в старые цвета и в один из новых. С целью сокращения возникающего при этом перебора рекомендуется применять это правило к таким вершинам, число возможных окрасок которых максимально ограничено. Естественно искать такие вершины в непосредственном соседстве с уже окрашенными. Пример. Покажем применение сформулированных правил к раскраске графа, изображенного на рис. 22, а, попутно уточняя метод. Отыскивая в графе вершины с интересующими нас свойствами, будем организовывать перебор вершин в порядке номеров и при прочих равных условиях останавливать выбор на вершинах, наиболее связанных с уже окрашенными, а среди одинаковых и по этому признаку — с максимальным числом исходящих из них ребер. Допустим, что мы обладаем достаточным запасом красок: красной (к), зеленой (з), синей (с), желтой (ж) и т. д. В исходной ситуации все вершины не окрашены, множество использованных красок пусто. 1-й шаг. Применяя правило ввода нового цвета, выбираем вершину 1, обладающую максимальным числом исходящих из нее ребер, и окрашиваем ее в красный цвет, представляя символически это действие как 1к. 2-й шаг. Следуя этому же правилу, окрашиваем вершину 10 в зеленый цвет: 10з. 3-й шаг. В возникшей ситуации применимо правило использования старого цвета. Окрасим вершину 3 в зеленый цвет, поскольку у нее только одна соседняя вершина 7, для окраски которой зеленый цвет все равно нельзя использовать — в этот цвет окрашена соседняя с ней вершина 10. Итак: Зз. 4-й шаг. Опять применяем правило использования старого цвета. Окрашиваем вершину 6 также в зеленый цвет. У единственной неокрашенной соседней вершины 9 уже имеется запрет на^спользование этой краски. Таким образом: 6з. 5-й шаг. Аналогично: 8з.
78 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА Возникшая теперь ситуация отражена на рис. 23. Ситуация оказывается критической и применение сформулированных правил редуцирования в ней невозможно, в связи с чем приходится воспользоваться правилом расщепления, предусмотрев последовательное рассмотрение нескольких вариантов очередного шага. 6-й шаг (ветвление). Выбираем вершину 9 как наиболее тесно связанную с уже окрашенными и в то же время обладающую максимальным количеством исходящих из]нее ребер. Ее можно окрасить в старый, красный цвет (но при этом возникнет запрет на использование этого цвета при окраске вершин 4 и 5) или в новый, синий. Выбираем пока первый из этих ва- Л 1 Юз X I 6 з Л риантов: 9к. Далее следуют: 7-й шаг: 4с. 8-й шаг (ветвление: 5з или 5ж). Выбираем сначала 5з. Рис. 23. Пример критической ситуации при раскраске графа. 9 к 9 с i I 4 с 2 с 5 з 5 ж 5 з i i п I Отказ от , I 2 ж Варианта 4 к } (п>4) j 7 к 7 к А А Первое Второе, решение оптимальное (п=Ь) решение (/7=3) Рис. 24. Дерево поиска минимальной раскраски графа, изображенного на рис. 22. 9-й шаг: 2ж. 10-й шаг: 7к. Теперь все вершины окрашены, и число использованных красок равно четырем. Рассмотрим другие варианты, для чего надо вернуться к последней точке ветвления, соответствующей шагу 8. 11-й гааг: выбираем остающийся вариант 5ж.
?. ПОИСК МЙШШАЛЬНЫХ РАЗБИЕНИЙ 79 ОчеЬйднб, ЧтЪ> продолжая рассмотрение этого варианта, мы* не получим лучшего решения, так как число используемых красок никак не будет меньше четырех. Поэтому прекращаем его рассмотрение и возвращаемся к предыдущей точке ветвления, соответствующей шагу 6. 12-й шаг: выбираем оставшийся вариант 9с. 13-й шаг: 2с. 14-й шаг: 5з. 15-й шаг*, 4к. 16-й шаг: 7к, На этом процесс окраски вершин завершается. Минимальность числа использованных красок — в данном случае трех — гарантируется описанным методом, реализующим достаточный для этого перебор вариантов. Полученное решение совпадает с решением, изображенным на рис. 22, б. Процесс решения, описанный нами во всех подробностях, можно представить более компактно деревом поиска, показанным на рис. 24. Метод конденсации. Итак, мы познакомились с таким методом последовательной раскраски вершин графа, при котором очередной вершине назначается вполне определенный цвет, сменить который можно только при возврате к соответствующей точке ветвления в дереве поиска. Между тем возможен и другой подход, при котором перекраска вершин становится типичной. Этот подход порождает новый способ решения задач, связанных с поиском минимальных разбиений множеств. Назовем его методом конденсации (почему именно так, будет показано ниже) и проиллюстрируем на примере формулируемой сейчас задачи о минимальной имплицирующей матрице. Для начала введем некоторые определения. Рассматривая троичный вектор и, обозначим через N0 (u) множество номеров тех его компонент, которые обладают значением 0. Аналогично введем множества Nt (u) и N_ (и). Будем говорить, что троичный вектор и имплицирует троичный вектор v, если N0 (v) cz N0 (u) и ^i (v) S -ATi (u) (это название отношения оправдывается тем, что при интерпретации троичных векторов как элементарных конъюнкций оказывается, что последние действительно находятся в отношении импликации).
80 №, 2. МЕТОДЫ КОМВИНАТОРНОГО ПОИСКА Положим далее, что матрица U имплицирует матрицу V, если для каждой строки матрицы V найдется имплицирующая ее строка в матрице U и для каждой строки матрицы U найдется имплицируемая ею строка в матрице V. Очевидно, что для заданной матрицы V можно найти много различных имплицирующих ее матриц. Наша задача заключается в том, чтобы найти минимальную среди них (по числу строк). Нетрудно сообразить, что сформулированная задача эквивалентна задаче разбиения множества строк матрицы V на минимальное число таких классов, каждый из которых будет образован взаимно неортогональными строками — будем считать такие строки совместимыми. Построив так называемый граф несовместимости, вершины которого соответствуют строкам матрицы V, а ребра указывают на пары, находящиеся в отношении ортогональности, мы увидим, что решение рассматриваемой задачи сводится к нахождению минимальной раскраски этого графа. Следовательно, задачу можно решить уже знакомым нам способом, например путем образования всех максимальных подмножеств взаимно совместимых строк матрицы V (максимальных пустых подграфов), построения соответствующей булевой матрицы отношения принадлежности строк этим подмножествам и нахождения ее кратчайшего покрытия. Однако более практичным при решении этой задачи окажется именно метод конденсации. Идея метода заключается в образовании множества так называемых капель, составленных из взаимно совместимых строк, и последовательном преобразовании этого множества путем попарного слияния некоторых капель. Этот процесс, условно называемый конденсацией, начинается с исходной ситуации, когда каждая строка матрицы образует свою, отдельную, каплю, и завершается некоторой тупиковой ситуацией, когда уже никакая пара капель не может быть слита в одну: оказывается, что каждая пара капель содержит некоторую пару ортогональных строк, одна из которых принадлежит первой капле, другая — второй. Пусть некоторая капля образована элементами подмножества R = {гь г2, ..., гд} множества всех строк мат- *-цы V.
1. ПОИСК МИНИМАЛЬНЫХ РАЗБИЕНИЙ] 8l Отождествим ее с вектором г, для которого JV0 (г) = N0 (n) U ЛГо (г,) U • • • U Wo (г,), iVi (г) = Nt (rx) U iVi (r.) U • • • U К (rg). Согласно построению вектор г имплицирует все элементы множества R, играя при этом роль простой импликанты. Последнее означает, что любое сокращение множества N0(v) или множества N1(v), т. е. замена в векторе г любой единицы или нуля значением «—», приводит к тому, что этот вектор перестает быть импликатной по крайней мере для одного из элементов множества R. Таким образом, операция слияния взаимно неортогональных векторов г^Гг, ..., vq определяется строго формально как операция нахождения их общей простой импликанты г. Введем для этой операции специальное обозначение: Г = Гх * Г2 * . . . * Гд. Из определений следует, что две различные капли г и s могут слиться тогда и только тогда, когда векторы г и s совместимы, т. е. взаимно неортогональны: #о (г) П #i (*) = Ф и N, (г) П N0 (s) = ф. Если слияние возможно, то получаемая в результате этого действия капля будет описываться вектором г * s. Любая текущая ситуация тождественна некоторому множеству капель и, следовательно, может быть представлена некоторой троичной матрицей Т (строки — капли), аналогично тому, как описывается и исходная ситуация Т0 = = V. Процесс решения задачи в целом отображается некоторой ветвящейся последовательностью значений матрицы Г, приводящей к тупиковым ситуациям, среди которых находится искомое решение — минимальная имплицирующая матрица для матрицы V. Из общих соображений следует, что слияние двух строк tt и ty не ухудшит ситуацию, если получаемая в результате строка tfr = tt * tj будет обладать не меньшими возможностями слияния с другими строками, чем строка t^ или чем строка tj. Обозначив через Т\ и Т\ подмножества
&2 Y\u. 2. МетодМ комбинаторного поиска строк переменной матрицы Г, совместимых соответственно со строками tf и t;-, и учитывая, что Ть = Г* f] Tj, сформулируем следующее правило редуцирования. Правило слияния строк. Совместимые строки tt и t; сливаются, если выполняется по крайней мере одно из условий: Т\ с: Т] или Т] с= Г-. В частности, эти условия всегда выполняются, если одна из рассматриваемых строк имплицирует другую. Этот случай особенно интересен, поскольку нахождение таких пар строк достаточно просто. С другим простым случаем мы встречаемся, когда строка it совместима со строкой tj и только с ней. Матрица Т может редуцироваться также путем уменьшения числа ее столбцов, для чего применяется следующее правило. Правило удаления столбца. Если в некотором столбце матрицы Т отсутствует значение 0 (или 1), то принимается решение поставить в соответствующем столбце искомой матрицы-импликанты всюду инверсное значение 1 (или 0), после чего данный столбец игнорируется, т. е. удаляется из матрицы Т. Столбец удаляется и в том случае, когда он состоит целиком из символов «—». Это значение присваивается всем компонентам соответствующего столбца матрицы-импликанты. Демонстрация метода. Рассмотрим применение этих правил на конкретном примере, когда исходная матрица V имеет следующий вид: а 1 — 1 0 — — — — — ъ 0 0 — 0 — 1 0 — 1 с 0 0 — — — — — — 0 — d 1 Z 1 — 0 1 — — 1 0 € — 1 — 1 — 0 — — — — / 1 — — — — — 0 — g — — — 1 1 1 1 —. — Л —~ 1 0 1 — — 1 0 — — 1 2 3 4 5 в 7 8 9 10 11 Прежде всего удалим столбцы с и g, запомнив, что в результативной матрице-импликанте они должны будут
7. ПОИСК МИНИМАЛЬНЫХ РАЗБИЕНИЙ 83 получить соответственно значения 0 и 1. После этого оказывается, что строка 3 имплицируется строкой 5, и, следовательно, ее также можно удалить, поскольку продукт слияния этих строк совпадает со строкой 5. В аналогичном отношении оказываются строки 9 и 4, и строка 9 так же удаляется. Трансформированная таким образом матрица Т принимает следующее значение: а \ 1 0 — — ь 0 0 — 0 1 1 d 1 i — 0 1 1 0 е — 1 0 — — / 1 — — 0 — h —" 0 1 — 1 — 1 2 4 5 6 7 8 10 11 л= Обратив внимание на строку 6, мы видим, что она совместима только со строкой 2. Сливая эти строки, мы получаем каплю, уже не совместимую ни с чем и поэтому «вы падающую в осадок», т. е. вводимую в матрицу U, где накапливаются элементы решения (вначале эта матрица пустая): а Ь с d e f g h [/ = [0000 — 11-]. Напомним, что в столбцах с и g мы договорились ставить соответственно 0 и 1. После удаления из матрицы Т строк 2 и 6 столбец а оказывается без нулей и поэтому тоже удаляется с соответствующими оговорками. Аналогичная операция выполняется над столбцом /. После этого устанавливается отношение импликации между сроками 4 и 1, а также между строками 7 и 10. Имплицируемые строки 1 и 10 удаляются, и матрица Т сокращается до г.= b 0 1 1 d 1 — 1 —. 0 е — 1 0 — — h 0" 1 — 1 — 4 5 7 8 11
84 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА Здесь находится строка 4, совместимая лишь со строкой 7. Сливаясь, они образуют вторую каплю, «выпадающую в осадок». Остальные три строки оказываются взаимно совместимыми и образуют третий элемент решения. Таким образом завершается формирование результата — матрицы-импликанты U с минимальным числом строк: [0000 — 11—1 10 0 1 0 0 1 0 . 110 0 10 1 1J В рассмотренном примере цепной процесс редуцирования дошел до победного конца, без встречи с какой-либо критической ситуацией и соответствующей ей точкой ветвления вариантов. В общем же случае такого рода встречи составляют правило, а не исключение. В связи с этим сформулируем дополнительно правило расщепления. Правило расщепления. В матрице Т отыскивается строка, которой соответствует минимальное число совместимых с ней других строк, и рассматриваются поочередно соответствующие варианты слияния капель. 8. Приближенные методы Стратегии поиска оптимального решения. Можно сказать, что дерево поиска порождается операциями расщепления ситуаций. Напомним, что оно не задается априори, а строится в ходе решения каждой конкретной задачи. Вначале оно состоит лишь из одной вершины, поставленной в соответствие начальной ситуации, т. е. исходным данным. Затем эта ситуация рас- Дэпляется или редуцируется (впрочем, редуцирование удобно рассматривать как частный случай расщепления), и в дерево вводятся новые вершины, соответствующие возникающим при расщеплении ситуациям, и инцидентные им ребра, соответствующие некоторым элементарным преобразованиям исходной ситуации, приводящим к этим новым ситуациям. В некоторый произвольный момент процесса поиска решения мы имеем дело с текущим состоянием дерева. Его концевые вершины соответствуют еще не расщепленным ситуациям, и очередное элементарное приращение дерева производится путем выбора одной из этих вершин,
8. ПРИБЛИЖЕННЫЕ МЕТОДЫ 85 расщепления соответствующей ситуации и отображения результата расщепления веером исходящих из выбранной вершины новых ребер и инцидентных им вершин, представляющих новые ситуации. Существуют различные стратегии поиска решения, которые можно классифицировать по тому, как производится выбор ситуации для очередного акта расщепления, и по способу расщепления выбранной ситуации. Каждая из этих стратегий обладает своими достоинствами и недостатками и может оказаться предпочтительной на некотором классе задач. Способы расщепления ситуаций разнообразны и определяются содержанием решаемых задач. Общим для них является, пожалуй, стремление к минимизации коэффициента ветвления вариантов — числа новых ситуаций, на которые расщепляется старая. В частности, этот коэффициент может принимать значение 0, когда оказывается, что на рассматриваемой ветви решения не существует, или значение 1, когда ситуация редуцируется. Обширен и практически весьма важен класс оптимизационных задач. Такая задача обладает некоторым множеством решений S = {sx, s2, • • •» 5Л> на котором обычно задается функция стоимости c(st). Решая оптимизационную задачу, надо найти такое ее решение, на котором функция стоимости принимает минимальное значение (в этом случае задача называется также минимизационной). Ниже мы будем рассматривать различные стратегии поиска оптимального решения, допустив для упрощения классификации, что способ расщепления ситуаций зафиксирован. Если стоимость решения может быть определена только после его получения, то очевидна неизбежность нахождения всего множества решений S с целью последующего выбора из этих решений оптимального. При этом потребуется построить полное дерево поиска, представляющее своими концевыми вершинами все решения. Пример такого дерева с заданными на концевых вершинах стоимостями решений показан на рис. 25 (концевые вершины представлены черными кружочками). Получить полное дерево поиска можно методом его обхода или методом поярусного построения. Каждый из них задает свой порядок расщепления вершин. Метод
86 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА обхода дерева поиска был уже рассмотрен нами ранее, на примере задачи нахождения кратчайшего покрытия. Идея этого метода отображена на рис. 26, где показано направление обхода дерева и порядок его построения (отображенный на рисунке нумерацией вершин). При методе по- ярусного построения дерева поиска последовательно строится ярус за ярусом, как это показано на рис. 27. Разнообразие стратегий поиска увеличивается, если стоимость искомых решений можно как-то оценить еще до их получения или в процессе их «построения». Допустим, что это можно сделать в каждой из ситуаций, представляемых вершинами дерева поиска, определив на ней значение оценки стоимости, задающей нижнюю границу стоимости решений, получаемых исходя из этой ситуации. Например, при поиске кратчайшего столбцового покрытия булевой матрицы, когда решения конструировались путем наращивания некоторых подмножеств столбцов при движении по дереву поиска сверху вниз, мы пользовались простейшей оценкой стоимости решений, вытекающих из рассматриваемой ситуации. Она принималась равной числу столбцов, уже включенных в соответствующее подмножество. Пользуясь оценкой стоимости, можно сокращать дерево поиска, запоминая лучшее из уже найденных решений и отказываясь затем от расщепления ситуаций, на которых оценка стоимости принимает значение, большее или равное стоимости этого решения. Эта идея может быть реализована и в рамках метода обхода дерева поиска, как это было сделано при описании способа решения задачи о кратчайшем покрытии, и в рамках метода поярусного построения дерева. При этом вершины дерева поиска будут рассматриваться в порядке, предписанном этими методами, но некоторые из них будут отсекаться. Рассмотрение очередной вершины заключается в выяснении того, не представляет ли она решение, в вычислении значения оценки стоимости в противном случае, и в расщеплении ситуации, если эта оценка ниже стоимости лучшего из уже найденных решений. На рис. 28 показан уже знакомый нам пример полного дерева поиска, на вершинах которого на этот раз заданы значения оценки стоимости (допустим, что они именно такие). Результаты усечений этого дерева по
6. ПРИБЛИЖЕННЫЕ МЕТОДЫ 87 /4 12 12 13 15 Рис. 25. Полное де- Рис. 26. Метод обхода дерева поиска. рево поиска со стой- а) реализованная к текущему моменту вре- мостями решений. мени траектория обхода и построенная часть дерева; б) порядок рассмотрения вершин при полном обходе. 19 20 21 22 23 Рис. 27. Порядок рассмотрения вершин дерева поиска при поярусном построении. М 12 12 13 Рис. 28. Полное дерево поиска с оценками стоимости решений. ШI а) б) Рис. 29. Усечение дерева поиска: а) при методе обхода, б) при поярусном построении.
f$ ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА рассмотренным методам представлены на рис. 29 (отсекаемые вершины отделены штриховой линией). На использовании оценок стоимости основан и широко известный метод ветвей и границ, суть которого заключается в таком порядке расщепления вершин, при котором каждый раз среди концевых вершин участка дерева поиска, построенного к текущему моменту времени, выбирается вершина с минимальным значением оценки стоимости. При ее последующем расщеплении сразу же подсчитываются значения оценки стоимости для вершин — продуктов расщепления. Метод ветвей и границ хорош тем, что при нем увеличивается вероятность того, что уже первые из находимых решений будут близки к оптимальным. Это увеличивает число вершин, выбрасываемых из последующего рассмотрения (как это видно на рис. 30, где проиллюстриро- Рис. 30. Порядок расще- ва решение данным методом ста- пления вершин при ме- \ тоде ветвей и границ. Рого примера). Иногда, например в задаче о кратчайшем покрытии, стоимость решения равна длине пути, связывающего корень дерева с вершиной, представляющей решение. При этом простейшей оценкой стоимости решений, порождаемых некоторой ситуацией, может служить номер яруса, на котором расположена соответствующая данной ситуации вершина. В этом случае метод ветвей и границ практически совпадет с методом поярусного построения дерева. Наряду с отмеченным достоинством метод ветвей и границ обладает и существенным недостатком, затрудняющим его применение. Этим недостатком являются повышенные требования к памяти, необходимой для фиксирования информации о всех концевых вершинах построенного участка дерева, т. е. о соответствующих им ситуациях, ожидающих своего расщепления. При решении многих практически интересных задач число таких ситуаций может достигать весьма больших значений. Заметим, что этим же недостатком обладает и метод поярусного построения дерева.
8. ПРИБЛИЖЕННЫЕ МЕТОДЫ 89 Более практичным в подобных случаях оказывается метод обхода дерева поиска, реализующий так называемый лексикографический перебор вариантов, порождаемых последовательным расщеплением ситуаций: продукты расщепления каждой ситуации нумеруются и перебираются затем в соответствующем порядке. При методе обхода достаточно сохранять в памяти информацию лишь о тех ситуациях, которые соответствуют вершинам, расположенным на пути от рассматриваемой вершины к корню дерева. Объем этой информации, как правило, невелик. Поиск приближений. Найти оптимальное решение удается далеко не всегда, так как для большинства практических задач на это потребовалось бы слишком много времени. В связи с этим широкое распространение получили разнообразные методы нахождения «достаточно хороших» приближений к оптимальным методам, или, как мы будем называть их ради краткости, приближенные методы. Производимый в приближенных методах перебор вариантов существенно сокращается путем отбрасывания менее перспективных из них. Однако делается это без гарантии того, что среди отбрасываемых вариантов не окажется оптимальный. Сокращение перебора оправдывается лишь статистически. Допустим, что все концевые вершины дерева поиска представляют собой решения, хотя по качеству они могут сильно различаться. Для отсечения менее перспективных вариантов можно ввести некоторый порог, считая, что если для некоторой ситуации значение оценки стоимости превышает порог, то ситуация бракуется и не расщепляется. Очевидно, что при этом порог не должен быть ниже минимальной среди оценок рассматриваемых ситуаций. Порог может фиксироваться на все время решения задачи (например, если известна заранее стоимость оптимального решения), а может и изменяться в процессе поиска. Изменяя значение порога, можно регулировать время, затрачиваемое на поиск решения. Понижение порога будет приводить к уменьшению этого времени, однако следует помнить, что при этом может пострадать качество находимого решения. Планирование времени осуществляется легче, если оценки стоимости используются не для сравнения с поро-
90 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА гом, а лишь для линейного упорядочения конкурирующих между собой ситуаций, с целью последующего выбора некоторого заданного числа тех из них, которые оказались наиболее перспективными. Рассмотрим некоторые варианты такого подхода, которые можно использовать для соответствующих модификаций метода обхода и метода поярусного построения дерева поиска. Один из этих вариантов заключается в ограничении коэффициента ветвления рассматриваемых ситуаций задаваемым заранее числом к. При этом после расщепления каждой из рассматриваемых ситуаций из продуктов расщепления выбираются для последующего рассмотрения ровно к ситуаций (или все продукты расщепления, если Рис. 31. Обход дерева поиска с огра- Рис. 32. Поиск решения ничением на коэффициент ветвления: методом невода при к = 2. а) при к = 1 находится решение стоимостью 9; 6) при к = 2 находится решение стоимостью 7. их число меньше к). Например, положив значение к равным единице, мы получим самый быстродействующий и в то же время наиболее грубый способ поиска решения. На рис. 31 показан результат применения данной модификации метода обхода дерева поиска к старому примеру (см. рис. 28). Заметим, что если какое-то реше-
8, ПРИБЛИЖЁННЫЕ МЕТОДЫ 91 ние уже найдено, но оценка стоимости в некоторой из еще не расщепленных ситуаций ниже стоимости полученного решения, то поиск лучшего решения будет продолжаться даже при к = 1. При достаточно большом числе ярусов количество рассматриваемых ситуаций может сильно разрастись, если к ;> 2. В этом случае для гарантированного сокращения объема вычислений удобнее ограничить не коэффициент ветвления отдельных ситуаций, а коэффициент ветвления яруса в целом. Эта идея может быть использована для модификации метода поярусного построения дерева поиска и реализуется путем выбора на каждом ярусе к наиболее перспективных ситуаций или всех ситуаций данного яруса, если их число меньше к (рис. 32). Назовем данный способ поиска решения методом невода. Метод невода особенно удобен, когда сильно ограничивается память для запоминания промежуточных результатов поиска. Действительно, продвигаясь от предшествующего яруса к последующему, достаточно фиксировать каждый раз информацию о к ситуациях. Оптимизируя сам процесс поиска решения, т. е. стремясь получить качественное решение за приемлемое время, приходится учитывать затраты времени и на вычисление значений оценки стоимости. Очевидно, что чем точнее оценка, тем она эффективнее, так как в этом случае она позволяет отсечь большее число вариантов и в то же время обеспечить нахождение решения, достаточно близкого к оптимальному. Однако на вычисление более точных оценок тратится больше времени. Возникающее тут противоречие может разрешаться использованием более точных оценок на верхних ярусах дерева поиска, близких к корню, где принимаются более ответственные решения, а число вершин относительно мало, и менее точных, но быстрее вычисляемых оценок — на нижних ярусах, ближе к концевым вершинам. Качество получаемых решений и время, затрачиваемое на их нахождение, определяют эффективность приближенных методов. Она может сильно зависеть от характера используемых в методе оценок. Мы ограничивались рассмотрением экстремальных оценок, точнее, нижних границ стоимостей решений. Такие оценки имеют логический характер, позволяя, например, выявлять множество ва-
92 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА риантов, содержащих все оптимальные решения или некоторые из них. Однако иногда более эффективными могут оказаться статистические, вероятностные оценки, например типа математического ожидания стоимости решения. Вообще говоря, при поиске оптимальных или близких к ним решений абсолютные оценки их стоимости совсем не обязательны. Достаточными оказываются относительные оценки, позволяющие сравнивать различные варианты и определять, какой из них более перспективен. Относительные оценки формулируются обычно на основе содержательного исследования решаемых задач и зачастую носят эвристический характер. Такого типа оценки используются, например, при решении рассматриваемой ниже задачи. Разбиение системы функций. Пусть задана некоторая система функций, число аргументов в каждой из которых не превышает q, причем множества аргументов различных функций могут пересекаться, а число всех различных аргументов заведомо больше q. Требуется разбить эту систему на минимальное число классов так, чтобы общее число аргументов каждого класса не превышало q. Эта довольно общая задача имеет много интерпретаций. В частности, функции могут быть булевыми, и в этом случае задача имеет практический смысл при синтезе логической схемы, реализующей заданную систему булевых функций минимальным числом блоков, количество входных полюсов у которых ограничено числом q. Задача напоминает рассмотренную ранее задачу о раскраске графа. Как и там, здесь требуется разбить некоторое заданное множество, в данном случае множество функций, на минимальное число классов, каждый из которых удовлетворяет некоторому требованию, или, как говорят, является допустимым. Однако между этими задачами имеется и существенное различие: условие допустимости оказывается более сложным. Допустимость подмножества вершин раскрашиваемого графа сводится к попарной совместимости его элементов, допустимость подмножества функций разбиваемой системы не сводится к этому. Попарная совместимость элементов является в последнем случае необходимым условием, но не достаточным.
6, ПРЙБЛЙЖЕННЫЕЗ/МЁТОДЫ 93 Общим для сравниваемых задач является и то, что если некоторое подмножество допустимо, то допустимо и любое содержащееся в нем подмножество. Это позволяет предложить для точного решения сформулированной сейчас задачи метод, аналогичный тому, который был описан при рассмотрении задачи о раскраске графа. Метод заключается в построении всех максимальных допустимых подмножеств и нахождении кратчайшего покрытия ими заданного множества функций. Обратимся к конкретному примеру. Зададим исходную информацию булевой матрицей Р, столбцы которой поставлены в соответствие элементам объединенного множества аргументов системы, а строки соответствуют функциям и показывают наборы их аргументов: первая строка соответствует некоторой функции /х (a, g, /), вторая — функции /2 (&, /, к), третья — функции /3 (/, /, к) и т. д. Р = а "1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 ъ 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 с 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 d 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 е 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 / 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 g 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 h 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 i 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 J 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 к 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 I on 0 0 ' 0 0 о 0 1 1 0 0 0 0 1 0 1 1 2 3 4 б 6 7 8 9 10 11 12 13 14 1 15 16 Максимальное число аргументов одной функции в данном случае равно четырем. Допустим, что мощность объединенного множества аргументов включаемого в решение класса ограничена пятью (q = 5). Перебирая совокупности строк матрицы Р, можно последовательно найти максимальные допустимые подмножества {1, 3}, {1, 5}, {1, 6} и др. Хотя число этих под-
94 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА множеств оказывается довольно большим, все же можно получить их все и решить далее задачу о кратчайшем покрытии, построив предварительно соответствующую булеву матрицу. Однако с увеличением числа строк в матрице Р реализация данного метода очень скоро становится практически невозможной или по крайней мере нецелесообразной. В связи с этим рассмотрим приближенный метод решения данной задачи. Самыми быстродействующими являются цепные алгоритмы, без возвратных движений по дереву поиска. Их реализация разбивается на этапы, и па каждом из этих этапов выбирается лишь один вариант его прохождения, причем оптимальность его условна и определяется некоторым эвристическим критерием, составляющим суть метода. Для решения рассматриваемой задачи мы используем двухступенчатое разбиение решающего процесса на этапы, при котором каждое звено цепного алгоритма будет реализовываться в свою очередь своей цепью, состоящей из более мелких звеньев. Пусть результатом прохождения крупного этапа является включение в решение некоторого класса функций с общим числом аргументов, не превышающим q, а результатом прохождения мелкого этапа — элементарное приращение очередного конструируемого класса, т. е. включение в него некоторой функции исходной системы из числа еще не распределенных по классам. В качестве критерия оптимальности выбора очередного приращения для класса примем мощность пересечения общего множества аргументов функций, уже включенных в класс, с множествами аргументов нераспределенных функций. Оптимальным будем считать такое приращение, т. е. выбор некоторой из нераспределенных функций, которому соответствует максимальное значение этого критерия; в этом случае выбирается функция, наиболее «тяготеющая» к конструируемому классу. Разумеется, выбор ограничивается функциями, включение которых в конструируемый класс не выводит его из числа допустимых, если же таких функций нет, конструирование очередного класса считается завершенным. При наличии нескольких конкурирующих вариантов приращения с максимальным значением данного критерия будем выби-
8. ПРИБЛИЖЕННЫЕ МЕТОДЫ 95 рать тот из них, который приводит к минимальному сокращению числа последующих допустимых приращений. Если же и таких вариантов оказывается несколько, выбирается первый из них, минимальный по номеру. В качестве критерия оптимальности выбора первого элемента для очередного класса примем число аргументов в выбираемой функции, полагая, что чем больше это число, тем лучше, так как в этом случае функция входит, как правило, в меньшее число различных допустимых классов. Начав конструирование нового класса с включения в него оптимального в данном смысле элемента, мы уменьшаем число возможных ошибок, которые можно сделать при последующем наращивании мощности класса. При наличии нескольких конкурирующих вариантов с максимальным значением этого критерия выбирается первый из них. Назовем первый из описанных критериев критерием А, второй — критерием Б и применим данный алгоритм к матрице Р, которую надо разбить на как можно меньшее число таких строчных миноров, чтобы каждый из них имел единицы не более чем в пяти столбцах. Согласно изложенному алгоритму конструирование первого минора начинается с включения в него строки 4, первой из оптимальных по критерию Б. Следующим допустимым приращением минора может служить любая из строк 5, 7, И, 12 и 15, для которых критерий А принимает соответственно значения 1, 2, 2, 2 и 2 (например, для строк 4 и 5 находится лишь один столбец £, в котором обе строки имеют значение 1, а для строк 4 и 7 таких столбцов два: с и i). Анализируя более глубоко варианты выбора среди конкурирующих строк 7, 11, 12 и 15, мы бракуем строки 7 и 12, поскольку выбор любой из них приводит к тому, что множество последующих допустимых приращений сокращается до нуля. Выбирается строка 11, а затем единственная допустимая строка 15. Так в результате прохождения первого этапа определяется'пер- вый класс строк {4, И, 15}. Аналогично находятся классы {14, 6, 9}, {1, 3}, {2, 13, 5, 7,12}, {8, 16} и {Ю}. Полученному разбиению заданного множества функций на шесть классов соответствует выделение из общего множества всех аргументов шести подмножеств, с мощностью каждого не более пяти. Это
96 ГЛ. 2. МЕТОДЫ КОМБИНАТОРНОГО ПОИСКА решение можно представить булевой матрицей {4, 11, 15} {14, 6, 9} (1, 3} {2, 13, 5, 7, 12} abcdefghijkl 0 U 1 0 1 0 0 1 1 1 О О" 01010011000 1 100001100110 011001001010 1 0 0 0 0 1 0 0 0 0 1 1 I {8, 16} [1 0011000000 0J {10} справа которой показаны соответствующие строкам классы. Приближенность описанного метода сказывается уже на рассмотренном примере. Действительно, для него существует лучшее решение — разбиение на пять классов, отображаемое булевой матрицей abcdefghijkl 100110100100 010100110001 011001001010 100001000111 001010011100 <1, Ю} {6, 9, 14} {2, 5, 7, 12, 13} {3, 8, 16} {4, И, 15}
ГЛАВА 3 ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ 9. Исследование уравнений элементарных матричных схем Решение разнообразных задач анализа и синтеза транзисторных матричных схем сводится к исследованию матричных уравнений, описывающих поведение этих схем. Естественно начать это исследование с простейших уравнений, соответствующих элементарным матричным схемам. При этом достаточно ограничиться рассмотрением двух уравнений, а именно Y = В^Х и Y = TVX. Введенные выше обобщения законов де Моргана позволяют свести к ним и уравнения с операторами ВА и ГА — достаточно заменить информационные матрицы X и Y их покомпонентными отрицаниями. Уравнение Y = В^Х (или Y = TVX) связывает три матрицы: две информационные матрицы X и Y и одну структурную матрицу В (или Т). Допустим, что некоторые из этих величин заданы (точнее говоря, заданы их значения), а остальные неизвестны и их требуется найти. Число различных задач, порождаемых таким образом рассматриваемым уравнением, равно восьми, однако два из них тривиальны: когда все величины неизвестны и когда все они заданы (впрочем, в последнем случае можно поставить задачу проверки выполнения задаваемого уравнением отношения между матрицами-константами). Остальные шесть задач имеют достаточно четкий практический смысл, который мы попытаемся отразить приводимыми ниже именами задач. Задача моделирования: для заданных матриц X и В найти матрицу У, удовлетворяющую уравнению Y = Bvz. Задача эта решается довольно просто путем перемножения матриц В и X: Y — В X X, Мржнр дищь, ориен- 4 А. Д. Закревский
98 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ тируясь на вычисления на ЭВМ, обратить внимание на эффективность техники перемножения, посоветовав получать матрицу У постолбцово или построчно, с использованием покомпонентных булевых операций над векторами. В первом случае очередной, /-й столбец матрицы У получается по формуле y'- = \/bVfc^bV;VbV2V...VbVn, (9.1) во втором случае очередная, i-я строка получается по формуле У1 = V bUn =- bUi V Ь\ъ \/ ... V Ь?хт. (9.2) к Задача моделирования для уравнения У = TVX решается аналогично, по формуле (3.18) У = (inf Т) х X V (inf T) X X, а также путем постолбцового и построчного вычисления матрицы У по формулам у*' = V ((inf t) 4 V (^f tk) 4) (9.3) к И yi==V((inft*)3f»V(inf«f)x»). (9.4) к Приведенные формулы для вычисления матрицы Y остаются справедливыми и в том случае, когда некоторые элементы входной матрицы X не определены. В этом случае дизъюнкция и конъюнкция интерпретируются соответственно как взятие максимального и минимального значений рассматриваемых трехзначных аргументов, и соответствующая возникшей ситуации неопределенность переносится в матрицу У, где она и представляется значениями «—» отдельных элементов. Задача анализа: для заданных матриц У и В найти матрицу X, удовлетворяющую уравнению Y = - bvx.
в. ИССЛЕДОВАНИЕ V РАВНЕНИЙ _ 99 Из уравнения у{ = \/ъЫ к следует, что если bi = 1 и у{ = О, то элемент а& может обладать только значением 0. Другими словами, элемент х{ может иметь значение 1 только в том случае, когда при любом i будет выполняться условие b\ = 0 или у\ = 1. Отсюда мы получаем выражение для мажорирующего (максимального из возможных) значения элемента х{: 4m.j = A(ftiV^) = n(Vbi»i). (9-5) i i а также формулу для вычисления мажорирующей матрицы Xmaj в целом: Xmaj = 1(^X7) (9.6) (заметим, что перестановка верхнего и нижнего индексов элементов эквивалентна транспонированию матрицы). Таким образом, если рассматриваемая задача имеет решение, представляемое некоторой матрицей X — корнем матричного уравнения У = Bv X с заданными матрицами В и У,— то оно должно также удовлетворять отношению X < Xmai = ~] (В- х Y), (9.7) означающему, что матрица X может быть получена из Xmaj заменой некоторых единиц на нули. При этом матрица Xmaj также является решением. Отсюда следует, что если матрица Xmaj не является корнем рассматриваемого уравнения (а это легко проверить, перемножив матрицы В и Хта-} и сравнив полученный результат с матрицей Y), то оно вообще не имеет решения. Рассмотрим конкретный пример. Пусть! = BvAr, -1 0 In 111 1 1 0 ' J) 1 1J в = 1 и и 1 и 1 0 0 1110 110 0 10 .0 1 0 0 0 1J 4*
100 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ Но формуле (9.6) находим значение мажорирующей матрицы Xm3ii: -^maj — Легко убедиться, что при данных значениях матриц выполняется отношение У = В X Xmaj, откуда следует, что матрица Xmaj является корнем уравнения У = В^Х. Однако это не единственный корень. Например, корнями данного уравнения служат также матрицы Г1 0 1 1 1 [о 0 1 1 0 1 0 °1 0 1 1 0 lj Го о о" 0 10 10 1 10 1 110 [о о 1 9 "1 0 0" 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 J "0 0 0"] 0 10 0 11 10 0 10 0 0 0 lj и ряд других, общим числом 81, причем каждая из них мажорируется матрицей Xmaj. Если же, оставив прежней матрицу В, слегка изменить значение матрицы У, положив 1 0 1 1 1 1 У = 1 1_о то ^ ma i — Lmaj [1 0 1 1 1 L° 0 0 1 0 0 0 °1 0 1 1 0 lj Вычислив произведение матриц В и Хта^: П 0 П В X -X^maj = 1 1 0 0 0 1.
9. ИССЛЕДОВАНИЕ УРАВНЕНИЙ 101 убеждаемся, что оно не совпадает со значением матрицы У, откуда следует, что в данном случае уравнение Y = = #v X не имеет решений. При решении задачи анализа, так же как и при решении задачи моделирования, удобно пользоваться покомпонентными векторными операциями, обрабатывая в данном случае по очереди столбцы матрицы Y и находя соответствующие им столбцы матрицы X. Поиск очередного столбца распадается при этом на нахождение его мажоранты по формуле хЦ = Н(уЬ$) (9-8) (получаемой из формулы (9.5)), на проверку этой мажоранты и, если это требуется и оказывается возможным, на последующее удаление из нее некоторых единиц. Пусть, например, а Ъ с d e f g 10 0 0 0 10 0 1110 0 0 10 0 1110 0 0 0 10 10 10 10 0 11 0 10 110 1 1 2 3 4 , У' = 5 б "О" 1 0 0 1 1 Мажоранта столбца х> находится путем покомпонентной дизъюнкции тех строк из В, которым соответствуют нули в столбце у?, и последующего инверсирования результата: Г1" 0 0 0 0 1 0 V "Г 0 0 1 1 1 0 V "0" 0 0 1 0 1 0 )- '0" 1 1 0 0 0 1 Убедившись в том, что полученный столбец является решением, т. е. yj' = В X x^aj, попытаемся «упростить» его, оставив в нем лишь некоторое минимальное число единиц. Нетрудно видеть, что эта задача сводится к нахождению кратчайшего столбцового покрытия минора
102 ГЛ- 3< ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ матршзд Вх образуемого пересечением тех строк, которым соответствуют единицы в столбце у*, с теми столбцами, которым соответствуют единицы в одноименных компонентах вектора Xmaj- В данном случае этот минор имеет следующий вид: о с g [1 1 О"]2 0 1 16. 1 0 1J в Находя кратчайшие столбцовые покрытия этого минора, мы получаем тем самым три возможные значения искомого вектора х; с минимальным числом единиц: ГО" 1 1 0 0 0 ,0 1 "0" 1 0 0 0 0 1 » "01 0 1 0 0 0 _'] Задача анализа схемы, описываемой уравнением Y = = TVX с заданными значениями выходной матрицы Y и троичной операторной матрицы Т, решается аналогично. Столбцы матрицы X также получаются по очереди, причем сначала находятся единственно возможные значения некоторых компонент, а потом решается комбинаторная задача нахождения такой совокупности значений остальных компонент, которая удовлетворяет данному уравнению. Рассмотрим этот процесс подробнее на конкретном примере, положив Г — с о 1 — - 0 - - - 0 0 1 ~ ~ — _ 1 _ е / - о — 1 0 - 1 — о - о - У' =
9. ИССЛЕДОВАНИЕ УРАВНЕНИЙ 103 Прежде всего находятся «обязательные» значения некоторых компонент вектора х', и делается это следующим образом. Из матрицы Т выбираются все те строки, которым соответствуют нули в векторе у'', затем отличные от «—» значения их компонент переносятся во вспомогательный вектор айв заключение последний инверсиру- ется. Операция получения вектора а из выбранных строк матрицы Т может быть интерпретирована как нахождение пересечения интервалов булева пространства, соответствующих этим строкам, в связи с чем назовем ее операцией пересечения. Результат этой операции также интерпретируется как интервал, причем возможна ситуация, когда он окажется пустым — если некоторой компоненте получаемого троичного вектора одновременно надо приписать значение 0 и 1, что невозможно. В данном случае такая ситуация не возникает, и мы получаем вектор Хоь «обязательных» значений: xjb = Далее мы выделяем из матрицы Т минор, образуемый пересечением строк, отмеченных единицами в векторе у;, со столбцами, отмеченными значением «—» в полученном векторе х^: с е g 0 — 01 * - о - и 1 1 — *• - - 1J 7 Требуется построить булев вектор, равный по длине строкам этого минора и такой, чтобы для каждой строки минора в векторе нашлась компонента, совпадающая по значению 0 или 1 с одноименной компонентой минора. Легко видеть, что эта задача Э1<вивалентна рассмотрен- Г = 1 - 0 -
104 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ ной выше задаче нахождения булева вектора, ортогонального каждой строке некоторой троичной матрицы (в данном случае эта матрица равна отрицанию матрицы Г'). Существуют два решения, представляемые наборами значений 0100 и 1011 компонент х\, х\, х\ и х\. Вектор хэ в целом может, следовательно, получить одно из следующих двух значений: ГО" 0 1 1 0 0 0 » "0" 1 0 1 1 0 11 Задача синтеза: для заданных матриц X и У найти матрицу В, удовлетворяющую уравнению Y = = В^Х. Другими словами, требуется синтезировать матричную транзисторную схему, описываемую оператором BV и осуществляющую преобразование входной матрицы X в выходную матрицу Y. Оказывается, что эта задача решается почти так же, как и задача анализа. Из уравнения у{=\уьЫ к следует, что если у\ ±= 0 и х{ = 1, то элемент Ъ{ может обладать только значением 0, т. е. он может получить значение 1 только в том случае, когда при любом j будет выполняться у{ = 1 или х{ = 0. Отсюда находится выражение для мажорирующего значения элемента Ъ\\ ^ша1 = ЛЫУ4) = П(УуЫ) (9.9) 3 О — и мажорирующей матрицы Дта, = 1(?Х ХТ). (9.10) Далее следует вывод, аналогичный тому, который был сделан при рассмотрении задачи анализа: если данная
9. ИССЛЕДОВАНИЕ УРАВНЕНИЙ 105 задача синтеза матрицы В имеет какое-либо решение, то матрица 5maj также является решением, если же последняя не является решением, то решения вообще не существует. Кроме того, любое решение может быть получено из матрицы jBmaj заменой некоторых единиц на нули. Практический интерес представляет нахождение решения, минимального по числу единиц, и задающего, таким образом, структуру матрицы с минимальным числом транзисторов. Эта задача решается по аналогии с рассмотренной выше задачей минимизации числа единиц в матрице X, удовлетворяющей уравнению Y = ВУХ при заданных значениях матриц У и В. В данном случае матрица В синтезируется построчно: сначала по формуле bimai = ~l(V-^i) (9-И) вычисляется мажоранта очерёдной строки bt, затем находится кратчайшее строчное покрытие минора матрицы X, образованного пересечением строк, отмеченных единицами в векторе b* maj, со столбцами, отмеченными единицами в векторе уг. Вошедшие в покрытие строки матрицы X представляются единицами в строке bt синтезируемой матрицы В. Рассмотрим теперь уравнение Y = TVX с заданными матрицами 1иГ. Легко показать, что оно эквивалентно уравнению Y = BVX*, где матрица X* получается из X таким удвоением числа строк, при котором каждая строка из X сопровождается ее отрицанием, а матрица В получается из матрицы Т удвоением числа ее столбцов путем расщепления троичных компонент 1, 0 и «—» соответственно на пары 1 0, 0 1 и 0 0. Таким образом, решение уравнения Y = TVX с неизвестной троичной матрицей Т сводится к решению уравнения Y = BVX* с неизвестной булевой матрицей В. Найдя матрицу В, легко получить и матрицу Т, «свернув» пары 10, 01 иООв значения 1, 0 и «—». Заметим, что пары 1 1 в вычисляемой матрице В появиться не могут, так как соответствующие строки в матрице X* взаимно инверсны. Проиллюстрируем описанный метод на примере вычисления строки tt матрицы Г, удовлетворяющей уравнению Y = TVX, если соответствующая строка у* выходной
106 3 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРЙЧНЬТК СХгМ матрицы Y имеет значение 11 01010, а "0 0 1 0 1 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 1 1 0 1 х = Дополняя каждую строку матрицы ее отрицанием, получаем матрицу Х* = *0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 0 1 1" 0 0 1 1 0 1 0 1 0 0 1 1 0 и вычисляем значение вектора b* maj (как отрицание дизъюнкции столбцов из Х*9 отмеченных нулями в векторе у^): bimaj = 0 110010000100 1. Затем по описанным выше правилам строим минор 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 0 1 0 1 + и находим его кратчайшее строчное покрытие (соответствующие строчки отмечены крестиками). Оставляя в векторе Ь| maj единицы только в тех позициях, которые соответ-
10. ЗАДАЧИ ДИАГНОСТИК» 107 ствуют элементам покрытия, получаем Ь, =00100000000001 и, посредством «свертки» пар соседних компонент, находим искомое значение строки t^: и = -1 о. Итак, мы познакомились с задачами, возникающими при рассмотрении уравнений типа Y = В^Х иГ= TVX с одним неизвестным (не определено значение лишь одной из матриц). Оказывается, что не меньший смысл имеет исследование и более неопределенных ситуаций, когда известно значение лишь одной матрицы, а значения двух остальных надо найти. Эти задачи имеют много различных решений, из которых, как правило, надо искать минимальные по размерам получаемых матриц. Такие задачи более сложны и обладают явно выраженным комбинаторным характером. i0. Задачи диагностики Допустим, что в уравнении Y = В^Х или Y = TVX задан лишь матричный оператор 5V или Tv, а матрицы X и У играют роль неизвестных величин. Какие] содержательные задачи могут быть поставлены в этой ситуации? Очевидно, что эти задачи должны быть каким-то образом связаны с исследованием свойств заданного матричного оператора. Рассмотрим в связи с этим некоторые характеристики операторов типа 5V и Tv, а также некоторые отношения между различными операторами. Очевидно также, что сравнение однотипных операторов будет сводиться к сравнению их матриц. Сравнение матричных операторов. Положим, что два однотипных оператора тождественны, или равны, если равны их матрицы. В свою очередь равенство матриц означает их поэлементное совпадение: В = С, если Ъ{ = си и Т = V, если t{ = и{, где i и / принимают любые допустимые значения из заданного диапазона, определяемого размерами сравниваемых матриц. Разумеется, размеры матриц должны также совпадать.
108 ГЛ. I. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ Два матричных оператора будем считать эквивалентными, если тождественны реализуемые ими отображения входного булева вектора х в выходной булев вектор у. Например, оператор Z?v эквивалентен оператору Cv, если для любого х выполняется отношение равенства В^х == = Cvx; оператор Tv эквивалентен оператору Uv, если выполняется отношение Tvx — Uvx, оператор Ву<эквива- лентен оператору Tv, если выполняется отношение Bvx = = Tvx (последний пример показывает, что эквивалентными могут быть и разнотипные операторы). Введем также отношение ограниченной эквивалентности, или эквивалентности на матрице X, считая, например, что операторы Bv и Cv эквивалентны на X, если для любого столбца х; матрицы X выполняется отношение Bvxj = CVxK Легко показать, что операторы В^ и Cv эквивалентны в том и только том случае, когда они равны. Аналогично операторы Tv и C/v эквивалентны также в том и только том случае, когда они равны. Разнотипные операторы fiv и Tv эквивалентны в том и только том случае, когда матрица Т не содержит нулей и может быть получена из матрицы В заменой всех нулей на символ «—». Ограниченная эквивалентность может иметь место и для неравных операторов. Именно в связи с этим и получает смысл рассмотренная выше задача минимизации числа единиц в матрице оператора fiv, реализующего заданное преобразование входной матрицы X в выходную матрицу Y. Обобщая понятие эквивалентности, введем отношение квазиэквивалентности, считая, что два оператора квази- эквивалентны, если они становятся эквивалентными при некоторой перестановке входных или выходных булевых переменных. Перестановку, т. е. перенумерацию переменных удобно рассматривать как действие перестановочного оператора Pv, у которого матрица Р является квадратной булевой матрицей, содержащей ровно по одной единице в каждой строке и в каждом столбце. Очевидно, что для любой перестановки можно найти обратную перестановку, причем матрица обратной перестановки будет транспонированной формой матрицы прямой перестановки. Другими словами, для любой перестановочной матрицы Р будет выполняться отношение Р X РТ = Е. Матрицу-единицу Е можно рассматривать как вырожден-
10, ЗАДАЧИ ДИАГНОСТИКИ 109 ныи оператор перестановки, задающий перестановку в себя. Например (см. рис. 33, обратив внимание на совпадение расположения транзисторов во входной (графически транспонированной!) и выходной транзисторных матрицах): "0100 0" 0 0 10 0 10 0 0 0 0 0 0 0 1 0 0 0 1 0_ 0 0 10 0" 10 0 0 0 0 10 0 0 0 0 0 0 1 0 0 0 10 X X Хх х2 хз х4 L*5_ ~#2 *3 ХХ ч L*4. = = х2 1 х3 хх *ь _^J г*г *2 х3 х* L*6j (изображенная схема осуществляет тождественное преобразование у = х). Таким образом, операторы Sv и Cv квазиэквивалентны, если существует такая пара перестановочных операторов Рх и Р%, что для любого значения входного вектора х будет выполняться Svx = P^CwPiX. Ана- х t 1 о- Jo- 5о- -of -о 5 логично определяется квазиэквивалентность троичных матричных операторов. Выявление квазиэквивалентности произвольной пары операторов сводится к нахождению такой перестановки строк и столбцов матрицы одного из операторов, при которой эта матрица становится равной матрице другого оператора. Это нетривиальная комбинаторная задача, на которой мы не будем здесь останавливаться. Заметим лишь, что она в сильной степени аналогична известной задаче об установлении изоморфизма графов. Перестановочный оператор представляет собой частный случай кодирующих операторов, осуществляющих преобразование «без потери информации», когда различ- Рис. 33. Пример схемы, реализующей вырожденную перестановку Р X РТ = Е.
HO ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ ным значениям входного булева вектора х ставятся в соответствие различные значения выходного булева вектора у. Для оператора такого типа всегда можно найти обратный оператор, т. е. оператор, осуществляющий обратное преобразование значений вектора у в соответствующие им значения вектора х. Справедливо следующее утверждение: необходимым и достаточным условием того, чтобы некоторый оператор 5V размером т на п был кодирующим оператором, является наличие в матрице В перестановочного минора размером п на п (отсюда следует, что т должно быть не меньше п). Достаточность этого условия очевидна: если условие выполняется, то каждой входной булевой переменной хь ставится в соответствие некоторая выходная переменная yj совпадающая по значению с xt. Необходимость доказывается рассуждением от противного: если перестановочного минора в матрице В нет, то это означает, что в матрице отсутствует строка с единственной единицей в некоторой i-A компоненте, а отсюда в свою очередь следует, что два значения входного вектора х, одно из которых состоит сплошь из единиц, а другое содержит единственный нуль в i-й компоненте, не смогут отобразиться в различные значения вектора у. Если оператор Bv является кодирующим, то обратное преобразование вектора у в вектор х осуществляется оператором Cv, матрица которого получается из матрицы В путем замены 1 на 0 во всех строках, не входящих в пе~ рестановочный минор, и транспонирования получаемого при этом результата. Например, если 0] + 1 о + 0 +' 1 lj + то оператор Ву является кодирующим, поскольку отмечен-; ные знаком + его строки образуют перестановочный мин нор. Поэтому существует обратное преобразование век- 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0
10. ЗАДАЧИ ДИАГНОСТИКИ 111 тора у в вектор х, реализуемое оператором С с матрицей ГО 0 1 0 о От 10 0 0 0 0 С— 00 0 10 0 L0 0 0 0 0 lj Заметим, что обратное преобразование не является кодирующим в полном смысле этого слова, поскольку различные значения вектора у могут отображаться одинаковыми значениями вектора х. Но оно является кодирующим для множества всех тех значений вектора у, которые могут появиться на выходе матричной схемы, описываемой кодирующим оператором fiv. Отображение интервалов. Полное описание отображения множества М значений входного булева вектора х в множество N значений выходного булева вектора у связано с перечислением всех пар значений этих векторов. Однако в некоторых ситуациях достаточно знать такую грубую, но довольно важную характеристику рассматриваемого матричного оператора, как создаваемый им образ булева пространства М в пространстве N. Этот образ может быть представлен характеристической функцией вектора у, принимающей значение 1 на тех элементах пространства N, которые принадлежат образу, и значение 0 на остальных элементах из N. В других случаях более практичным оказывается описание такого уровня сложности, при котором множество М разбивается на интервалы и показывается, в какие интервалы пространства N они отображаются. Такой подход применяется, в частности, в методе «троичного моделирования», где рассматриваются троичные значения входного вектора х (значения некоторых компонент считаются неизвестными или безразличными) и находятся соответствующие им, также троичные, значения выходного вектора у. Если схема описывается матричным оператором JBV, то значение вектора у, соответствующее заданному троичному значению вектора х, находится достаточно просто: компонента yt получает значение 1, если для некоторого / выполняются равенства Ъ{ = 1 и Xj = 1, уt получает значение «—», если предыдущее условие не выполняется,
112 ГЛ. Я. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ но для некоторого / выполняются равенства Ъ\ = 1 и Xj = «—», и yt получает значение 0 в остальных случаях. Пользуясь этим методом, полезно знать присущие ему ограничения. Рассмотрим их. Дело в том, что некоторые интервалы пространства М будут отображаться оператором #v на соответствующие им интервалы пространства 7V, а другие — только в соответствующие интервалы. Это означает, что в первом случае образ интервала из М будет совцадать с соответствующим интервалом из TV, в то время как во втором случае он будет лишь содержаться в интервале из N, но не совпадать с ним. Например, если Б = 10 10 0 0 0 0 10 0 0 0 0 0 0 11 0 10 0 0 1 0 0 0 10 1 то можно сказать, что значение 110 0 входного вектора х схемы, описываемой оператором jBv, преобразуется в значение 1 0—1 — выходного вектора у. Оба троичных вектора рассматриваются при этом как порождаемые ими совокупности булевых векторов-констант, образующие соответствующие интервалы пространств М и N. Однако в то время как все элементы интервала 110 0 из пространства М допустимы (вектор х рассматривается как независимая переменная), элемент 10 0 11 интервала 1 0—1 — из пространства N оказывается нереализуемым в данной схеме. Сформулируем необходимое и достаточное условие, при котором некоторый интервал пространства М, задаваемый значением троичного вектора х, будет отображаться на соответствующий интервал пространства Лг, задаваемый значением вектора у, вычисляемым по заданному выше правилу: минор матрицы В, образованный строками и столбцами, которым соответствуют компоненты векторов у и х со значением «—», должен быть кодирующим. В рассмотренном выше примере, где х = 1 1 0 0 и у = 1 0 — 1 —, проверке подлежит минор матрицы 5, образуемый пересечением строк 3 и 5 со столбцами 5 и 6.
10. ЗАДАЧИ ДИАГНОСТИКИ ИЗ Он оказывается не кодирующим, следовательно, интервал 110 0 отображается не на интервал 10 — 1 —, а в него. Задача диагностики для Р-схемы. Для заданной матрицы В найти матрицы X и У, удовлетворяющие уравнению Y = В^Х и идентифицирующие матрицу В, т. е. однозначно ее определяющие. Эта задача имеет непосредственное отношение к разработке эффективных способов диагностирования транзисторных матричных схем: проверке их исправности и, в случае, если схема окажется неисправной, поиску дефекта (конкретной неисправности) в ней. При постановке задач такого рода принято прежде всего договариваться о том, какие неисправности в схеме считаются возможными. Будем считать возможными любые неисправности, при которых поведение рассматриваемой схемы будет описываться матричным оператором того же типа и тех же размеров, что и у исправной схемы. Это значит, что мы считаем неизменными числа входных и выходных полюсов в схеме, т. е. числа вертикальных и горизонтальных проводников, и полагаем возможными дефекты лишь двух типов, называя их неисправностями типа исчезновения транзисторов и неисправностями типа появления транзисторов. Рассмотрим, к примеру, элементарную дизъюнктивную матричную схему, к анализу которой сводится, как было показано выше, анализ соответствующей Р-схемы. Неисправности типа исчезновения транзисторов выражаются здесь разрушением связей между вертикальными и горизонтальными проводниками и отражаются заменой значений соответствующих элементов структурной матрицы с 1 на 0. Неисправности типа появления транзисторов дают обратный эффект: замену значений некоторых элементов матрицы В с 0 на 1. Такие дефекты могут, например, иметь место при технических ошибках в «программировании» транзисторной матрицы, когда некоторые транзисторы, которые следует «выжечь» из заготовки, останутся в ней. Таким образом, мы заменяем рассмотрение дефектов в транзисторной матричной схеме рассмотрением соответствующих дефектов в ее структурной матрице — изменением значений некоторых ее элементов. При этом, следуя
114 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ установившейся терминологии, смену значения одного элемента (исчезновение или появление в схеме одного транзистора) будем называть одиночной неисправностью, а нескольких одновременно — кратной неисправностью. Во избежание недоразумений заметим, что дефекты рассматриваемых нами типов не относятся к «константным неисправностям» — модели, широко применяемой в разнообразных методах диагностирования логических схем,— а скорее напоминают неисправности типа постоянного замыкания или размыкания контактных пар в контактных схемах. Действительно, исчезновение или появление транзистора в матричной схеме не приводит к установлению постоянного значения потенциала в какой-либо точке схемы. Напомним, что таких точек всего п + т — это вертикальные и горизонтальные проводники. Разработка метода диагностирования элементарной дизъюнктивной матричной схемы сводится в основном к построению совокупности входных воздействий, достаточной для выявления в схеме любых неисправностей, которые считаются возможными. Эти воздействия представляются столбцами входной информационной матрицы А. Существует тривиальное, но весьма эффективное решение этой задачи, при котором матрица X полагается равной булевой матрице Е — квадратной единичной матрице, с единицами на главной диагонали. Это решение является исчерпывающим, поскольку в этом случае выходная информационная матрица Y будет всегда совпадать с матрицей В, описывающей структуру схемы: Y = 5VE = = В. Любая кратная неисправность в матричной схеме будет отображена соответствующим изменением значения структурной матрицы В, а любое изменение значения матрицы В повлечет такое же изменение матрицы У, «снимаемой» с выходных полюсов схемы при подаче на ее входные полюсы матрицы Е. Можно получить некоторый выигрыш в размерах искомых матриц 1и7, если допустить, что в схеме возможны дефекты лишь типа исчезновения транзисторов. Сформулируем следующее утверждение: необходимым и достаточным условием обнаружения выхода из строя некоторого транзистора (что отображается изменением значения соответствующего элемента Ъ\ структурной матрицы В с единицы на нуль) является наличие во входной мат-
10» ЗАДАЧИ ДИАГНОСТИКИ 115 рице X некоторого столбца хк со следующим свойством: х)I = 1 и х] = 0 для любого /, такого что I Ф j и b[ = 1. Действительно, если существует столбец хк с данным свойством, то значение элемента у\ будет равно значению элемента Ь\, следовательно, смена значения второго из них, принадлежащего структурной матрице, повлечет смену значения первого, принадлежащего выходной информационной матрице, что и будет свидетельствовать о выходе из строя рассматриваемого транзистора. Если же столбца с данным свойством в матрице X не существует, то ни один элемент матрицы Y не изменит своего значения при рассматриваемой неисправности, поскольку в этом случае для любого столбца хк матрицы X будет выполняться условие «Xj = 0 или существует такое Z, не равное /, что b\ = 1 и х] = 1». Сформулированный критерий позволяет предложить экономный способ диагностирования любых сочетаний неисправностей данного типа (разрушения связей), состоящий из двух этапов. На первом этапе строится троичная матрица требований Л, столбцы которой представляют требования рассмотренного выше типа, предъявляемые к входной матрице X, а на втором этапе эти столбцы разбиваются на минимальное число групп, образуемых взаимно неортогональными столбцами, и это разбиение определяет искомую матрицу X с минимальным числом столбцов, удовлетворяющую данным требованиям. Пример. Уточним описание предлагаемого алгоритма на конкретном примере. Пусть а Ь с d e -110 0 0- 0 1110 0 0 10 1 Li о о о i_ В = Каждая строка bj матрицы В, обладающая к единицами, порождает к требований, представляемых соответствующими столбцами матрицы Л, получаемыми из вектора bt путем замены всех нулей на «—», а всех единиц, кроме одной, на нуль. Например, первая строка матрицы В порождает два требования, предъявляемые к матрице X: в матрице X должен существовать столбец х1 со значения-
116 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ ми компонент ха = 1 и х\ = О и должен существовать столбец х; со значениями компонент х3а = О и х?ь = 1. Представив эти требования троичными векторами 10 — -— — и 0 1 , мы найдем тем самым первые два столбца матрицы R. Аналогично определяются и остальные столбцы, в результате чего получаем Д = 1 1 0 — — 2 0 1 — — 3 1 0 0 4 0 1 0 6 0 0 1 6 — 1 0 7 — 0 1 1 О' 0 1 Матрица X удовлетворит всем предъявляемым к ней требованиям, если для каждого столбца матрицы R найдется неортогональный ему столбец в матрице X. Очевидно, что один и тот же столбец из X может удовлетворить нескольким требованиям, представляемым некоторым подмножеством столбцов из R. Необходимым и достаточным условием возможности построения такого столбца является взаимная попарная неортогональность столбцов из данного подмножества. Поэтому задача отыскания матрицы X с минимальным числом столбцов сводится к разбиению множества столбцов матрицы R на минимальное число классов, образуемых взаимно неортогональными столбцами. В свою очередь эта задача сводится к уже знакомой читателю задаче раскраски графа, точнее к такой раскраске вершин некоторого графа в минимальное число цветов, при которой любые две соседние (соединенные ребром) вершины окажутся окрашенными в различные цвета. В данном случае вершины раскрашиваемого графа будут представлять столбцы матрицы R, а ребрами будет задано отношение несовместимости столбцов — будем полагать столбцы несовместимыми, если они ортогональны. Описанный граф, соответствующий рассматриваемому примеру, показан на рис. 34. Рис. 34. Граф отношения ортогональности столбцов матрицы требований R.
10. ЗАДАЧИ ДИАГНОСТИКИ 117 Решив задачу минимальной раскраски, например путем сведения ее к задаче о кратчайшем покрытии (находятся все максимальные группы попарно совместимых столбцов, строится булева матрица бинарного отношения принадлежности столбцов матрицы R этим максимальным группам и находится кратчайшее покрытие этой матрицы), мы получим точное решение поставленной задачи, точнее говоря, одно из них, поскольку решение задачи о кратчайшем покрытии в общем случае не однозначно. Одно из таких решений задается разбиением {1, 4, 6, 8/ 2, 3/5, 7, 9} множества столбцов матрицы R на три класса, порождающим трехстолбцовую матрицу X: "1 0 1 0 [0 0 1 0 0 0 0] 0 1 0 1 1_ Каждый столбец этой матрицы представляет собой пересечение троичных векторов, задающих значения столбцов, образующих соответствующий класс. Если некоторая компонента вектора-результата примет при этом значение «—», мы доопределяем ее до нуля. Вычислив по формуле Y = В X X матрицу Y, представим полученный результат в целом, в виде своеобразного треугольника, удобного для проверки заданного преобразования: В = Хт = Г1 0 0 Li [1 0 1_о 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 f 1 0 0 0 0 1 °1 0 1 1. °1 о 1. г1 1 *+ 1 Li 1 . 1 1 0 0 0 1 1 1 = г, Интересно интерпретировать этот результат, выяснив, как же будут опознаваться различные «неисправности» в матрице В. Оказывается, что единицы этой матрицы связаны взаимно однозначным отношением с единицами мат-
118 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ а 0 0 3 б в 0 0 0 г е 0 0 Д 0 0 01 0 ж 1 > и] У = га г е 3 б в 0 0 0 Д ж и рицы Y и, следовательно, исчезновение любой единицы в матрице В автоматически влечет за собой исчезновение соответствующей единицы в матрице Y. Связь единиц можно показать, обозначив их, как это показано ниже: В = Очевидно, зная это соответствие, можно легко распознать любую кратную неисправность в рассматриваемой матрице В. Приближенный метод. Приведенная интерпретация показывает, что задача сводится к некоторой упаковке единиц матрицы В в матрицу У. Развивая эту идею, предложим другой метод решения задачи, быстрее ведущий к цели, хотя и не гарантирующий минимальность получаемого решения. Отличие предлагаемого метода от предыдущего заключается в том, что мы обходимся теперь без построения матрицы требований R, а получаем граф несовместимости непосредственно для столбцов исходной матрицы 5, полагая при этом два столбца несовместимыми, если они имеют значение 1 в некоторой одноименной компоненте, т. е. если их конъюнкция отлична от нуля. Построенный таким образом граф, соответствующий рассматриваемому примеру, показан на рис. 35. Нахождение минимальной раскраски этого графа проще, поскольку он меньше предыдущего. Легко находится одно из решений — разбиение {а, с I 6, е I d]. Столбцы матрицы X представляют непосредственно классы этого Рис. 35. Граф несовместимости столбцов исходной матрицы В. разбиения: Х = Г1 0 1 0 Lo 0 1 0 0 1 0] 0 0 1 oj Соответствие между единицами матрицы В и еДиницдми
10. ЗАДАЧИ ДИАГНОСТИКИ 119 а 0 0 3 б в 0 0 0 г е 0 0 Д 0 0 0 1 0 ж и , г = га г е 3 б в ж и 0 Д 0 о. матрицы Y будет иметь теперь следующий вид: В = Поскольку общее число единиц в матрице В равно девяти и, следовательно, столько же их должно быть и в матрице Г, для их упаковки в матрице Y потребуется не менее грех столбцов (число строк фиксировано, будучи равно четырем). Отсюда следует, что полученное нами решение минимально. Диагностика неисправностей в т- схемах. Обратимся теперь к уравнению Y = TVX, описывающему поведение транзисторной матрицы с пара- фазным представлением входных сигналов. Задача диагностирования ее неисправностей уже не имеет тривиального общего решения, подобного матрице Е в случае булева матричного оператора В v. -о / -о 2 -*3 5 6 Однако для каждой конкретной троичной матрицы Т можно найти конкретное решение — входную матрицу X с минимальным числом столбцов, позволяющую распознать любую кратную неисправность рассматриваемого класса. Хотя в данном случае выход из строя некоторого транзистора интерпретируется на'троичной матрице иначе, 1ем на двоичной, а именно заменой значения 0 или 1 некоторого элемента матрицы на «—», требование, предъ- авляемое к матрице X, формулируется аналогично тому, как это делалось ранее. 36), Hi— т~т г* ffffff 6 о 6 6 о X I 2 3 4 5 Рис. 36. Пример диагностируемой схемы. Пусть, например (рис. 1 — 0
120 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ Выход из строя верхнего левого транзистора в схеме представляется сменой значения элемента t\ с 1 на «—». Обнаружить эту неисправность можно таким и только таким входным набором хг, в котором х\ = 1 и х\ = 1. Соответствующее требование к матрице X представляется вектором 1 1 —, включаемым в матрицу требований R в качестве ее столбца. Находя таким же образом остальные требования (число их равно числу транзисторов в схеме, или общему числу нулей и единиц в матрице Г), мы формируем матрицу требований R 0 - - 0 10 0 1 — 0 0 1 — 1 1 1 — 1 0 0 0 0 1 1 1 1 1 0 0 1 0 — 0 1 — Далее задача решается совершенно так же, как и при рассмотрении уравнения У = В^Х. Совмещение столбцов матрицы R приводит нас к искомой матрице X: Х = 0 10 0' 0 10 1 0 110 0 10 0 110 0 Решение в целом можно представить следующим матричным равенством, полученным подстановкой в уравнение У = TVX значений всех матриц: 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 Г 0 0 1 1 1 — — о 0 10 0' 0 10 1 0 110 0 10 0 110 0 Введя индивидуальные имена (в данном случае буквы) для диагностируемых элементов матрицы Т (нулей и единиц), покажем соответствующие им элементы выходной
11. МИНИМАЛЬНЫЙ ДИЗЪЮНКТИВНЫЙ БАЗИС 121 матрицы У: Гб в — е и а г Д ж к Отмеченные элементы полностью представляют своими значениями состояние диагностируемой матрицы: если некоторый из них имеет значение 1, это означает, что соответствующий ему транзистор на месте, значение 0 указывает на исчезновение транзистора. Значения остальных элементов, показанных в матрице символом «—», могут при этом не приниматься во внимание. 11. Нахождение минимального дизъюнктивного базиса Минимальный дизъюнктивный базис для матрицы Y и ее кратчайшее минорное покрытие. Пусть булевой матрицей Y' (ее столбцами) задано некоторое множество булевых векторов и требуется построить схему, для которой эти векторы были бы выходными. Такую схему всегда можно найти среди транзисторных матриц. Естественно потребовать, чтобы она была простейшей, т. е. обладала бы минимальным числом столбцов (число ее строк определено заранее — оно равно числу строк матрицы У). Нужно также найти входные векторы, преобразуемые синтезируемой матричной схемой в заданные выходные, и представить их множество как множество столбцов булевой матрицы X. Другими словами, требуется найти булеву матрицу В с минимальным числом столбцов и булеву матрицу X с таким же числом строк, удовлетворяющие уравнению Y' = "]5V X при заданной булевой матрице У. Заменив матрицу У ее отрицанием У = ~~] У, перейдем к рассмотрению уравнения У = В^Х с заданной матрицей У и искомыми матрицами В и X. Hi Каждый столбец матрицы У равен дизъюнкции некоторых столбцов матрицы В (каких именно, показывает-
122 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ ся единицами в соответствующем столбце матрицы X). Поэтому рассматриваемая задача сводится к нахождению такого множества вектор-столбцов, которое позволило бы сформировать посредством операции дизъюнкции любой из столбцов матрицы Y. Назовем это множество дизъюнктивным базисом (для столбцов матрицы У) и сформулируем задачу следующим образом. и*& Для заданной булевой матрицы Y найти булеву матрицу В с минимальным числом столбцов, причем такую, что каждый столбец матрицы Y будет равен покомпонентной дизъюнкции некоторых столбцов матрицы В. Последующий поиск матрицы X, удовлетворяющей уравнению Y = В^Х, где заданы уже две матрицы Y и В, представляет собой более простую задачу, которая нами уже рассматривалась. Возможен и другой подход к решению поставленной задачи, при котором матрицы В ж X ищутся одновременно. Вспомним, что уравнение Y — В^Х по определению эквивалентно уравнению Y = В X X, т. е. к откуда следует, что матрицу Y можно представить как покомпонентную дизъюнкцию матриц Yk = Ък X xki т. е. Y = Yx V Y2 V • • • V Y{. Например, следующее произведение конкретных булевых матриц "1 0 1 1 1 1" 0 10 0 0 1 10 10 0 0 110 10 1 0 110 11 0 1 0 1 1 1 0 0 1 0 1 0 1 0 0 г 0 0 0 1 х ! 0 10 0 0 1 10 0 10 1 10 10 0 0 0 0 10 10 представляется покомпонентной матричной дизъюнкцией 10 1111 0 10 0 0 1 10 10 0 0 110 10 1 0 110 11 0 0 0 0 0 0' 0 10 0 0 1 0 0 0 0 0 0 0 10 0 0 1 0 10 0 0 1 V
11. МИНИМАЛЬНЫЙ ДИЗЪЮНКТИВНЫЙ БАЗИС 123 V 10 0 10 1 0 0 0 0 0 0 о о о о о о|v 10 0 10 1 о о о о о о_ о o"i о V 10 10 0 0" 0 0 0 0 0 0 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0. 1 0^ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 10 V Каждый из членов этой дизъюнкции — произведение вектор-столбца bfe на вектор-строку хк — представляет собой булеву матрицу, единичные элементы которой образуют минор, и этот минор задается пересечением тех строк и столбцов матрицы У, соответствующие которым компоненты векторов Ьк и Xfr обладают значением 1. Отсюда следует, что решение рассматриваемой задачи можно свести к нахождению минимальной системы единичных (не содержащих нулей) миноров заданной матрицы У, покрывающих совместно все единицы этой матрицы: каждая из этих единиц должна принадлежать хотя бы одному из найденных миноров. Учитывая данную интерпретацию, решаемую задачу можно назвать задачей о кратчайшем минорном покрытии булевой матрицы У. Прямой метод нахождения кратчайшего минорного покрытия. Нетрудно показать, что если ищется только одно из кратчайших минорных покрытий, то можно ограничиться рассмотрением максимальных единичных миноров матрицы У, т. е. таких, которые не содержатся в других единичных минорах. Действительно, если существует такое кратчайшее минорное покрытие, некоторые элементы которого представляют собой единичные миноры, не являющиеся максимальными для данной матрицы У, то их можно заменить на соответствующие максимальные, в которых они содержатся, и получить таким образом минорное покрытие, которое также будет кратчайшим. Следовательно, решение сформулированной задачи можно свести к получению всех максимальных единичных миноров матрицы У, построению булевой матрицы
124 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ отношения принадлежности им единичных элементов матрицы Y (допустим, что эти элементы будут представляться столбцами матрицы отношения) и нахождению ее кратчайшего строчного покрытия. Назовем этот метод прямым. Общее число миноров матрицы размером т на п равно 2т+п, однако при поиске максимальных единичных миноров незачем их все перебирать. Достаточно организовать перебор подмножеств строк или подмножеств столбцов, выбрав при этом меньшее из чисел тип. Каждому из этих подмножеств будет соответствовать не более одного максимального единичного минора. Допустим, например, что т <[ п (принципиального значения это условие не имеет) и мы перебираем подмножества строк матрицы У, представляя их значениями характеристического вектор-столбца р, единицы в котором соответствуют строкам, вошедшим в рассматриваемое подмножество Р. Покомпонентную конъюнкцию выбранных строк представим вектором q = /\ [Р], задающим некоторое подмножество столбцов Q. Рассмотрим минор матрицы Y, образуемый пересечением элементов из множеств Р и Q, представляемых характеристическими векторами р и q. Он будет единственным максимальным единичным минором, соответствующим множеству Р, если только в матрице Y не существует такой строки уь которая не принадлежала бы множеству Р и для которой выполнялось бы отношение q <^ yt. Если же такая строка существует, то минор можно распространить на нее, т. е. очевидно, что в этом случае он не будет максимальным. Отсюда вытекает справедливость следующего утверждения. Множество максимальных единичных миноров булевой матрицы Y находится во взаимно однозначном соответствии с множеством таких подмножеств Р множества строк матрицы Y, для которых выполняется условие: Р = Л [<?] и q = Л 1Р1 где р — характеристический вектор множества Р, a q- характеристический вектор соответствующего ему подмножества столбцов Q. Не останавливаясь здесь на том, как производится перебор на множестве строк при поиске подмножеств с отмеченным свойством (перебор может вестись по-разному),
11. МИНИМАЛЬНЫЙ ДИЗЪЮНКТИВНЫЙ БАЗИС 125 представим результат, получаемый для рассматриваемого конкретного примера, в форме булевой матрицы, столбцы которой задают все интересующие нас значения характеристического вектора р: 123456789 10 10 0 1110 111 0000001001 0 0 0 10 0 0 110 0 10 0 10 110 1 001001101 1J Далее введем следующим образом индивидуальные имена для единичных элементов матрицы Y: У = а о б в г д 0 е 0 0 0 Ж з 0 и 0 0 0 к л 0 м 0 н ,0 п р 0 с т и построим булеву матрицу L отношения принадлежности этих элементов тем или иным из максимальных единичных миноров (номера последних совпадают с номерами соответствующих значений вектора р): L = бв гдежзиклмнпр ci Г1 11110000000000 0 01 000 0 00 0 0011110U00 00000000000001111 110000011000000U0 101010000101 10U00 010 11000000000111 00000110001011001 10000001010000000 01000000100000100 00 0 010100000 10001 Теперь остается найти кратчайшее строчное покрытие матрицы L. Это покрытие можно получить описанной ранее итеративной процедурой удаления поглощающих столбцов и поглощаемых строк, приводящей в данном случае
126 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ к следующим трансформациям: ■110 0 0 0 0- 0 0 0 0 0 10 0 0 0 0 0 0 1 0 0 0 110 0 10 0 0 0 10 0 10 0 0 0 1 0 0 10 0 0 0 0 0 0 10 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 1 2 3 4"~> 5 6 7 8 В '1 0 1 0 0 г 1 0 0 1 0 е 0 0 0 0 1 г 8 0 1 0 0 0 и 0 1 0 0 0 м 0 о. 1 0 0 с 0" 0 0 1 0 1 4 5 в 7 е ГО 0 0 Li и 1 0 0 0 м 0 1 0 0 с о- 0 1 0_ 4 6 6 7 В результате становится очевидным, что решение образуется четырьмя минорами с номерами 4, 5, 6 и 7. Соответствующие им значения характеристического вектора р рассматриваются как столбцы Ък искомой матрицы 5, а соответствующие значения характеристического вектора q (q = Д [Р]) — как строки хк искомой матрицы X: В = 10 10 0 0" 10 0 10 1 0 0 10 11 0 10 0 0 1. р и ц ы Y. Щ матрице Y ош • >и боль- 1санный Редуцирование мат шом числе единичных элементов в матрице метод, связанный с построением и последующим редуцированием матрицы L, становится весьма трудоемким. Между тем редуцирование матрицы L можно заменить соответствующим редуцированием исходной матрицы Y. Установим характер этого соответствия. Будем говорить, что элемент у{ матрицы Y мажорирует элемент */&• этой же матрицы, если второй из них принадлежит любому максимальному единичному минору, которому принадлежит первый. Соответствующие этим элементам столбцы матрицы L будут находиться в отно-
11. МИНИМАЛЬНЫЙ ДИЗЪЮНКТИВНЫЙ БАЗИС 127 шении поглощения: столбец, соответствующий элементу ум будет поглощать столбец, соответствующий элементу у?. Если будет обеспечено покрытие элемента у\ некоторым максимальным единичным минором, то о покрытии элемента у{ можно не беспокоиться — он будет покрыт «автоматически». Нахождение мажорирующих элементов в матрице Y не представляет трудностей: элемент щ мажорирует элемент yit, если столбец у; поглощается столбцом у*, а строка yt поглощается строкой у*. Это утверждение легко доказывается от противного. Отношение мажорирования транзитивно: если у\ мажорирует у{, а у{ мажорирует yl, то у\ мажорирует у\. Таким образом, поиск находящихся в отношении по* глощения столбцов в матрице L полностью сводится к поиску находящихся в том же отношении строк и столбцов матрицы Y. Это представляет несомненный практический интерес, поскольку размеры матрицы У, как правило, значительно меньше размеров матрицы L. Правило редуцирования матрицы Y. Если строка у{ поглощает строку у^, то приписывается значение «—» всем ее единичным элементам, соответствующие которым элементы строки ук также имеют значение 1. Аналогичное правило устанавливается для столбцов. Например, в уже знакомой нам матрице У = 12 3 4 б в 10 1111* 0 10 0 0 1 10 10 0 0 110 10 1 0 110 11 в отношении поглощения находятся следующие пары строк и столбцов: У1 > Уз, У4 > У2> Уб > У2> У1 > У4, У3 > У5, У6 > У2, У6 > >4, У* > У5. Следуя правилу редуцирования и отыскивая в поглощающих строках и столбцах соответствующие элементы, припишем им значение «—», получив в результате
128 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ матрицу L 0 1 0 2 0 1 0 — — 3 — 0 1 0 — 4 1 0 0 1 0 5 1 0 0 0 1 в —" — 0 — — _ 1 - 3 4 5 Элементы, получившие при таком редуцировании значение «—», можно назвать несущественными, а само редуцирование — выявлением несущественных элементов. Заметим, что термин «несущественный» в известной степени условен. Например, если в матрице У существуют две равные строки, за несущественные можно принять единичные элементы одной из строк или другой, но не обеих вместе. Допустим теперь, что рассматриваемая нами задача нахождения кратчайшего минорного покрытия булевой матрицы Y решается некоторым многошаговым процессом, в котором текущая ситуация характеризуется двумя переменными величинами: растущим набором максимальных единичных миноров, уже включенных в конструируемое решение, и троичной матрицей У*, получаемой из У заменой значений 1 уже покрытых элементов на значение «—». Элементы со значением «—» в дальнейшем можно покрывать, но не обязательно. Имея теперь дело уже не с булевой матрицей У, а с троичной матрицей У*, уточним некоторые старые понятия и введем новые. Назовем два единичных элемента троичной матрицы У* совместимыми, если существует минор, содержащий оба этих элемента и не содержащий нулей. Обобщая это отношение, назовем некоторое множество единичных элементов множеством совместимых элементов, если существует минор, содержащий все эти элементы и не содержащих нулевых элементов. Если некоторое множество совместимых элементов перестает быть таковым при добавлении в него любого из остальных единичных элементов матрицы У*, то оно называется максимальным множеством совместимых элементов. Если некоторый единичный элемент матрицы У* принадлежит лишь одному максимальному множеству сов-
11. МИНИМАЛЬНЫЙ ДИЗЪЮНКТИВНЫЙ БАЗИС 129 местимых элементов, он называется определяющим, а соответствующее максимальное множество — определяемым множеством для этого элемента. Сформулируем правило редуцирования текущей ситуации при поиске кратчайшего минорного покрытия булевой матрицы У. Правило выбора очередного элемента. Если в перемен- ной матрице У* существует некоторый определяющий элемент, то в решение включается любой максимальный единичный минор матрицы У, содержащий определяемое данным элементом множество единичных элементов матрицы У*. Например, анализируя полученную в рассматриваемом примере матрицу У*, мы находим, что единичный элемент у\ является определяющим, поскольку он принадлежит единственному максимальному множеству совместимых элементов {у\, yl}. Содержащий это множество максимальный единичный минор матрицы У (показываемый на ее фоне) 10 10 0 0' 0 0 0 0 0 0 10 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 включается поэтому в решение. Легко находятся и определяющие элементы у\, у\ и yl, порождающие определяемые ими множества {у\}, {у\, yl} и {у[, yt}, а также содержащие эти множества максимальные единичные миноры исходной булевой матрицы У: 0 0 0 0 0 0 0 10 0 0 1 0 0 0 0 0 0 0 10 0 0 1 0 10 0 10 0 10 1' 0 0 0 0 0 0 0 0 0 0 0 0 10 0 10 1 0 1 '0010 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 11 0 0 0 0 0 0. 1 1 5 А. Д. Закрсвский
130 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ Таким образом, в рассматриваемом примере правила редуцирования привели нас непосредственно к оптимальному решению, без построения матрицы L. Весьма важно, что редуцирование путем нахождения определяющих элементов имеет в общем случае цепной характер, поскольку выбор очередного минора сопровождается сокращением числа единиц в текущем значении матрицы У*, а это может привести к появлению новых определяющих элементов. Комбинирование методов. Описанные методы могут комбинироваться. Например, можно сначала редуцировать исходную матрицу У, а затем построить матрицу L для оставшихся существенных элементов и искать ее кратчайшее строчное покрытие. Пусть матрица, для которой надо найти кратчайшее минорное покрытие, имеет следующий вид: У = 12345678 10 10 110 1 10 0 0 10 10 0 10 10 10 1 10 0 0 0 10 0 0 110 1110 110 110 10 0 0 10 110 0 .1 1 0 1 0 1 1 1J Начнем с выделения в матрице У несущественных элементов. Для этого отыщем все пары строк и все пары столбцов, находящихся в отношении поглощения, и определим проекции поглощаемых рядов на поглощающие, как состоящие из несущественных элементов. Находим, что у2 < у6, >з < у8, у4 < yi, у4 < Уе, У? < yi, У3 < У5, У3 < У6, У4 < У2, У4 <С У6 и У8 <Ув> вследствие чего несущественными оказываются элементы у], у\, у76у yl, у\, у* и т. д. Обозначая их символом «—», а оставшиеся единичные, т. е. существенные элементы — различными буквами (для удобства последующего изложения), приведем рассматриваемую матрицу У к следующему редуцированному виду:
11. МИНИМАЛЬНЫЙ ДИЗЪЮНКТИВНЫЙ БАЗИС 131 1 — б 0 ж 0 — 0 — 2 0 0 — 0 11 — 0 — 3 — 0 0 0 — 0 м 0 4 0 0 д 0 0 л 0 — 5 — в 0 0 — — — 0 G — 0 — 3 — 0 — — 7 0 г 0 0 к — 0 11 s а 1 0 е 0 0 0 0 —. о 3 4 5 • 6 7 Л Анализируя полученную троичную матрицу (хотя существенные элементы и обозначены различными буквами, тем не менее они обладают одним значением 1, т. е. матрица остается троичной), в множестве существенных элементов можно выявить максимальные совместимые подмножества. Напомним, что в минорах, образованных строками и столбцами матрицы F, в которых расположены элементы этих подмножеств, не должно находиться нулей, что следует из условия совместимости. Совокупность всех максимальных совместимых подмножеств из множества существенных элементов представим следующей булевой матрицей: а "1 0 0 0 0 0 0 0 0 0 0 0 б 0 1 1 1 0 0 ■0 0 0 0 0 0 в 0 1 0 0 1 0 0 0 0 0 0 0 г 0 1 1 0 1 1 0 0 0 0 0 0 д 0 0 0 0 0 0 1 1 0 0 0 0 е 1 0 0 0 0 0 1 0 0 0 0 0 ж 0 0 0 1 0 0 0 0 1 0 0 0 3 0 0 0 0 0 0 0 0 1 0 0 0 и 0 0 0 0 0 0 0 0 0 1 0 0 к 0 0 0 0 1 1 0 0 0 1 0 0 л 0 0 0 0 0 0 0 1 0 0 1 0 м 0 0 0 0 0 0 0 0 0 0 0 1 н 0" 0 1 0 0 1 0 0 0 1 1 0 В этой матрице имеется несколько столбцов с одной единицей, что значительно облегчает решение задачи о кратчайшем строчном покрытии матрицы. Решение оказывается однозначным: оно образуется строками, отмеченными символом +• 5*
132 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ Представим его следующей матрицей: а б в гдежзи клмн '1 00001000000 01 0111000000000 0000100000100 0000001100000 0000000011001 000000000001 0J Далее легко конструируется решение исходной задачи: для каждого из подмножеств {а, е}, {б, в, г}, {д, л} и т. д. находится содержащий его, а в остальном произвольный, максимальный единичный минор матрицы Y. Например, для подмножества {а, е} такой минор будет задаваться вектор-строкой 000001 01, по которой легко восстанавливается соответствующий вектор-столбец. Решение в целом будет представлено следующей парой матриц В и X, задающих соответственно строки и столбцы найденных миноров и удовлетворяющих уравнению Y = = BVX: В = г1 0 0 1 0 1 0 10 0 0 0 10 10 0 0 0 0 0 10 0 0 0 0 0 11 0 110 10 0 0 0 0 0 1 .1 0 1 1 1 0J х = 0 0 0 0 0 10 1 10 0 0 10 10 0 10 10 0 0 0 10 0 0 0 10 0 0 10 0 0 0 10 0 0 10 110 0 Итак, матрица Y дизъюнктивно разлагается на шесть единичных миноров, представляющих собой произведения столбцов полученной матрицы В на одноименные строки матрицы X: 1- 1 Y = г0 0 0 0 0 1 0 0 0 0 0 0 0 0 00000101 00000000 00000000 00000000 00000000 0 0 0 0 0 10 1. V-V 0 0 1 0 1 1 0 0П 00000000 00000000 00000000 0 0 10 110 0 00000000 0 0 10 110 0 ,0 0 0 0 0 0 0 0J
11. МИНИМАЛЬНЫЙ ДИЗЪЮНКТИВНЫЙ БАЗИС 133 Рассмотрим теперь другой путь продолжения решения данной задачи, не связанный с построением матрицы L. Операция нахождения таких столбцов этой матрицы, которые содержат лишь одну единицу, заменяется теперь поиском определяющих элементов в текущем значении матрицы У*, т. е. таких ее единичных элементов, которые принадлежат лишь одному максимальному множеству совместимых элементов. Заметим, что единичный элемент является определяющим, если все совместимые с ним другие единичные элементы оказываются попарно совместимыми. В данном случае легко устанавливается, что определяющим является элемент а (поскольку он совместим лишь с элементом е), а также существенные элементы з, и, м. Удаляя их из матрицы У* вместе с совместимыми с ними элементами е, ж, к, н, редуцируем матрицу У* до следующего значения: у* __ б 0 — 0 — 0 0 0 — 0 __ — 0 — 0 0 0 — 0 — 0 0 д 0 0 л 0 — в 0 0 — — — — 0 — — — 0 — 0 г 0 0 — — 0 0 0 0 0 0 О ~0 — — — Здесь в качестве определяющих можно выбрать элементы б и д; каждый из остальных элементов совместим с каким-либо из них. Каждый из определяющих элементов, выбранных нами, однозначно определяет некоторое максимальное совместимое подмножество из множества единичных элементов текущего значения матрицы У*. Для этого подмножества находится (в общем случае уже неоднозначно) некоторый максимальный единичный минор матрицы У, вводимый в решение. Представляя эти миноры парами «столбец матрицы В — строка матрицы X», мы находим матрицы В и X:
134 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ 110 10 0- 0 0 0 0 10 10 0 0 0 1 0 10 0 0 0 0 0 110 0 0 0 10 11 0 0 0 10 0 Ll 1 1 0 0 1. , х = '0 0000101 10 0 0 0 10 0 0 10 0 0 0 10 0 0 10 110 0 10 0 0 10 10 0 10 10 0 0 0 в Решение совпадает (с точностью до перестановки столбцов в 2? и строк в X) с полученным ранее. Заключительные замечания. Конечно, далеко не всегда рассматриваемая задача может быть решена только редуцированием исходной матрицы Y и последующим конструированием решения путем нахождения определяющих элементов. В общем случае эти операции следует чередовать с расщеплением некоторых ситуаций, т. е. с организацией некоторого перебора вариантов построения решения, гарантирующего получение кратчайшего минорного покрытия. Как и в предыдущих задачах, усилия здесь должны направляться главным образом на сокращение возникающего перебора. В данном случае они могут найти выражение в поиске таких существенных элементов, которые входят в минимальное число максимальных совместимых подмножеств, и рассмотрении последних по очереди. Отказавшись от гарантии минимальности получаемого минорного покрытия, можно значительно сократить время, затрачиваемое на его конструирование, выбирая в критических ситуациях, когда матрица Y* далее не редуцируется и определяющих элементов в ней не находится, наиболее перспективный вариант продолжения процесса конструирования. Реализуемый при этом шаг можно определить следующим образом: найти такой существенный элемент в матрице У*, который принадлежит минимальному числу максимальных совместимых подмножеств, выбрать среди последних такое, которое содержит максимальное число существенных элементов, найти для него некоторый содержащий его максимальный единичный минор матрицы Y и включить этот минор в решение. Заметим, что исследованная нами задача оказывается равносильной следующей: найти простейшую суперпози-
12. ЗАДАЧА О КОДИРОВАНИИ 135 цию типа CVDV, эквивалентную заданному оператору Fw- Действительно, эквивалентность выражается уравнением F = С X D, а критерием простоты служит число столбцов в матрице С, равное числу строк матрицы D. На рис. 37 приведена иллюстрация этой интерпретации, соответствующая рассмотренному примеру (см. стр. 132). пн У- < -< i < >— -с U Ь-о У f 2 3 4 5 6 7 8 X 1 2 3 4 5 6 7 8 а) Рис. 37. Дизъюнктивная матричная схема (а) и эквивалентная ей двухъярусная композиция (б). Там показаны некоторая дизъюнктивная матричная схема и эквивалентная ей последовательная двухъярусная композиция с минимальным промежуточным сечением. 12. Задача о кодировании О перекодировании входных булевых векторов. Положим теперь, что в уравнении Y -•= ВУХ задана лишь матрица X, а матрицы Y и В требуется найти. Стремясь к содержательной постановке, уточним задачу: допустим, что все столбцы матрицы X различны и требуется поставить в соответствие им также различные столбцы матрицы У, причем число строк матрицы Y должно быть минимально. В такой постановке задача интерпретируется как поиск элементарной матричной схемы, описываемой булевым матричным оператором Bv и осуществляющей такор дере-
136 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ кодирование исходного множества булевых векторов, задаваемых столбцами матрицы X, при котором достигается минимальная длина кода, равная числу строк в матрице Y. Очевидно, что при отсутствии ограничений на тип преобразователя задача решалась бы достаточно просто и число строк в матрице Y было бы равно целому, ближайшему сверху к двоичному логарифму числа столбцов в исходной матрице X. Однако в данной постановке задача оказывается нетривиальной. Найти некоторое приближение к оптимальному решению этой задачи можно, выделив в матрице X некоторый строчный (составленный из строк) минор X', все столбцы которого различны, а число строк минимально. Этот минор и представляет искомую матрицу У. Что же касается матрицы 5, то она строится следующим образом: столбцы из 5, соответствующие выделенным строкам из X, образуют квадратный минор, которому приписывается значение 1 путем заполнения единицами его главной диагонали, все остальные элементы получают значение 0. Покажем применение описанного метода на следующем примере, при подготовке которого считалась заданной лишь матрица X. В ней отмечены символом + выделенные строки, образующие минор X' в качестве значения матрице У, и струирована матрица В. этот минор передан соответственно скон- 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 в 0100000000 01 00001000000 00000100000 0000000100 0. V "0100001" 0 10 10 0 0 10 0 0 0 0 1 0 0 0 10 0 0 0 10 0 0 10 10 10 0 0 0 0 0 0 0 10 0 0 0 10 0 0 1 10 0 0 10 0 0 0 0 0 0 0 1 г0 0 1 0 0 1 0_ + + + +
i2. ЗАДАЧА О КОДИРОВАНИЙ i3v Самым трудным при решении данной задачи является нахождение минора X' с заданными свойствами. Эта операция рассматривается в теоретической диагностике, где она известна под названием задачи о минимальном диагностическом тесте. Нахождение минимального диагностического теста. Данная задача возникает при рассмотрении двух множеств явлений: множества причин А = {аи а2, . . ., ап) и множества следствий В = = {^1, Ь2, • • •» Ьт}. Эти два множества связаны отношением влечения, которое можно представить булевой матрицей X: х\ = 1, если явление а7- (причина) влечет явление bt (следствие), и х\ = 0 в противном случае. Матрица X считается известной, причем полагается, что все ее столбцы различны, т. е. нет различных причин, влекущих одинаковые наборы следствий. Диагностирование, как известно, заключается в определении причин по тем следствиям, которые они вызывают. При этом в число причин попадают обычно явления, непосредственное наблюдение за которыми осуществить трудно или даже практически невозможно, в связи с чем их приходится «вычислять». Напротив, следствия, называемые также признаками, представляют собой непосредственно наблюдаемые явления, и именно наблюдение за ними поставляет исходную информацию для вычисления причин. Однако эта информация не дается даром, в связи с чем число наблюдаемых признаков целесообразно ограничить. Так возникает оптимизационная задача нахождения такого минимального подмножества S признаков из множества 5, наблюдение за которыми дает достаточную информацию для того, чтобы установить путем логических рассуждений, какая из причин имеет место — для простоты считается, что совместное появление нескольких причин невозможно. Такое подмножество S называется минимальным диагностическим тестом. Легко показать, что решение этой задачи сводится к уже знакомой нам задаче нахождения в булевой матрице X минимального строчного минора X' с попарно различными столбцами. Будем называть такой минор минимальным тестом матрицы X. Подмножество S образуется эле-
138 Г Л. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ ментами из множества В, соответствующими вошедшим в минор X' строкам. v Известен точный метод решения данной задачи, заключающийся в построении булевой матрицы различий D, каждый столбец которой (вектор различий) соответствует некоторой паре столбцов матрицы X, показывая (единицами), какими компонентами эти столбцы отличаются, и в последующем нахождении кратчайшего строчного покрытия матрицы D. Искомый минимальный тест будет представлен множеством строк матрицы X, соответствующих вошедшим в покрытие строкам матрицы D. Для примера покажем матрицу различий D, полученную из приведенной выше матрицы X, отметив столбцы матрицы D парами образующих их столбцов из X: 111111222 2233 3 3444556 234567346 6745 6 7 567677 1000011111000 01 00101 1" 1010001011110 00 111000 1111100000100 01 00101 1 0010000100010 00 111000 1000101110100 10 0101011 + Z) = |l011111000011 11 0 0 0 0 0 0 I + 0001000010001 00 100110 0100011000111 10 00101 1 I + 1110110010001 00 100110 0000010000100 01 00101 1 .0 100101001011 01 01010 1_ Каждая строка этой матрицы показывает, какие пары причин различаются соответствующим признаком из множества В. Из необходимости различения любой пары и вытекает задача нахождения строчного покрытия матрицы X, причем кратчайшего, поскольку мы ищем минимальный тест. В данном случае найти кратчайшее покрытие вручную не так-то просто, хотя и возможно, например на основе описанного ранее метода. Мы ограничимся утверждением, что одним из кратчайших покрытий является то, элементы которого отмечены в матрице D знаком +. Несколько ниже это будет доказано.
12. ЗАДАЧА О КОДИРОВАНИИ 139 Заметим, что матрица различий быстро растет с увеличением числа столбцов в матрице X, а именно по квадратичному закону, и наступает момент, когда становится практически невозможно пользоваться ею. В связи с этим представляет интерес развитие таких методов" нахождения минимального теста, которые не связаны с построением матрицы Z), а работают непосредственно с исходной матрицей X. Рассмотрим один" из них, приближенный. Будем конструировать искомый тест, оперируя с переменным множеством Р, которое первоначально принимается пустым, а затем в него добавляются последовательно признаки, выбираемые определенным образом из множества В. Каждый признак (строка матрицы X) задает некоторое двублочное разбиение на множестве Л, т. е. на множестве столбцов матрицы X, различая элементы, принадлежащие различным блокам разбиения. Число различаемых пар, равное произведению мощностей блоков, может быть принято за меру различающей способности признака. В качестве первого элемента теста целесообразно выбрать такую строку из матрицы X, в которой число единиц как можно ближе к числу нулей, так, чтобы два блока разбиения были по возможности равномощными. Следующий выбранный нами признак будет делить эти блоки на более мелкие части, и здесь мы также должны заботиться о том, чтобы дробление блоков шло равномернее, в идеале на равные части. В конце концов этот процесс приведет к некоторому тесту — множество А окажется разбитым на одноэлементные блоки. Описанный многошаговый процесс конструирования теста предусматривает определенную оптимизацию при выборе очередного шага, но он не гарантирует оптимальность окончательного результата, т. е. минимальность находимого теста. Последняя может быть обеспечена дополнительными соображениями в конкретных ситуациях. Альтернативой является построение метода комбинаторного поиска, производящего достаточный перебор вариантов решений. Однако здесь такой метод рассматриваться не будет. Вернемся к той же матрице X, пронумеровав для удобства ее строки и столбцы:
140 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ 1 ~0 0 1 0 0 1 0 0 1 0 0 2 1 1 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 1 0 1 0 0 1 4 0 1 0 1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 1 0 1 0 0 в 0 0 0 0 1 0 0 0 0 0 1 7 г 0 1 0 0 0 0 1 0 1 0_ 1 2 3 4 5 в 7 8 9 10 11 Следуя сформулированным правилам, выберем в качестве первого признака строку 1, разбивающую множество столбцов матрицы X на два блока: 1 г° 0 1 0 0 1 0 0 1 0 0 3 0 0 0 0 0 1 0 1 0 0 1 4 0 1 0 1 0 0 0 0 0 0 0 б 0 0 0 0 0 0 1 0 1 0 0 6 0 0 0 0 1 0 0 0 0 0 1 2 1 \ 0 0 1 0 0 0 0 0 0 7 г 0 1 0 0 0 0 1 0 1 0 1 + 2 3 4 5 в 7 8 9 10 11 (строка, задающая разбиение, отмечена символом +)• Заметим, что максимальный из блоков содержит пять столбцов, из чего следует, что мощность теста, получаемого при дальнейшем разбиении, не может быть меньше четырех. Дальнейший процесс конструирования теста отображается следующей последовательностью разбиений: в качестве второго включаемого в тест признака выбирается строка 6, и матрица X разбивается на три столбцовых минора
12, ЗАДАЧА О КОДИРОВАНИИ 141 1 0 0 1 0 0 1 0 0 1 0 .0 3 0 0 0 0 0 1 0 1 0 0 1 4 0 1 0 1 0 0 0 0 0 0 0 б 0 0 0 0 0 0 1 0 1 0 0 6 0 0 0 0 1 0 0 0 0 0 1 2 1 1 0 0 1 0 0 0 0 0 0 7 г 0 1 0 0 0 0 1 0 1 0_ 1 + 2 3 4 б 6 + 7 8 9 10 11 следующий выбор падает на строку 2, и при этом множество столбцов матрицы X разбивается на пять блоков 1 "0 0 1 0 0 1 0 0 1 0 0 3 0 0 0 0 0 1 0 1 0 0 1 4 0 1 0 1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 1 0 1 0 0 6 0 0 0 0 1 0 0 0 0 0 1 2 1 1 0 0 1 0 0 0 0 0 0 7 г 0 1 0 0 0 0 1 0 1 0_ 1 + 2 + 3 4 б 6 + 7 8 9 10 11 наконец, последней выбирается строка 9, в результате чего множество столбцов разбивается на одноэлементные блоки, а выбранные строки образуют тест: 1 "0 0 1 0 0 1 0 0 1 0 .0 3 0 0 0 0 0 1 0 1 0 0 1 4 0 1 0 1 0 0 0 0 0 0 0 5 0 0 0 0 0 0 1 0 1 0 0 6 0 0 0 0 1 0 0 0 0 0 1 2 1 1 0 0 1 0 0 0 0 0 0 7 г 0 1 0 0 0 0 1 0 1 0_ 1 + 2 + 3 4 5 6 + 7 8 9 + 10 11
142 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ Обобщение задачи о минимальном тесте. Нахождение минимального теста для матрицы X позволяет иногда получать хорошие приближения к оптимальному решению задачи о перекодировании столбцов этой матрицы, осуществляемом дизъюнктивным матричным оператором 5V. Однако при малой плотности единиц в матрице X оно приводит обычно к завышенной длине находимого кода. В этом случа ецелесообразно решать данную задачу в ее первоначальной постановке, конструируя решение не из отдельных строк матрицы X, а из некоторых совокупностей ее строк, точнее, из покомпонентных дизъюнкций строк, образующих ту или иную совокупность. Действительно, именно такие элементы конструкции реализуются непосредственно оператором 5V. Получаемое таким образом решение назовем дизъюнктивным тестом для булевой матрицы X. Введение данного термина оправдывается в какой-то степени тем, что рассматриваемую задачу можно интерпретировать как такое обобщение задачи о минимальном диагностическом тесте, при котором непосредственное наблюдение за следствиями (значениями элементов в соответствующих строках матрицы X) выгодно заменить измерением некоторых их дизъюнкций, сокращая, таким образом, число производимых наблюдений (измерений). Видно, что при данном обобщении задача о минимальном тесте усложняется и трудоемкость ее решения соответственно возрастает. Из эвристических соображений следует, что при минимизации дизъюнктивного теста целесообразно стремиться к тому, чтобы число единиц и нулей в каждом элементе теста (покомпонентной дизъюнкции некоторых строк) были по возможности равны — в этом случае максимизируется различающая способность элементов теста. При решении практических задач можно удовлетвориться получением некоторых хороших приближений, для чего может быть рекомендован следующий метод нахождения минимального теста, построенный по аналогии с описанным выше. Будем конструировать дизъюнктивный тест последовательно, поочередно выбирая в качестве его элементов не-
12, ЗАДАЧА О КОДИРОВАНИИ 143 которые совокупности строк из матрицы X. Выбор на очередном шаге производится так, чтобы максимизировать число разбиваемых при этом пар столбцов. Эту частную задачу будем решать также приближенно, путем последовательного расширения совокупности выбираемых из матрицы X строк: первой выбирается строка, задающая максимальное разбиение на классах, порожденных предыдущими совокупностями, затем перебираются подряд остальные строки и очередная из них присоединяется к текущей совокупности, если число разбиваемых пар при этом увеличивается. Например, применяя этот метод к рассмотренной выше конкретной булевой матрице X, мы выбираем сначала строку 1, а затем добавляем к ней строку 2. Покомпонентг ная дизъюнкция этих строк представляется вектором 0 10 1001, задающим разбиение множества столбцов на примерно равные части. Очевидно, что последующее добавление к совокупности {1, 2} какой-либо из остальных строк не повысит различающую способность соответствующей дизъюнкции. Поэтому совокупность {1, 2} принимается в качестве первого элемента искомого теста. Следующие элементы конструируются аналогичным образом, причем их качество оценивается теперь количеством разбиваемых ими пар столбцов, принадлежащих различным блокам разбиения, порождаемого уже включенными в тест элементами. Так находятся совокупности {3, 5} и {3, 6}, определяющие последние две строки следующего трехэлементного дизъюнктивного теста, оказывающегося минимальным: 12 3 4 5 6 7 0 10 10 0П 110 0 0 11. 1 0 1 0 0 0 1J Отображая выбранные совокупности строк из матрицы X соответствующими строками операторной матрицы В и используя в качестве матрицы У полученную матрицу дизъюнктивного теста, мы найдем оптимальное
144 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ решение данной задачи о кодировании матрицы X: 0 1 1 1 1 0 0 0 1 Y 1 0 0 0 0 0 0 1 0 ';]-[ О О о о в 00000000 0" 1 1 О 1 о о X 0 0 0 0 0 0 10 0 0 0 0 X 0 10 0 0 0 1" 0 10 10 0 0 10 0 0 0 0 1 0 0 0 10 0 0 0 10 0 0 10 X | 1 0 1 О О О О 0 0 0 0 10 0 0 0 10 0 0 1 10 0 0 10 0 0 0 0 0 0 0 1 .0010010 Поиск минимальной троичной кодирующей матрицы. Сформулируем аналогичную задачу над уравнением Y = TVX, интерпретируя ее как задачу нахождения минимальной троичной кодирующей матрицы Т для заданной входной булевой матрицы X. Сравнивая эту задачу с предыдущей, установим следующее ее отличие: элементами обобщенного теста становятся теперь дизъюнкции не только строк матрицы X, но также их инверсий. В связи с этим напрашивается следующий метод решения новой задачи, сводящий ее к старой: добавив в матрицу X отрицания всех строк, расширить ее таким образом до матрицы X*, а затем решать задачу о кодировании для уравнения Y = BWX*. Полученная матрица Y будет удовлетворять обоим уравнениям, а матрица Т легко получается из матрицы В попарной сверткой ее столбцов. При этом каждая сворачиваемая пара соответствует такой паре строк в матрице X*, которые представляют некоторую строку из I в прямой и инверсной форме. «Прямые» строки отображаются при свертке единицами, «инверсные» — нулями. Рассматривая некоторую строку булевой матрицы X как элемент теста, задающий соответствующее двублоч- ное разбиение на множестве столбцов, вспомним, что ка-
12. ЗАДАЧА О КОДИРОВАНИЙ 145 чество этого элемента, т. е. его различающая способность, тем выше, чем ближе число единиц в строке к числу нулей. Конструируя элемент теста посредством операции дизъюнкции над некоторыми строками матрицы X, выгоднее поэтому выбирать такие строки, число единиц в которых относительно невелико — только в этом случае дизъюнкция строк будет приводить к повышению качества получаемого элемента теста. Исходя из этих соображений, а также с целью сокращения объема вычислений при поиске обобщенного теста, можно рекомендовать ограничить число строк в матрице X*, сравняв его с числом строк в исходной матрице X и положив, что xf = xt, если относительная доля единиц в строке X; не превышает половины, и что xf = x{ в про* тивном случае. Допустим, например, что 1 1 1 0 0 0 1 1 2 1 1 1 1 0 1 1 3 0 0 0 1 0 0 1 4 1 0 1 1 0 0 1 5 1 1 0 0 1 0 1 6 1 1 1 0 0 0 0 7 0 1 0 0 0 0 0 8 1" 1 0 0 0 0 1 1 2 3 4 5 в 7 X и требуется найти минимальные по числу строк матрицы У и Г, удовлетворяющие уравнению Y = TVX. Начнем решение задачи с построения матрицы X*, в которой минусом отмечены строки, полученные инверси- рованием соответствующих строк матрицы X: Х* = 0 0 10 0 0 10 0 0 110 0 0 0 0 10 10 10 0 0 1110 0 0 0 0 0 0 0 10 0 0 110 0 0 0 0 0 0 0 0 0 0 110 — и будем теперь рассматривать уравнение Y — 5VX*, применив к нему изложенный выше метод решения задачи о кодировании.
Ш ГЛ. 3. ТЕОРИЙ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ Выбирая в матрице X* первую из строк с максимальным качеством, а именно строку 3, присоединим к ней дизъюнктивно строку 2, получив таким образом первый элемент теста — первую строку искомой матрицы Y У! = 01110100 и первую строку матрицы В 1^ = 011000 0. Сразу же можно найти и соответствующую строку матрицы Т, удовлетворяющей исходному уравнению Y = = TVX. Следует лишь учитывать, что при переходе от матрицы В к матрице Т нули заменяются значением «—», а единицы остаются (в столбцах, которым соответствуют строки матрицы X*, равные одноименным строкам матрицы X) или заменяются нулями (в столбцах, соответствующие которым строки матрицы X* были получены инверсированием одноименных строк из X). В данном случае Ц = — 01 . Соответственно переставив столбцы, покажем порождаемое полученным вектором уг разбиение множества столбцов матрицы X* на два равномощных блока: у1= 0 0 0 0 1111 1 0 0 0 0 0 1 0 5 0 0 0 0 1 0 0 7 1 0 0 0 0 0 1 8 0 0 0 0 0 0 0 2 0 0 1 1 0 1 0 3 1 1 0 1 0 0 0 4 0 1 1 1 0 0 0 в 0" 0 1 0 0 0 1 1 — 2 — 3 4 5 6 7 — Далее мы будем интересоваться лишь дроблением полученных блоков разбиения, соответственно оценивая качество второго элемента теста. Применяемый нами метод приводит теперь к выбору строки 1 и дизъюнктивному присоединению к ней строки 6. В результате получим значения вторых строк искомых матриц: у2 = 1110001 0, Ь2 = 1 0 0 0 0 1 0,
13. ЗАДАЧА О КОДИРОВАНИИ 147 и новое разбиение множества столбцов: У1 = 0 0 0 0 1 1 1 1 у2 = 1 1 0 0 11 0 0 1 0 0 0 0 0 1 0 7 1 0 0 0 0 0 1 5 0 0 0 0 1 0 0 8 0 0 0 0 0 0 0 2 0 0 1 1 0 1 0 3 1 1 0 1 0 0 0 4 0 1 1 1 0 0 0 6 0" 0 1 0 0 0 1 1 2 3 4 5 6 7 Те же правила определяют заключительный шаг: выбор строки 1 и дизъюнктивное присоединение к ней сначала строки 2, а затем строки 5. Так получаются Уз Ь3 t8 0 0 1110 10, 110 0 10 0, 00 1 и разбиение множества столбцов становится полным. Формируя из найденных строк матрицы У и Г, представим решение в целом: X [0111010 0"] Г— 0 1— — — —Т 1110 0 0 1 0 = 0 - - - - 1 - 0 0 1 1 1 0 1 0J [о 0 - - 1 - —J 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1 0 0 1 X 1 1 0 1 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 X Очевидно, что это решение оптимально. Однако напомним, что в общем случае оптимальность данным методом не гарантируется.
148 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ 13. Задача о генерировании Задача о кратчайшем покрытии булевой матрицы парными минорами. Ранее (§ 11) нами рассматривалась задача, которую можно назвать задачей о генерировании заданного множества булевых векторов, подразумевая при этом, что задача заключается в построении своеобразного «генератора» данных векторов, представляющего собой сочетание некоторой простейшей элементарной матричной схемы и некоторого множества булевых векторов, подаваемых на вход этой схемы и инициирующих появление требуемых векторов на ее выходе. Мы решили эту задачу для случая, когда генератор ищется в классе Р-схем, и показали, что в этом случае она сводится к нахождению минимального дизъюнктивного базиса для заданного множества булевых векторов, или, что то же самое,к нахождению кратчайшего минорного покрытия матрицы У, представляющей это множество. Перейдем к исследованию этой задачи в более общей постановке, когда решение ищется среди т-схем, описываемых уравнением У — TVX1 где матрица У считается заданной, а Т и X — неизвестными. Критерием простоты искомой схемы считаем по-прежнему число столбцов I в операторной матрице (в данном случае это будет троичная матрица Г), равное числу строк входной матрицы X. Прежде всего попытаемся выявить комбинаторную суть отличия новой постановки задачи от старой, для чего обратимся к сравнению дизъюнктивного разложения i Y = BVX = V bfc x xfr, на основе которого и было осу- ществлено сведение поиска минимальных матриц В и X к нахождению кратчайшего минорного покрытия матрицы У, с аналогичным разложением У = Т X—^(tkVxk), иллюстрируемым примером: "10 10" 110 0 110 1 110 1 [о 1 1 i_ = "1 — 0 0 .— — 1 1 — 0 0 1 — — 0 1 J
13. ЗАДАЧА О ГЕНЕРИРОВАНИИ 149 А 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0" 0 1 1 0 V 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0' 0 0 0 1. V 10 0 0 0 0 0 0 0 0 0 0 10 0 0 .0 111. Из примера видно, что выходная матрица Y дизъюнктивно разлагается теперь уже не на единичные миноры, а на пары единичных миноров, причем такие, что строки одного из миноров, образующих некоторую пару, являются инверсиями строк другого минора этой же пары. Назовем такие пары парными минорами, рассматривая далее единичные миноры, как их частный случай, при котором задается лишь один элемент пары. Нетрудно видеть, что в новой постановке задача сводится к нахождению кратчайшего покрытия заданной булевой матрицы Y парными минорами. Точный метод. Можно предложить следующий метод нахождения точного решения этой обобщенной задачи о кратчайшем минорном покрытии булевой матрицы Y: сначала найти все максимальные парные миноры (определяемые аналогично максимальным единичным минорам), затем построить матрицу Q бинарного отношения принадлежности единичных элементов матрицы Y этим максимальным парным минорам, наконец, найти кратчайшее покрытие этой матрицы и использовать его в качестве решения поставленной задачи. Например, входящая в рассмотренный пример матрица "10 10" 110 0 110 1 обладает следующими пятью максимальными парными минорами (второй из них представляет собой вырожденный случай — максимальный единичный минор): 1 10 0 0" 10 0 0 10 0 0 10 0 0 0 111 > 2 "0 0 0 0" 0 10 0 0 10 0 0 10 0 0 10 0 у 3 '0010 0 0 0 0 110 1 110 1 0 0 10
150 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ 0 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0" 0 0 0 1 > 10 10' 0 0 0 0 0 10 1 0 10 1 .0 1 0 1. Обозначив следующим образом единичные элементы матрицы Y буквами "а о б о " в г о 0 Д е о ж з и о к О л м н построим матрицу отношения принадлежности этих элементов полученным максимальным парным минорам: а к л м н <? = 10 10 10 0 10 0 111 0001010010100 0100111111010 0011110110011 1100011011101 Легко находится единственное кратчайшее строчное покрытие этой матрицы, включающее две последние строки. Используя его, получаем оптимальное решение для рассмотренного примера: Y = 1 0" 0 0 0 1 0 1 1 1. = 0 1 1 1 0 0 1 1 1 0 0 0 0 0 1 0" 0 0 0 1 V 10 10' 0 0 0 0 " — 1 1 i1 Lo 11 — 0 0 0 1 1V Г1 1 0 01 - [i о 1 oj Заметим, что переход от парного минора к соответствующей паре «столбец V матрицы Т — строка xt матрицы X» неоднозначен. Дело в том, что одновременное ин- версирование этих векторов не изменяет представляемого
13. ЗАДАЧА О ГЕНЕРИРОВАНИЙ 151 ими минора. Поэтому найденное 21 — 1 других, эквивалентных ему, цов в матрице Т. В данном случае получаем решение порождает где I — число столб- Y = ГО 0 1 11 [l 0 1 О J 1 о о о г Г1 1 0 01 [l 0 1 oj " — 1 1 1 0 0 1 — 1 1 1 J Г1 1 0 01 [О 1 О 1J 0 1V[0 0 1 11 — [о 1 о ij Г— 0 0 0 Li 0 1 — 1 1 1 J Приближенный описанного метода метод. Трудоемкость матрицы Q, т. е. ее максимальных зависит от размеров от числа единиц в матрице Y и числа парных миноров. При достаточно больших значениях этих величин метод может оказаться практически нереализуемым. Исследуем в связи с этим возможность решения задачи о генерировании без промежуточного построения матрицы Q. Отметим прежде всего, что различия в решении этой задачи при двух постановках, с булевым оператором Bv и с троичным оператором Гу, проявляются лишь тогда, когда в матрице Y существуют строки, находящиеся в отношении сцепляемости, определяемом следующим образом: две строки yj и у7- сцепляемы, если у^ Vyj = *• Лишь тогда в операторной матрице Т могут существовать столбцы, содержащие как единицы, так и нули. В противном случае решение задачи генерирования для уравнения у = TVX полностью сводится к решению той же задачи для уравнения Y = BWX, с той же матрицей Y. В качестве приближенного метода решения задачи генерирования с троичной операторной матрицей Т можно
152 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ рекомендовать сочетание предварительного нахождений некоторых, достаточно крупных парных миноров с последующим использованием описанного ранее метода нахождения «генератора», предложенного применительно к уравнению Y — BVX и основанного на выделении в матрице Y существенных и определяющих элементов. Например, рассматривая матрицу -1 0 1 0 1 0 1 1-, 1110 1110 | 1110 0 110 10 0 110 11 0 10 0 110 1 11110 10 0 10 10 0 0 10 Ll 1 0 1 1 1 1 1-1 У = выделим в ней парный минор го о о о о о о о- 1110 0 10 0 1110 0 10 0 0 0 0 110 11 00000000 1110 0 10 0 00000000 L0 0 0 1 1 0 1 1. покрывающий довольно много единиц в матрице У. Заменив покрытые единицы символом «—», будем беспокоиться теперь о покрытии остальных единиц, показанных в «остатке» матрицы Y: 1 г1 — — 1 0 — 1 -1 2 0 — — 0 1 — 0 1 3 1 — — 0 0 — 1 0 4 0 0 0 — 0 1 0 — 5 1 1 0 — 1 0 0 — 6 0 — — 0 1 — 0 1 7 1 1 1 — 0 0 1 — 8 1 л 0 0 — 1 0 0 — 1 2 3 4 б 6 7 8 у* Не находя более подходящих парных миноров, согласимся на покрытие остальных единиц максимальными
13. ЗАДАЧА О ГЕНЕРИРОВАНИИ 153 единичными минорами, обратившись к упомянутому методу его нахождения. Обобщая отношение поглощения на троичные векторы (в данном случае строки или столбцы матрицы У*), будем считать, что вектор а поглощает вектор Ь, если sup a > > sup b, где оператор sup эквивалентен суперпозиции | inf | и осуществляет отображение значений 1, —, 0 соответственно в значения 1,1,0. При этом те компоненты вектора а, которым соответствуют единичные значения вектора Ь, мажорируются последними и могут рассматриваться как несущественные. Для полученной матрицы Y* оказывается, что у2 > уз (символ > используется здесь для показа отношения поглощения между троичными векторами), уг > у7, у2 > у7, Уз > у7, Ув > у4, Уа > у5, У1 > У3» У1 > У4» У2 > У6, У1 > У7, У6 > У8- Заменяя значения находимых несущественных элементов на «—», редуцируем матрицу У* до — — — 1 0 — — 0 — — 0 1 0 — — — — 0 0 1 0 0 0 0 — 0 1 0 — 1 0 0 0 - о — — — 0 — — -01 — о о 0 1 0 Далее стандартным образом находятся определяющие элементы и определяемые ими подмножества существенных элементов. Присваивая одинаковые номера элементам, принадлежащим одному определяемому подмножеству, и подчеркивая среди них определяющий, представим результат в следующей форме: — — 1 0 — — — 0 — 0 4 — 0 — — — 0 0 — 2 0 0 0 0 0 1 0 — — 4 0 _. 0 0 — 0 — 0 — — 0 — - 3 л - 0 - 0 0 3 0 0 2 0 — —
154 ГЛ. 3. ТЕОРИЯ ЭЛЕМЕНТАРНЫХ МАТРИЧНЫХ СХЕМ Напомним, что процесс нахождения определяющих элементов итеративен. Например, в начале процесса элемент yl не может быть признан оп- й <Н> i \ ] о з 6 7 8 ределяющим, так как он совместим с элементами у\ и у\, которые не совместимы между собой. Однако после того, как элемент у4 войдет в подмножество совместимых элементов, определяемое элементом i/e» элемент у\ становится определяющим. Отыскивая максимальные единичные миноры для найденных определяемых подмножеств и дополняя их найденным ранее парным минором, мы приходим в конечном результате к следующему решению: X 1 2 3 4 5 Рис. 38. Синтезированный генератор заданной выходной матрицы. 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 \ 1 1 0 0 1 1 1-1 0 0 1 1 0 0 и — 1— 1 1 0 — 1 — L0 — — — 1 — 1 — 1 1 1 1 1 1 —п — 1 — 1 -- — 11 - 1 1 J X X 1 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 X 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 На рис. 38 показана матричная схема, реализующая найденный оператор Гу,
ГЛАВА 4 МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ 14. Классические методы минимизации булевых функций Познакомившись с элементарными матричными схемами, рассмотрим теперь чуть более сложные схемы, получаемые из элементарных легко реализуемой сверткой выходного вектора у по операции дизъюнкции или конъюнкции. Такие схемы описываются суперпозициями \/ ВА, \/ Дv, Д в\ А Дv, V T\ У^Л^иД Г*. Это разнообразие можно свести к двум суперпозициям \J BA и \/Гл, которые и стоит изучить более подробно. Реализация монотонных булевых функций. Как это следует из (3.6), составной оператор V^A задает уравнение у = \/ВЛХ = = (A(b1-x))V(A(b2-x))v...V(A(bn->x)), (14.1) X С / о— 2 о- 4- представляющее функциональную зависимость переменной у от компонент вектора х. Данную зависимость удобно представить в дизъюнктивной нормальной форме, члены которой соответствуют строкам матрицы В, причем каждый член — элементарная конъюнкция — образуется из символов тех переменных, которые отмечены единицами в соответствующей строке. Например, структура схемы IIЛМ, изображенной на рис. 39, описывается булевой матрицей Оттт—°у Рис. 39. ПЛМ, ре- ализующая монотонную булеву функцию. [10 11] 0 10 1. 1 1 0 0J
156 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ В этом случае у = (1 — хг) (О — х2) (1 — ж,) (1 — *4) V V (0 -* *,) (1 — *г) (0 -> х3) (1 -> *4) V V (1 -* *i) (1 — х2) (0 -* х3) (О — х4) = = Х^Х^Х^ у #2#4 у Х^Х^ь Легко видеть, что схемы данного типа реализуют функции, оказывающиеся монотонными: если некоторый аргумент меняет свое значение с 0 на 1, а значения остальных аргументов остаются прежними, то функция не может при этом изменить значение с 1 на 0. Нетрудно также показать, что любая монотонная булева функция реализуется некоторой схемой с оператором \/ВА. Рассматривая некоторую конкретную булеву матрицу В, можно поставить вопрос: а нельзя ли как-то упростить ее или найти другую более простую матрицу С, порождающую оператор V Сл, эквивалентный по действию оператору V ВА — в этом случае будет выполняться отношение равносильности V СА =\/^Л-При этом за критерий простоты можно принять число строк в матрице или число единиц в ней. Чтобы ответить на этот вопрос, найдем сначала троичную матрицу U, представляющую булеву функцию /, реализуемую оператором \J ВА. Для этого достаточно соответственно преобразовать структурную матрицу В, заменив в ней нули значением «—». В рассматриваемом примере это приводит к следующему результату: Строки матрицы U интерпретируются при этом как элементарные конъюнкции, а матрица в целом — как дизъюнкция этих конъюнкций. Возможна и другая интерпретация, в определенном смысле эквивалентная первой, но оказывающаяся в ряде случаев более удобной. Она имеет теоретико-множественный характер и основана на замене булевой функции / (хг, х2, . . ., хп) ее характеристическим множеством М1, составленным из тех элементов булева пространства М значений переменных хг, х2, . . . . . ., хп, на которых функция / принимает значение 1 (в то время как пространство М в целом содержит все 2п
14, КЛАССИЧЕСКИЕ МЕТОДЫ МИНИМИЗАЦИИ 1^7 булевых вектора с п компонентами). Каждая строка матрицы U рассматривается при этом как интервал пространства М — множество булевых векторов, получаемых из данной строки всевозможными заменами значения «—» на О или 1. Этот интервал представляет собой характеристическое множество соответствующей элементарной конъюнкции. Матрица U в целом рассматривается как объединение интервалов, задаваемых отдельными строками, т. е. как характеристическое множество функции /. Очевидно, что все заданные в матрице U интервалы являются подмножествами характеристического множества М1, в связи с чем их можно называть интервалами из М1 или интервалами множества М1. На языке последней интерпретации поставленная задача упрощения оператора V 5Л, реализующего булеву функцию /, будет звучать так: найти минимальную совокупность интервалов из Л/1, объединение которых равно М1. При такой формулировке за критерий оптимальности принимается число строк в искомой матрице С, в основном и определяющее сложность матричной схемы, реализующей функцию /. Назовем эту задачу задачей о кратчайшем интервальном покрытии множества М1. Решение практических задач связывается обычно с нахождением не всех оптимальных решений, а хотя бы одного из них, что в ряде случаев существенно упрощает процесс поиска. В данном случае нас будет интересовать нахождение одного из кратчайших интервальных покрытий множества М1. Нетрудно показать, что при этом можно ограничиться рассмотрением максимальных интервалов из М1, т. е. таких интервалов, которые не содержатся в каких-либо других интервалах из М1. Сформулированная задача решается довольно просто. Если в матрице В существует некоторая пара строк bt и Ь7-, находящихся в отношении поглощения Ь^ > Ь; (неравенство выполняется покомпонентно), то строку bt (поглощающую) можно выбросить из матрицы В, поскольку соответствующие строки ut и и7- матрицы U будут представлять интервалы, находящиеся в отношении включения, и, следовательно, удаление первого из них не приведет к изменению характеристического множества М1 реализуемой булевой функции / — результата объединения всех интервалов, представленных матрицей U.
158 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ Если же в матрице В не существует пары строк с указанным свойством, то эта матрица не может быть упрощена и вообще не существует более простой матрицы, порождающей эквивалентный оператор типа \/ВА. Дело в том, что в этом случае каждая из строк матрицы В представляет собой элемент множества М1, принадлежащий лишь одному максимальному интервалу из Л/1, а именно тому, который представлен соответствующей строкой матрицы U. Поэтому каждый из интервалов, заданных матрицей (7, необходимо включить в решение, а это и означает, что матрица U неупрощаема, так же как и матрица В. В рассматриваемом примере матрица В оказывается неупрощаемой. Задача минимизации ДНФ. В то время как составные операторы типа \/ВА реализуют лишь монотонные булевы функции, оператор \/ТЛ может реализовать любую булеву функцию. Для этого достаточно выразить эту функцию в дизъюнктивной нормальной форме и представить последнюю структурной матрицей Т. Действительно, VrAx = v*i> где элементарная конъюнкция kt задается строкой t,- матрицы Т и определяется по формуле Л, = Д (tfAx), т. е. включает символ Xj, если t\ = 1, включает xj, если t\ = 0, и не включает ни х}-, ни Xj, если t\ = «—». Пусть, например, нам известна следующая дизъюнктивная нормальная форма булевой функции /: Представив эту ДНФ троичной матрицей pi __ о - 1 И Т — - 1 1 — — Г L— ooi —J примем эту матрицу за структурную и построим соответствующую схему (рис. 40). Легко убедиться, что получен-
14, КЛАССИЧЕСКИЕ МЕТОДЫ МИНИМИЗАЦИИ 159 'I 2*г 3 * I [ьН^гг^^ Рис. 40. ПЛМ, реализующая одну ДНФ. ная таким образом схема реализует данную функцию /. Действительно, V ^X = #1^3#5 V #1*4#6 V ^2#3 V^2#3#4- Задача максимального упрощения оператора \JT* совпадает поэтому с задачей минимизации ДНФ булевой функции, причем в общем случае, когда мы не ограничиваемся, например, рассмотрением монотонных функций. Задача заключается в том, что требуется найти такую ДНФ для заданной булевой функции /, которая содержала бы минимальное число конъюнкций (кратчайшая ДНФ) или минимальное число букв (минимальная ДНФ). Первой формулировке соответствует поиск некоторой троичной матрицы U с минимальным числом строк, второй — с минимальным числом единиц и нулей. При этом должно выполняться условие \/ ГЛ = \/ £/л. Знакомство с методами минимизации ДНФ принято начинать с классических методов Квайна — МакКласки и Б лека — Порецкого, описываемых практически в любом учебнике по теории автоматов. Мы ограничимся их кратким изложением в векторной интерпретации. Общим для данных двух методов является то, что оба они основаны на предварительном получении множества всех простых импликант заданной булевой функции и последующем выделении из него некоторого подмножества, которое и будет представлять решение. Различаются эти методы способом нахождения простых импликант. Простой импликантой булевой функции/^, х2, . . . . . ., хп) называется такая элементарная конъюнкция А, которая имплицирует функцию / (имеется в виду формальная импликация к ==> /: функция / принимает значение 1 на любом наборе значений переменных хг, х2, . . ., хп, на котором к = 1), но не будет ее имплицировать при удалении из к любого символа. Очевидно, что простые импликан- ты функции / соответствуют максимальным интервалам характеристического множества Мг этой функции и что
160 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ при поиске простейших ДНФ типа безызбыточных, когда из ДНФ нельзя (без нарушения представляемой функции) выбросить ни одного члена и ни одной буквы в члене, есть смысл ограничиться рассмотрением именно простых им- пликант. Очевидно также, что задача минимизации ДНФ сводится к задаче нахождения оптимального интервального покрытия характеристического множества рассматриваемой булевой функции. Метод Квайна — МакКласки. Этот метод предполагает, что функция / задана первоначально в совершенной ДНФ, составленной из полных элементарных конъюнкций, каждая из которых содержит символы всех переменных. Такую форму легко получить из таблицы значений функции /, поскольку каждый член совершенной ДНФ соответствует некоторому набору значений аргументов, на котором функция / принимает значение 1. При матричном представлении совершенной ДНФ эти наборы будут непосредственно заданы строками матрицы. Метод основан на применении двух операций, называемых по традиции операциями склеивания и поглощения и выполняемых над некоторыми парами членов преобразуемой ДНФ, пока эта ДНФ не превратится из совершенной ДНФ в так называемую сокращенную ДНФ, представляющую собой дизъюнкцию всех простых импли- кант. Нам будет удобнее определить эти операции над троичными векторами, представляющими интервалы булева пространства аргументов хг, х2, . . ., хп и соответствующие им элементарные конъюнкции. Рассматривая два троичных вектора и и v с равным числом компонент, введем для начала некоторые отношения, в которых они могут находиться. Стандартным образом определим отношение равенства u = v, как покомпонентное. Векторы и и v ортогональны (и ort v), если в некоторой паре одноименных компонент один из этих векторов имеет значение 0, а другой — значение 1 (будем говорить в порядке уточнения, что векторы ортогональны по этой компоненте). Если при этом значения остальных компонент попарно равны, векторы и и v находятся в отношении соседства (unei v). Обобщением отношения соседства служит отношение смежности: векторы и и v смежны (u adj v), если они ортогональны ровно по одной компоненте. Наконец, введем отношение поглощения, оказываю-
14. КЛАССИЧЕСКИЕ МЕТОДЫ МИНИМИЗАЦИИ 161 щееся, не в пример предыдущим, несимметричным. Вектора поглощает вектор v (u abs v), если значения его компонент, отличные от «—», совпадают со значениями одноименных компонент вектора v. Строгости ради заметим, что «если» понимается в этих определениях как «если и только если». Приведем примеры векторов, находящихся в данных отношениях: 1101 0001 = 1101 0001, 0 1 llOlortllO — 1—0 0, 0 1 — 0 1 1 — 0 nei 0 1 —0 1 0 — 0, 0 — 1100 — ladj — 001 11, 1-11 1 0 abs 1 - 1 1 1 0 1 0. Будем теперь рассматривать троичную матрицу U как некоторую произвольную ДНФ булевой функции /. Если в этой матрице существует некоторая пара соседних строк, то их можно «склеить», образовав новую строку путем передачи ее компонентам совпадающих значений и присвоения значения «—» той компоненте, по которой соседние строки ортогональны. Например, продукт склеивания соседних строк 0 1-011-0 и 0 1-010-0 будет представлен строкой 0 1-01 0. Добавление в матрицу U получаемой таким образом новой строки и называется операцией склеивания. Операция поглощения определяется как удаление из матрицы U некоторой строки, поглощаемой какой-либо из других строк этой матрицы. Нетрудно проверить, что данные преобразования матрицы U не изменяют представляемую ею булеву функцию. По Квайну, последовательное преобразование ДНФ начинается с совершенной формы, когда ранги всех ее элементарных конъюнкций (определяемые числом букв, образующих конъюнкцию) равны п — числу всех аргументов. Сначала склеиваются все исходные конъюнкции, находящиеся в отношении соседства. После завершения этой операции производятся всевозможные поглощения, 6 А. Д. Закревский
162 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ Затем склеиваются все соседние конъюнкции (п — 1)-го ранга, после чего опять выполняются операции поглощения. Так повторяется до тех пор, пока на очередном этапе не окажется, что в преобразуемой ДНФ не существует уже таких конъюнкций, которые находятся в отношении соседства или поглощения. Полученная таким образом ДНФ будет сокращенной. Пусть, например, совершенная ДНФ булевой функции / задана матрицей "0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 1 0' 1 1 1 0 0 1 1 0 1 1 0 1 2 3 4 5 6 7 8 9 10 11 12 В этой матрице соседними оказываются строки 1 и 6, 1 и 9, 2 и 3 и т. д. Склеивая их, мы получим следующее множество строк, содержащих по одному значению «—» и представляющих соответственно элементарные конъюнкции (п — 1)-го ранга (в рассматриваемом случае п = 6): 1,6 1,9 2,3 2,4 2,5 2,7 2,10 3,8 3,9 4,12 5,6 6,9 6,12 6,7 8,10 ~"— 0 — 1 1 1 1 0 0 1 1 — 1 1 — 1 ] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 — о: \ 0; - 0 1 — 0 1 0 1 0 \ 0 ( — 0 1 0 - 1 \ 0 1 1 1 1 1 1 1 - 1 1 1 1 1 — — 1 1 ) 1 L 1 1 1 - 1 1 1 0 0 " 0 1 1 — 1 1 1 — — 0 0 0 — 1 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 (слева показаны номера склеиваемых строк).
14. КЛАССИЧЕСКИЕ МЕТОДЫ МИНИМИЗАЦИЙ 163 Оказывается, что все строки исходной матрицы, кроме строки 11, поглощаются некоторыми из новых строк и, следовательно, удаляются. После этого аналогичные операции склеивания осуществляются уже над строками (п — 1)-го ранга, что приводит к получению строк: 13,24 14,23 15,24 16,27 16,25 17,21 17,22 17,26 18,23 19,20 "— — — — 1 1 1 1 т— 1 1 1 1 1 1 1 1 1 1 — — 0 0 0 0 0 0 1 1 1 1 — 1 — 1 1 1 1 0 " 1 0 1 — - 1 1 — 1 1 иг 1 — \ - 1 _ 28 29 30 31 32 33 34 35 36 37 Заметим, что каждая из этих строк получена при этом в двух экземплярах (вообще, при использовании описываемого метода каждая из строк (п — &)-го ранга появляется в к экземплярах). В данном случае оказывается, что новые строки (п — 2)-го ранга поглощают все строки (п — — 1)-го ранга. Поскольку среди них нет соседних строк, процесс получения новых строк прекращается. Устраняя поглощаемые строки и оставляя по одному экземпляру среди остающихся, получим сокращенную ДНФ в ее матричной форме 1 — — — 1 1 0 1 1 1 1 1 1 0 — 0 0 — 0 1 1 1 — 1 0 1 1 — 1 1 1 " — 0 1 — — А Б в г > д Е строкам которой для удобства присвоены индивидуальные имена. Итак, из исходного множества членов совершенной ДНФ булевой функции / мы получили множество членов сокращенной ДНФ. Обозначив первое из этих множеств через В, а второе через А, построим так называемую таблицу Квайна— булеву матрицу К, задающую бинарное отношение формальной импликации между элементами 6*
164 гл. 4. Минимизация днф булевой функции этих двух множеств: &J = 1, если bj=$> ah и к{' = 0 в противном случае 1 "0 0 1 0 0 о 2 0 1 0 1 1 1 3 0 1 0 1 0 0 4 0 0 0 0 1 0 б 0 1 1 0 1 1 6 0 0 1 0 0 1 7 0 0 0 0 0 1 8 0 0 0 1 0 0 9 0 1 1 0 0 0 10 0 0 0 1 0 0 11 1 0 0 0 0 0 12 0" 0 0 0 1 0 А Б в П/ д Е Столбцы матрицы К соответствуют членам совершенной ДНФ и, следовательно, тем наборам значений аргументов, на которых функция / принимает значение 1, строки — членам сокращенной ДНФ, т. е. подмножествам таких наборов, образующих максимальные интервалы характеристического множества М1 и соответствующих простым импликантам. Формируя из этих импликант функции / некоторую ее ДНФ, нам надо побеспокоиться о том, чтобы для каждого из элементов множества М1 в ДНФ нашелся член, принимающий на нем значение 1. Это означает, что из матрицы К надо выбрать совокупность строк, образующих покрытие этой матрицы. Стремясь получить кратчайшую ДНФ, мы должны найти кратчайшее строчное покрытие булевой матрицы К. Эта уже знакомая нам задача решается для данной матрицы легко, поскольку ряд столбцов в матрице содержит лишь по одной единице, и, следовательно, выбор соответствующих им строк, содержащих эти единицы, обязателен. Такими оказываются все строки, кроме Б. Они образуют покрытие, являющееся единственным кратчайшим строчным покрытием матрицы К. Так получается ДНФ, составленная из отобранных описанным образом простых импликант: 0 1 1 1 1 1 — 0 0 — 0 1 1 — 1 0 1 — 1 1 1 ] 0 1 — — I Алгебраической интерпретацией этой ДНФ служит формула ХгХгХз^ХьХь V #2#4#5^6 V #2^3#4#6 \/ XiX2X3Xr0 \/ ХхХъХьХь-
14. КЛАССИЧЕСКИЕ МЕТОДЫ МИНИМИЗАЦИИ 165 Описанный метод прост и алгоритмичен, однако оказывается довольно трудоемким, даже если он реализуется на ЭВМ. При конструировании множества всех простых импликант много времени тратится на поиск соседних элементарных конъюнкций в преобразуемой ДНФ. Чтобы сократить производимый при этом перебор анализируемых пар конъюнкций, МакКласки предложил группировать представляющие их строки не только по рангу, но также по числу единиц, с тем чтобы ограничиться затем рассмотрением таких пар строк, одна из которых содержит на одну единицу больше, чем другая. Нетрудно убедиться в том, что только такие строки могут быть соседними. Метод Блека — Порецкого. Если функция / задана некоторой ДНФ произвольного вида, то для применения метода Квайна — МакКласки ее надо предварительно преобразовать к совершенной форме, что может быть не всегда удобно. Более целесообразным в этом случае может оказаться использование метода Блека — Порецкого. Метод основан на применении операции обобщенного склеивания, которой подвергаются любые два смежных вектора, представляющие соответствующие элементарные конъюнкции, входящие в преобразуемую ДНФ. Продуктом обобщенного склеивания смежных векторов и и v служит троичный вектор, принимающий значение «—» в той компоненте, по которой и и v ортогональны, а также там, где оба вектора имеют значение «—», и принимающий значение 0 или 1 в остальных компонентах, причем это значение совпадает там со значением одного из векторов и и v. Например, продукт обобщенного склеивания смежных векторов 1-011- я 0 0-1 ^ределяется как вектор 1-0-11. Метод Блека — Порецкого заключается в чередовании операций обобщенного склеивания (с включением получа-
166 гл. /*. минимизация днф вулёвой функции емых при этом продуктов в преобразуемую ДНФ) и операций поглощения (при которых поглощаемые члены исключаются из ДНФ). Процесс заканчивается, когда после очередной операции оказывается, что в ДНФ отсутствуют члены, находящиеся в отношении поглощения, и для каждой пары смежных членов в ДНФ будет присутствовать член, поглощающий продукт их обобщенного склеивания. В этом случае полученная ДНФ будет сокращенной. Продемонстрируем метод на следующем примере, когда булева функция / задана матрицей г-1 __ 0 1 - I'll — 1 0 1 1 0 2 1 __1 _ о — 3' L— 1 - о 1 о J4 Перебор пар элементов некоторого расширяющегося множества разумно производить в следующем порядке: 2—1, 3—1, 3—2, 4—1, 4—2, 4—3 и т. д. Реализуя этот перебор в данном случае, мы не находим поглощающих строк, но отыскиваем пары смежных строк 2—1, 3—1, 4—2, 4—3 и дополняем ДНФ продуктами соответствующих обобщенных склеиваний: г1 1 0 1 1 —-1 * 1 _ _ 1 о 1 I « _ 1 о — 1 О?' |_1 1 1 0 — 0 J 8 Продолжая перебор пар (5—1, 5—2 и т. д.), мы находим пары смежных строк 5—4, 6—5, 7—1, 8—7 и обнаруживаем, что строка 7 поглощает строку 2. Исключим поглощаемую строку и получим продукты обобщенного склеивания г1 1 0 - 1 0 и 110 1 — 1 110 1 1 — Г L1 1 — 0 1 0 J Однако оказывается, что каждая из этих строк поглощается некоторой из предыдущих, в связи с чем их не следует включать в конструируемое множество. В результа-
14. КЛАССИЧЕСКИЕ МЕТОДЫ МИНИМИЗАЦИИ 167 те получаем матрицу Г1 — 0 1 — 1 1 1 _ 1 _ о - — 1 — 0 1 О 1 1 О 1 1 — 1 - - 1 О 1 - 1 О - 1 О [1 1 1 О — О J удовлетворяющую сформулированному ранее требованию: строки не поглощают друг друга и при обобщенном склеивании смежных строк образуются строки, поглощаемые уже имеющимися в матрице. Следовательно, полученная матрица представляет сокращенную ДНФ рассматриваемой булевой функции. Далее делается то же, что и в методе Квайна — Мак- Класки: строится матрица К и находится ее кратчайшее покрытие. При этом придется все-таки предварительно построить совершенную ДНФ или эквивалентное ей характеристическое множество рассматриваемой булевой функции. Необходимость получения в явном виде множества А всех простых импликант булевой функции / и множества В всех членов совершенной ДНФ этой функции приводит к существенным ограничениям, характерным для рассмотренных методов. Мощности данных множеств, как правило, быстро растут с ростом числа аргументов функции /, и таблица Квайна может стать слишком громоздкой, чтобы можно было надеяться на практическое ее построение и нахождение ее кратчайшего покрытия. В связи с этим представляют несомненный интерес методы нахождения не оптимального решения — кратчайшей или минимальной ДНФ,— а некоторого хорошего приближения к нему. Будем называть условно такие методы приближенными. Можно предложить также несколько «точных» методов, гарантирующих получение оптимальных решений в некоторых частных ситуациях, представляющих практический интерес, когда рассматриваемая булева функция ограничена по некоторому параметру. Такие методы будут рассмотрены ниже.
168 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ 15. Сжатие булевой матрицы Задача минимизации ДНФ является наиболее исследованной задачей теории автоматов, и число публикаций, в которых эта задача так или иначе рассматривается, к настоящему времени перевалило, по-видимому, за тысячу. Между тем нередко выражается мнение, звучащее в своей категорической форме так: для того чтобы получить минимальную или кратчайшую ДНФ некоторой булевой функции, совершенно необходимо найти сначала все ее простые импликанты, затем построить из них все безубыточные ДНФ, а уж потом выбрать среди них оптимальную. К счастью, это мнение ошибочно. Ниже описывается несколько методов, позволяющих находить точное решение данной задачи, в то же время избегая получения всех простых импликант и, тем более, построения всех безызбыточных ДНФ. Правда, практически могут встретиться ситуации, когда и эти методы окажутся слишком трудоемкими. В таких случаях могут быть рекомендованы приближенные методы, представляющие собой модификации точных методов и также излагаемые ниже. Определяющие элементы и обязательные интервалы. Современная технология производства транзисторных матричных схем такова, что основным критерием оптимальности схемы является ее площадь, определяемая произведением числа строк матрицы на число ее столбцов. Число транзисторов в схеме представляет собой менее значительный критерий, который мы примем в качестве дополнительного. В соответствии с этим сосредоточим в дальнейшем внимание на поиске кратчайших ДНФ, однако не любых, а безызбыточных, чтобы учесть по возможности требования, выражаемые дополнительным критерием. Другими словами, будем искать минимальное покрытие характеристического множества М1 заданной булевой функции / максимальными интервалами. Пусть множество М1 представлено в виде булевой матрицы В. В этом случае задачу минимизации ДНФ заданной булевой функции / можно интерпретировать как задачу максимального сжатия матрицы В, при котором некоторые совокупности строк этой матрицы, образующие
15. СЖАТИЕ БУЛЕВОЙ МАТРИЦЫ 169 интервалы булева пространства М, заменяются соответствующими троичными векторами. Метод Квайна — МакКласки, отправляющийся, по существу, от булевой матрицы 5, осуществляет параллельный рост интервалов в множестве М1 путем склеивания интервалов более высоких рангов, что приводит в конечном счете к получению всех максимальных интервалов множества М1. Между тем не все они понадобятся для построения кратчайших ДНФ, тем более если нам достаточно найти лишь одну из кратчайших ДНФ. Число рассматриваемых максимальных интервалов можно сократить на основе следующих рассуждений. Если некоторый элемент а (булев вектор) множества М1 принадлежит лишь одному из максимальных интервалов этого множества, а именно некоторому интервалу и (троичный вектор), то, очевидно, любое кратчайшее интервальное покрытие множества М1 будет содержать интервал и. В этом случае будем называть элемент а определяющим, а однозначно определяемый им интервал и — обязательным. Для того чтобы установить, является ли некоторый элемент а определяющим, достаточно найти все соседние с ним элементы в множестве Л/1, а затем построить содержащий их минимальный интервал пространства М, называемый минимальным поглощающим интервалом. Если все элементы этого интервала принадлежат множеству М1, то он является интервалом множества М1, максимальным и притом обязательным, а элемент а является определяющим. В противном случае ни интервал, ни элемент данными свойствами не обладает. Минимальный поглощающий интервал для заданной совокупности элементов булева пространства получается весьма просто. Строится троичный вектор, компоненты которого принимают значения одноименных компонент булевых векторов, представляющих элементы, если эти значения совпадают, и принимают значение «—», если среди значений одноименных компонент булевых векторов встречается как 0, так и 1. Получить ответ на вопрос, содержится ли интервал и в множестве А/1, заданном булевой матрицей В, также несложно. Можно просто перебрать элементы этого интервала и попытаться найти их в множестве Л/1. Если же
170 гл. 4. минимизация днф нулевой функции интервал содержит много элементов, то лучше свести данную задачу к уже рассмотренной нами задаче о вырожденности троичной матрицы. Делается это так: из матрицы В выделяется минор, образованный пересечением строк, неортогональных вектору и, со столбцами, в которых вектор и имеет значение «—», а затем проверяется, не является ли этот минор вырожденным. Если минор вырожден, то интервал и содержится в А/1, в противном случае не содержится. Пусть, например, 1 1 0 1 1 0 0 0 0 2 0 0 1 0 0 0 0 0 3 0 1 0 1 0 0 1 0 4 1 1 0 1 0 1 1 1 5 1 0 0 1 1 1 1 1 0 г 1 0 1 1 1 1 0 t 2 3 4 б в 7 8 в = 10 10 11 Проверим первый из перечисленных в матрице В элементов множества М1 — строку 1. Сравнивая ее с другими строками, выявляем соседей 101111 4 0001 1 1 6 и строим определяемый ими минимальный поглощающий интервал - 0 - 1 1 1. Этот интервал задает в матрице В минор 1 Г1 1 0 Lo 3 о- 1 0 1_ 1 4 в > 7 вырожденность которого легко устанавливается. Отсюда следует, что элемент 10 0111 является определяющим, а определяемый им интервал — 0 — 111 является обязательным.
15. СЖАТИЕ БУЛЕВОЙ МАТРИЦЫ 171 Вычисления можно значительно упростить, если элемент а имеет мало соседей. В частности, если у него нет соседей, то он сам образует обязательный интервал. Если он обладает лишь одним соседом, то обязательный интервал образуется склеиванием элемента а с этим соседом. Если элемент а имеет двух соседей, один из которых ортогонален ему по компоненте г, а другой — по компоненте /, то вычисления сводятся к проверке наличия в множестве М1 элемента, ортогонального элементу а по двум компонентам in]. В случае трех соседей достаточно найти в множестве М1 элемент, ортогональный элементу а по трем соответствующим компонентам, и убедиться в том, что вместе с этим элементом множество М1 содержит и его соседей по данным компонентам. Рассмотрим попутно следующую задачу. Допустим, что мы получили каким-то образом интервал и множества М1 и желаем узнать, является ли он обязательным. Из предыдущих рассуждений следует, что он обязателен, если какой-либо из его элементов является определяющим. Определяющий элемент можно назвать также внутренним элементом определяемого им интервала, имея в виду, что все его соседи, принадлежащие множеству М1, также принадлежат интервалу. Остальные элементы интервала, не обладающие данным свойством, присущим внутреннему элементу, естественно назвать граничными. Таким образом, интервал и множества М1 обязателен, если он имеет внутренние элементы. Для того чтобы узнать, есть ли у него внутренние элементы, нет необходимости испытывать по очереди все его элементы. Можно решить эту задачу иначе. Выделим из матрицы В минор, образуемый пересечением строк, смежных с интервалом и (т. е. не принадлежащих этому интервалу, но соседних с некоторыми его элементами), и столбцов, в которых вектор и имеет значение «—». Затем определим, является ли этот минор вырожденным. Если минор вырожден, то это означает, что для каждого элемента интервала и в множестве М1 найдется соседний с ним элемент, не принадлежащий интервалу и, откуда следует, что интервал и не обязателен. Если же минор не вырожден, т. е. если существует некоторый булев вектор, ортогональный каждой строке минора, то задаваемый этим вектором элемент интервала и не будет
172 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ иметь в множестве М1 соседей, не принадлежащих интервалу и. В этом случае интервал и обязателен. Допустим, что, рассматривая некоторую булеву матрицу В, задающую множество Af1, мы нашли некоторый интервал и этого множества — 0 — 11 — ш выделили в матрице В следующие строки, смежные с и: 110 111 10 10 10 0 0 0 100 0 10 110 Выбирая столбцы, в которых вектор и имеет значение «—», мы строим из них минор г1 0 1т 110 0 0 0 Lo о oj и легко устанавливаем его невырожденность, означающую, что интервал и обязателен. Например, ортогональным этому минору оказывается вектор 111. Задаваемый этим вектором элемент 10 1111 интервала и не имеет, следовательно, соседей в множестве М1, которые не принадлежали бы данному интервалу, т. е. этот элемент является внутренним элементом интервала п. Допустимые интервалы как элементы кратчайшего покрытия. Найдя в множестве М1 хотя бы один обязательный интервал, мы можем открыть дорогу цепному процессу конструирования элементов покрытия этого множества, который при благоприятных обстоятельствах может завершиться получением точного решения интересующей нас задачи. Рассмотрим текущую ситуацию, когда часть элементов множества М1 оказывается уже покрытой некоторыми интервалами, выбор которых был строго обоснован, а другая часть, образующая текущее, т. е изменяемое в процессе решения множество Af*, состоит из тех элементов множества Л/1, которые не принадлежат ни одному из выбранных интервалов. Именно об их покрытии и следует далее беспокоиться.
15. СЖАТИЕ БУЛЕВОЙ МАТРИЦЫ 173 Пусть некторый элемент а текущего множества М* принадлежит сразу нескольким максимальным интервалам множества М1. Рассмотрим пересечения этих интервалов с множеством М*, называя их далее проекциями интервалов на множество М*. Если среди этих проекций найдется такая, которая содержит остальные в качестве своих подмножеств, то можно считать обоснованным выбор любого соответствующего ей максимального интервала (их может оказаться несколько) как очередного элемента конструируемого кратчайшего покрытия. Очевидно, что этот интервал обеспечивает покрытие всех элементов из Af*, которые только можно покрыть интервалами множества М1, покрывающими одновременно элемент а. Назовем такой интервал допустимым, обратив внимание читателя на относительный характер этого определения: интервал может оказаться допустимым лишь при данной последовательности предшествующих выборов элементов покрытия. Упомянутый элемент а будет называться в этом случае, как и прежде, определяющий. Можно предложить несколько способов нахождения определяющих элементов в промежуточных ситуациях, когда часть множества М1 уже покрыта. Рассмотрим один из них, основанный на последовательном переборе элементов множества М1 и их анализе. Будем говорить, что некоторые два элемента множества М1 совместимы, если поглощающий их минимальный интервал содержится в множестве М1. Элемент а оказывается определяющим, если минимальный поглощающий интервал для всех элементов множества Af*, совместимых с элементом а, содержится в множестве М1. Описываемый метод реализует проверку этого отношения. Перебор в множестве М*, производимый при поиске совместимых с а элементов, ускоряется тем, что он ограничивается рассмотрением элементов, принадлежащих минимальному поглощающему интервалу для всех соседей элемента а — очевидно, что совместимые с а элементы могут находиться только в этом интервале. Оба минимальных поглощающих интервала как для соседей элемента а, гак и для совместимых с ним элементов строятся легко. Наконец, изложенным выше способом устанавливается, содержится ли последний из этих интервалов в множестве М1. При получении положительного ответа на этот воп-
ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ рос доказывается тем самым, что элемент а является определяющим. Допустимым в этом случае оказывается любой максимальный интервал множества AT1, содержащий найденный минимальный поглощающий интервал для совместимых с а элементов. В частности, эти два интервала могут совпасть. Обратим внимание читателя на существенное отличие промежуточных ситуаций от начальной, заключающееся в том, что в начальной ситуации от определяющего элемента а требуется, чтобы в множестве М1 содержался минимальный поглощающий интервал для всех совместимых с а элементов множества Л/1, в то время как в текущей ситуации это требование ослаблено: там рассматривается минимальный поглощающий интервал только для тех совместимых с а элементов, которые принадлежат текущему множеству ЛР. Это отличие и определяет цепной характер процесса конструирования кратчайшего интервального покрытия множества М1. Включение в покрытие очередного допустимого интервала сопровождается соответствующим со- "0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 i \ 1 i 1 1 1 1 \ i 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 i 0 0 0 0 i i 1 1 0 0 0 0 г 1 0 0 0 1 0 0 0 1 1 0 0 0 0 j 0 0 0 0 1 1 1 -'1 •"'1 2 1 4 • 5 в 7 8 9 10 11 12 13 14 16 1в 17 18 19 20 21
15. СЖАТИЕ БУЛЕВОЙ МАТРИЦЫ 175 кращением множества М*, а это в свою очередь может привести к тому, что некоторые из остающихся в множестве М* элементов могут стать определяющими, что позволит включить в решение новые допустимые интервалы, далее сократить текущее множество М* и т. д. Пример. Продемонстрируем описанный процесс на конкретном примере, рассмотрев характеристическое множество М1, заданное булевой матрицей В (с. 174). Будем анализировать подряд элементы этого множества, начав с элемента 0 0 0 10 1 1. Этот элемент имеет трех соседей 0 0 0 0 0 1 2, 0 10 10 1 10, 10 0 10 1 20, минимальный поглощающий интервал для которых 0-01 не содержится в множестве М11(например, там отсутствует элемент 110 10 1, принадлежащий данному интервалу). Следовательно, элемент 1 не является определяющим. Такой же результат мы получаем и для следующих элементов, пока не остановимся на элементе 0 110 10 5, который оказывается определяющим. Действительно, соседними с ним являются элементы 0 11110 4, 0 10 0 10 9, 1110 10 17, и минимальный поглощающий интервал для них - 1 1 0 полностью содержится в множестве М1. В этом можно
176 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ убедиться, найдя в множестве М1 элемент 110 110 14, ортогональный элементу 5 по компонентам 1, 3 и 4, вместе с его соседями по этим компонетам 0 10 110 8, 111110 16, 110 0 10 15. Исключив из текущего множества М* (равного вначале множеству М1) перечисленные восемь элементов интервала—1 10, принимаемого в качестве первого элемента кратчайшего покрытия множества Л/1, продолжим перебор в множестве М*. Следующим определяющим оказывается элемент 110 10 0 13. У этого элемента три соседа 110 0 0 0 12, 110 110 14, 10 0 10 0 19, задающие минимальный поглощающий интервал 1-0 0, содержащий четыре элемента из множества М*: 110 0 0 0 12, 110 10 0 13, 10 0 0 0 0 18, 10 0 10 0 19. Каждый из них совместим с элементом 13 и минимальный поглощающий интервал для них 1 __ 0 - 0 0 содержится в множестве М1, что и завершает доказательство того, что элемент 13 является определяющим. Интервал 1 — 0 — 0 0 оказывается максимальным и принимается в качестве второго элемента решения, а текущее множество М* сокращается еще на четыре эле-
15, СЖАТИЕ БУЛЕВОЙ МАТРИЦЫ 177 мента, приводясь к гО 0 0 0 0 0 0 1 _1 следующему 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1-1 1 0 1 0 1 1 1 1. виду 1 2 3 6 7 # 10 11 20 21 Следующий в порядке перебора элемент 20 также оказывается определяющим, и в решение включается соответствующий ему допустимый интервал -00-01, образуемый элементами 1,2, 20 и 21, исключаемыми в связи с этим из текущего множества М*. Затем перебор идет на второй круг, и последовательно находятся определяющие элементы 3,7, 10, соответствующие которым допустимые интервалы 0 11 10 — 0 10 0 0- 0-0-01 также включаются в решение. Текущее множество М* сокращается при этом до пустого множества, а совокупность найденных последовательно допустимых интервалов образует точное решение рассматриваемой задачи, представляемое троичной матрицей — 1 — 0 0 0 1 — 0 1 1 — — 0 0 1 0 0 — 1 — 0 — 0 1 0 0 0 — 0 0 0 1 — — 1 Ветвящиеся процессы конструирования интервальных покрытий. В рассмотренном примере процесс последовательного нахождения в характеристическом множестве М1 определяющих элементов и определяемых ими допустимых интервалов благополучно завершился получением кратчай-
178 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИЙ шего интервального покрытия этого множества. Однако в других примерах могут встретиться критические ситуации, когда в текущем множестве М* не удастся найти ни одного определяющего элемента. В таком случае для получения точного решения потребуется выполнить некоторый перебор различных вариантов построения покрытия, соответствующих выбору различных максимальных интервалов в качестве очередного элемента покрытия. Разумно принять меры к посильному сокращению этого перебора, опираясь на введенные ранее понятия, относящиеся к ветвящимся многошаговым решающим процессам. В критической ситуации вместо допустимого интервала выбирается некоторая достаточная совокупность интервалов^ т. е. такая совокупность максимальных интервалов, относительно которой известно, что в ней содержится по крайней мере один из допустимых в текущей ситуации интервалов, хотя и неизвестно, какой именно. При этом понятие допустимого интервала употребляется в широком смысле. Назовем допустимой любую совокупность интервалов множества М1, если существует некоторое кратчайшее интервальное покрытие множества М1, содержащее ее. Если сформированная к текущему моменту времени часть конструируемого покрытия является допустимой, то некоторый максимальный интервал будет допустим в данной ситуации, если, приняв его в качестве очередного элемента покрытия, мы получим снова допустимую совокупность. Рассмотрение различных вариантов выбора очередного элемента покрытия из достаточной совокупности образует точку ветвления процесса поиска кратчайшего интервального покрытия. Число исходящих из этой точки ветвей равно числу элементов в данной достаточной совокупности. Сокращение перебора сводится в связи с этим к нахождению в текущей ситуации некоторой минимальной достаточной совокупности. Например, достаточной является совокупность всех максимальных интервалов, которым принадлежит некоторый элемент а множества М1. Достаточной в текущей ситуации оказывается совокупность максимальных интервалов, которым принадлежит некоторый элемент а множества М* и которые обладают различными, не содержа-
16. МЕТОДЫ СКАНИРОВАНИЯ БУЛЕВА ПРОСТРАНСТВА 179 щимися друг в друге проекциями на множество М*. Число элементов в этих допустимых совокупностях, как правило, меньше, если у задающего их элемента а мало соседей. Отсюда следует определенная рекомендация, направленная на сокращение перебора при поиске оптимального решения данной задачи: предварительно взвесить все элементы множества М1, определяя при этом вес элемента как число его соседей, а последующие переборы в множестве М1 организовывать в порядке неубывания этих весов. Описанный метод порождает многочисленные приближенные методы, в которых не рассматриваются обязательно все варианты, связанные с выбором различных элементов достаточных совокупностей. Например, в каждой точке ветвления может выбираться лишь один путь, «лучший» по какому-то статистически оправдываемому критерию. Может быть упрощен и сам способ образования точек ветвления, в результате чего задача нахождения минимальной достаточной совокупности может решаться также приближенно или даже не ставиться. 16. Методы сканирования булева пространства Описанный выше способ анализа характеристического множества М1 минимизируемой булевой функции / обладает одним существенным недостатком, связанным ^необходимостью рассмотрения большого числа различных сочетаний элементов jb множестве М1. Например, отыскивая в множестве М1 соседей, мы должны проверить по данному способу все пары элементов этого множества. А число таких пар для функции от п переменных можно приближенно оценить как 22rl_1 если / является «случайной» булевой функцией, у которой значения 0 и 1 распределены равномерно по ^-мерному булеву пространству М. f-^ Этот перебор можно значительно сократить, задавая рассматриваемую функцию / непосредственно на булевом пространстве, элементы которого упорядочены и каким-то образом пронумерованы. Если на некотором элементе пространства М функция f принимает значение 1, т. е. если этот элемент принадлежит множеству М1, то, отыскивая его соседей в множестве Af1, не обязательно перебирать все элементы этого множества (их число равно в среднем 2n_1) и сравнивать их с данным, а достаточно
180 ГЛ. h. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ просмотреть лишь соседние элементы булева пространства М (а их число равно п) и выбрать из них те, на которых функция / также принимает значение 1. Таким образом, сплошной перебор элементов в характеристическом множестве М1 заменяется упорядоченным выбором и анализом элементов в булевом пространстве М. Назовем этот последний способ сканированием булева пространства. Он позволяет сократить число перебираемых элементов примерно в 50 раз при п = 10 и в 1000 раз при п =15. Но для этого надо уметь быстро находить любые заданные элементы булева пространства, а также соседние с ними элементы. Рассмотрим, как это делается в следующих двух методах, опирающихся на те же понятия и принципы, что и изложенные выше методы, но отличающиеся от них механизмом перебора элементов в пространстве М. Между собой эти методы различаются ориентацией на технику вычислений: один из них ориентирован на машинную реализацию, другой — на ручную. Метод минимального соседства. Так мы назовем метод минимизации ДНФ булевой функции, основанный на выборе в множестве М1 элементов в порядке возрастания числа их соседей. ' Минимизируемая булева функция / представляется при этом непосредственно в табличной форме, где в левом столбце перечислены все элементы булева пространства М — наборы значений аргументов, упорядоченные в соответствии с позиционным двоичным ^одом натуральных чисел,— а справа значения на наборах функцией /. Поскольку последовательность наборов строго упорядочена, т. е. каждый набор однозначно определен местом, занимаемым им в таблице, то их можно и не показывать, что и делается при представлении минимизируемой функции в ЭВМ, когда набор отождествляется с адресом — номером ячейки памяти, куда помещается соответствующее значение функции / (отсчет начинается с начального набора 0 0 ... 0). Таким образом, чтобы узнать, какое значение функция / принимает, например, на наборе 110 10 0, достаточно извлечь содержимое ячейки с этим номером 110 10 0, заданным в двоичной системе счисления (точнее говоря, с номером k -\- 110100, где к — номер ячейки, с которой начинается размещение в памяти таблицы значений функции /).
16. МЕТОДЫ СКАНИРОВАНИЯ БУЛЕВА ПРОСТРАНСТВА 181 Несложно выясняются значения функции / и на соседних элементах булева пространства. Например, если нас интересует значение, принимаемое функцией / на наборе, соседнем некоторому набору а по переменной х2, то, как нетрудно сообразить, чтобы получить адрес ячейки, где находится искомое значение, надо изменить значение второй компоненты набора а. Аналогично находится набор, ортогональный заданному сразу по нескольким компонентам. Чем меньше соседей в множестве М1 имеет некоторый элемент этого множества, тем меньшему, как правило, числу различных максимальных интервалов он принадлежит. Учитывая это обстоятельство, описываемый метод начинает построение интервального покрытия множества М1 с поиска интервалов для покрытия элементов с минимальным числом соседей — в этом случае конструирование покрытия будет более целенаправленным. Прежде всего строится таблица соседей, в которой для каждого элемента характеристического множества М1 показывается, по каким переменным этот элемент имеет соседей в множестве М1, а также показывается общее число соседей. Эту таблицу удобно совместить с таблицей значений функции/, заполняя прочерком соответствующие позиции для элементов множества М°. Например, для булевой функции /, заданной матрицей Го 0 1 О Г[ 110 0 0 11111 0 0 111 10 110 0 110 0 1110 1 0 0 0 0 0 0 1111' 11110 0 110 1 10 111 0 10 11 1110 0 10 0 0 0 |_1 0 1 0 lj будет получена табл. 5 описанного типа.
182 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ Таблица 5 1 Значения аргументов 12 3 4 5 0 0 0 0 0 0 0 0 0 1 0 0 0 ГО oo oi4 0 0 10 0 0 0 1 o:i 0 0 110 0 0 111 0 10 0 0 0 1 0 0-1 0 1 0 1*0 0 1 0 It 1 0 1 1 0 0 0 1 1 0 1 Oil 10 0 1 1 1 1 10 0 0 0 10 0 0 1 10 0 1.0 1 0 0 1*1 1 0 1 0 0 10 10 1 1 0 1 1 0 10 1 11 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 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 1 Значение функции / 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 Наличие соседей 12 3 4 5 10 0 0 0 — — — — 110 10 — 110 10 — — — 0 0 10 0 10 0 0 1 110 11 — 11110 110 0 0 — — — — 110 10 0 10 0 1 110 11 0 110 0 — — — 10 111 i 110 11 0 10 11 110 11 | Число соседей 1 — — — — 3 — 3 — — — 1 2 4 — 4 2 — — — — 3 2 4 2 — — — 4 4 3 4 1 Заметим, что порядок перечисления аргументов в показанных в таблице наборах в принципе безразличен, он должен лишь всюду быть одним и тем же. В данном случае мы принимаем, что аргументы представлены в наборах слева направо, в порядке их номеров: левая компонента поставлена в соответствие аргументу хъ следующая направо — аргументу х2 и т. д. Элементов, не имеющих соседей, в множестве М1 не оказывается, поэтому мы начинаем с рассмотрения элементов, имеющих по одному соседу. Таких элементов
16, МЕТОДЫ СКАНИРОВАНИЯ БУЛЕВА ПРОСТРАНСТВА 183 два: 00000 и 0 10 11. Первый из них имеет соседа по переменной хи откуда следует обязательность интервала — 0 0 0 0, принимаемого в качестве первого элемента решения. Аналогично находится обязательный интервал, определяемый вторым элементом: 0 1 — 11. Все четыре элемента, принадлежащие найденным интервалам, исключаются из дальнейшего рассмотрения. Выбираем далее среди остальных элементов множества М1 элементы^ двумя соседями. Первым из них оказывается элемент 0 110 0, имеющий соседей по переменным хх и хь. Он окажется определяющим, если множеству М1 будет принадлежать также элемент, ортогональный ему по этим переменным (и только по ним). Убеждаемся в выполнении этого условия, выясняя!значение функции / на наборе 1110 1, и включаем в решение обязательный интервал —110—, определяемый элементом 0 110 0. Аналогичному рассмотрению подвергается имеющий двух соседей элемент 1 0 110, определяющий, как оказывается, обязательный интервал 1 — 11 — . Все элементы множества М1, принадлежащие полученным интервалам, также исключаются из дальнейшего рассмотрения. Анализируя элемент 110 0 0, также обладающий двумя соседями, в данном случае по переменным х2 и х3, мы находим, что он не определяет однозначно некоторый обязательный интервал, так как на элементе 1 0 1 0 0, ортогональном рассматриваемому элементу по переменным х2 и х31 функция / принимает значение 0. Однако в текущей ситуации любой содержащий его максимальный интервал будет допустим, поскольку в минимальном интервале, поглощающем этот элемент с его соседями, все элементы множества М1, кроме самого элемента 110 0 0, оказываются уже покрытыми выбранными ранее интервалами. Примем поэтому в качестве очередного элемента решения допустимый интервал 1 — 0 0 0. Теперь доходит очередь до элемента 0 0 10 1, обладающего тремя соседями по переменным хъх2, и д:4. Мы находим элемент 11111, ортогональный ему по этим трем переменным, и убеждаемся, что он также принадлежит множеству М1 и имеет соседей по перечисленным переменным. Последнее выясняется простым сравнением соответствующих булевых векторов, выбираемых из табли-
184 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИЙ цы и представляющих собой перечни соседей у рассматриваемых элементов. Отсюда следует, что в множестве М1 существует максимальный интервал 1 — 1 и что этот интервал обязателен. Найденный интервал покрывает все оставшиеся элементы множества М1, поэтому построение интервального покрытия множества М1 на этом заканчивается. Полученное таким образом решение имеет следующий вид: Г— о о о о ] 0 1 — 1 1 — 1 1 0 — 1 - 1 1 - • 1 — О О О [_— — 1 — 1 J Итак, в рассматриваемом примере процесс редуцирования благополучно завершился получением кратчайшей ДНФ. Конечно, могут встретиться и менее удачные в этом смысле булевы функции, при минимизации которых данным методом будут возникать критические ситуации, когда приходится или выбирать один из возможных путей продолжения процесса конструирования ДНФ, довольствуясь приближенным решением, или организовывать перебор вариантов, достаточный для гарантированного нахождения оптимального решения. Следует, однако, заметить, что при рассмотрении различных булевых функций с числом переменных не свыше 15 критические ситуации будут встречаться относительно редко. А именно на такие функции и ориентирован данный метод — произвольные функции с большим числом переменных практически трудно даже задать, поскольку для этого необходимо перечислить все 2П значения функции. Представление булевой функции на гиперкубе и его двумерной развертке. Булево пространство М можно представить в виде я-мерного куба (гиперкуба), 2п вершин которого задают элементы множества М, а п2п~1 ребер связывают соседние элементы. Графическое изображение гиперкуба получается итерационным методом удвоения размерности, при котором
16. МЕТОДЫ СКАНИРОВАНИЯ БУЛЕВА ПРОСТРАНСТВА 185 0-мерный куб представляется одной точкой, а изображение (п + 1)-мерного куба получается из изображения w-мерного куба смещением его в некотором направлении, условно ортогональном ранее использованным, и включением в новое изображение как исходного, так и смещенного изображения вместе с трассами вершин, проходимыми при смещении. Примеры такого построения до значения п=5 включительно показаны на рис. 41 и 42. Там же показано, какие конкретно элементы булева пространства представлены различными вершинами (при п = 4 и п = 5 показаны лишь некоторые из них). Булева функция может быть задана выделением ее характеристического множества М1 — соответствующие вершины зачерняются. Так, на рис. 42 задана булева функция, рассмотренная в предыдущем примере. При таком представлении интервалы характеристического множества М1 получают некоторую наглядность, поскольку они соответствуют подкубам рассматриваемого гиперкуба и их можно распознавать визуально, глядя на графическое изображение булевой функции. Однако уже при п = 5 такое изображение представляет собой довольно запутанную картину, распутать которую можно, перейдя к двумерной развертке гиперкуба.^ Естественный способ получения двумерной развертки гиперкуба продемонстрирован на рис. 43, где показанный на предыдущем рисунке пятимерный куб последовательно разворачивается путем «разрезания» некоторых ребер и соответствующего «выпрямления» в пространство меньшей размерности. В результате получается двумерная матричная сеть, изображенная на рис. 44. Ее узлам соответствуют элементы булева пространства М, получаемые соединением вектора, отмечающего горизонтальную линию, с вектором, отмечающим вертикальную линию. При этом левый верхний узел представляет набор 0 0 0 0 0, соседний с ним справа — набор 0 0 1 0 0, соседний снизу — набор 0 1 0 0 0 и т. д. Интересно отметить, что последовательность булевых векторов, которыми оказываются пронумерованы линии как горизонтальные, так и вертикальные, представляют код Грея для натуральных чисел, известный также под названием симметричного кода и нашедший применение в технике благодаря тому, что
186 ГЛ. 4, МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ -*-Xi 1 w х5 000 л=2 100 010 ПО /О/ 111 /7=3. 011 Рис. 41. Построение четырехмерного куба. 10000 10100 00000 00001 01001 01011 01111 Рис. 42. Пдтимерный куб с заданной на нем булевой [функцией.
16. МЕТОДЫ СКАНИРОВАНИЙ БУЛЕВА ПРОСТРАНСТВА 187 соседние натуральные числа кодируются им соседними булевыми векторами. Модифицируя полученное изображение, перейдем к более удобной для последующего применения форме, показанной на рис. 45. Здесь узлы заменены клетками двумерной таблицы, а показанные сверху и слева и пронумерованные жирные линии (иногда прерывистые) соответствуют булевым переменным, образующим пространство М, и проведены против тех клеток, которые представляют наборы со значением 1 соответствующих компонент. В тех клетках, где булева функция принимает значение 1 (точнее говоря, она принимает значение 1 на элементах булева пространства, которым соответствуют эти клетки), находятся жирные точки. Назовем эту заполненную точками форму двумерной разверткой булевой функции. Одно из достоинств такой развертки заключается в том, что соседние элементы изображения всегда представляют соседние элементы изображаемого булева пространства, т. е. образуют двухэлементный интервал. Интервалом оказывается всегда и квадрат из четырех расположенных друг около друга элементов изображения. В общем же случае соседние элементы булева пространства представляются элементами развертки, симметричными относительно некоторой ее оси и находящимися в зоне симметрии этой оси. При этом зона симметрии оси k-то ранга образуется элементами, расположенными от оси не далее чем на расстоянии 2к. Как определяются ранги осей, показано на рис. 46, где изображена двумерная разветка шестимерного куба. Там же приведены примеры зон симметрии. На двумерной развертке легко выявляются интервалы булева пространства. При их распознавании полезно помнить, что любой элемент развертки я-мерного куба представляет собой интервал п-то ранга и что два интервала £-го ранга, изображения которых на развертке симметричны относительно некоторой оси и полностью находятся в зоне ее симметрии, образуют интервал (i— 1)-го ранга. Напомним, что интервал г-го ранга совпадает с характеристическим множеством соответствующей элементарной конъюнкции г-го ранга.
188 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ Л Г) • О О *■ жжУуууу Рис. 43. Получение двумерной развертки гиперкуба. 000 100 110 010 011 111 101 001 х3х^х5 0U 11 . /0. > с i 1 > i i С 1 1——1 ? 9 <j > 6 ( ►—6 < > < > < » 1 i 1 i 1 > ■■ -1 > с > t > < • I I • I • I • I I • I • I • • I о I • I о I • • I I • I I • I • х5 Рис. 44. Двумерная матричная сеть — развертка пятимерного куба. Рис. 45. Двумерная развертка булевой функции пяти переменных. ш/шт. ШШт тщ утМШшл шщтшш X4S i_ i I Зона i Г ' / оси I симметрии го ранга - о \ Зона симметрии с [ оси 2-го ранга ft ' г < ] / г ' ] ^ Рис. 46. Зоны симметрии на развертке шестимерного куба.
16. МЕТОДЫ СКАНИРОВАНИЯ БУЛЕВА ПРОСТРАНСТВА 189 В и з у а л ь н^ы hj ^ м е тАо д ^ mji н и мвилз а ц^и^и^, булевых ф^у н к ц и й. Этот метод основан на визуальном распознавании интервалов булева пространства на его двумерной развертке и позволяет быстро находить оптимальные или близкие к ним интервальные покрытия характеристического множества ML булевой функции с небольшим числом переменных, до шести, восьми или даже десяти. Последовательность выполняемых при этом операций может, в частности, повторять ту, которая дана в описании метода минимального соседства: нахождение в множестве М1 элементов с минимальным числом соседей и включение в решение покрывающих их интервалов. Например, повторяя описанные ранее шаги при минимизации булевой функции, изображенной на рис. 45, мы осуществим показанное на рис. 47 разложение множествам1 на интервалы, что приведет нас к уже знакомому решению Г— 0 0 0 0 1 0 1 — 1 1 1—1 1 0 — 1 - 1 1 — I • II — 0 0 0 I 1^— — 1 — 1 || Данный метод характерен, в частности, тем, что выбор очередного, i-ro шага связан с анализом частично покрытого множества М1, т. е. с рассмотрением некоторой «промежуточной» неполностью определенной булевой функции fiy число неопределенных значений у которой растет с каждым шагом. Очевидно, что метод применим и в тех ситуациях, когда неполностью определенной оказывается уже исходная функция /. Такая ситуация иллюстрируется рис. 48, где продемонстрированы шесть шагов процесса визуальной минимизации, на каждом из которых находится некоторый интервал (его элементы отмечены светлыми кружками), вносимый в решение. Элементы изображения, на которых булева функция, исходная или промежуточная, принимает неопределенное значение, зачернены. Например, первым выделяется интервал 0 110 — 0, в составе которого находится определяющий элемент 0 110 10, затем — интервал — 0 — 0 1 1, определяемый элементом 0 0 10 11. Аналогично выбираются
190 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ -оооо •I I I I I I I I I I I I [ I ZLJZJZJIjZjZLJ • э •1 I Т,Х5 01-11 -1 I 0- Т1 xf I - ООЮ •I I I I 14 I | | | | | 1 • ГМ \ \ г\ \ г / - / /- -4-4—1-4-4—\—\—\ • • Mil Mill • • • М I I I I I !•!• •И • • / - / Рис. 47. Разложение на интервалы изображения булевой функции, показанной на рис. 45. 111 П#Ш оМ о] ^Р1 1 1 ММ | | | То| ИИ •штП" • •Г ^1 • I I • I • I • I •" ["•ПИМ* Но !• • • • мГИЯ"о • • • тхб ЩсП11ИМ11П1 о Го! • I [• !• Г [• I• I I• I• 1 • I• ДНитм 1*1*1 [•[•I I•|•I•|• о о iomqmci о о о Рис. 48. Визуальный метод минимизации булевой функции по ее двумерной развертке.
17. УПРОЩЕНИЕ ТРОИЧНЫХ МАТРИЦ 191 и остальные интервалы, образующие в совокупности решение, представляемое следующей матрицей: Го 1 1 о — о]"| — о — о 1 1 01 - - О О 1 0 0 — — — • __ _ о 1 - - L1 — — - - 11J 17. Упрощение троичных матриц Иногда булева функция / задается сразу в дизъюнктивной нормальной форме, представленной некоторой троичной матрицей U. Минимизировать ее в этом случае можно, воспользовавшись одним из описанных выше методов, но для этого потребуется перейти сначала к совершенной ДНФ, задав ее булевой матрицей В, Это не всегда практически просто, а иногда даже невозможно, если характеристическое множество минимизируемой функции / содержит слишком много элементов. В связи с этим несомненный практический интерес представляют методы непосредственного преобразования произвольной троичной матрицы U к некоторой минимальной форме, без предварительного получения булевой матрицы В. Устранение избыточности. Простейшие методы минимизации ДНФ строятся на устранении избыточности в ней и работают в соответствии с определением понятия безызбыточности. При этом полагается, что безызбыточная ДНФ будет служить приемлемым приближением к оптимальной форме. Под оптимальной мы будем по-прежнему считать кратчайшую ДНФ. По определению ДНФ безызбыточна, если из нее нельзя удалить ни одного члена и ни одной буквы в каком-либо члене. Другими словами, троичная матрица U безызбыточна, если из нее нельзя удалить ни одной строки и нет такого элемента в матрице, обладающего значением 0 или 1, чтобы это значение можно было заменить на «—», получив при этом матрицу, эквивалентную исходной. Введем две операции упрощения матрицы С/, основанные на этом определении: выбрасывание строки и выбрасывание буквы. Строка ut матрицы U выбрасывается,
192 гл. 4. минимизация днф булевой функции если представляемая матрицей U булева функция при этом не изменяется. Выбрасыванием буквы мы будем условно называть операцию смены значения некоторого элемента и{ матрицы U с 0 или 1 на «—», если это возможно. Очевидно, что строку u$ матрицы U можно выбросить лишь в том случае, если любой поглощаемый ею булев вектор поглощается в то же время еще какой-то строкой матрицы U. А это условие легко трансформируется в следующее: минор, образуемый пересечением строк, неортогональных строке iij, со столбцами, в которых строка и£ имеет значение «—», должен быть вырожден. Действительно, если этот минор не вырожден, то найдется некоторый ортогональный ему булев вектор. Заменив значениями его компонент значения «—» соответствующих компонент строки uf, мы получим булев вектор, поглощаемый строкой Uj ине поглощаемый более ни одной строкой матрицы U. Очевидно, что в этом случае строку vij выбрасывать нельзя. Если же минор вырожден, то не существует такого булева вектора, который поглощался бы ТОЛЬКО СТРОКОЙ Uj. Заменить значение 0 или 1 некоторого элемента и\ матрицы U на значение «—» можно только в том случае, если будет вырожденным минор, образованный пересечением тех строк, которые не ортогональны троичному вектору, соседнему строке ut по компоненте /, с теми столбцами, в которых строка ut имеет значение «—». В самом деле, в этом случае указанный соседний вектор можно добавить в матрицу U и, склеив его со строкой и{, получить требуемый результат. Пользуясь описанными операциями, мы всегда можем найти безызбыточную ДНФ, исходя из некоторой произвольной. При этом следует помнить, что получаемый результат будет зависеть от порядка выбора как операций, так и строк матрицы U, к которым они применяются. Многошаговый процесс упрощения может иметь цепной характер. Пусть, к примеру, ь 2 з "10- 1 1 1 U = I И - 1 1 1 4 5 в 1 1 - - 1 - 1 - 1 1 - 1 0 0 1
17, УПРОЩЕНИЕ ТРОИЧНЫХ МАТРИЦ 193 Будем сначала удалять из этой матрицы некоторые строки целиком, если это возможно, а уж во вторую очередь стараться «выбрасывать буквы». В данномАслучае оказывается, что единственно возможное упрощение такого рода заключается в замене значения элемента и\ с 0 на «—». Соответствующий минор оказывается особенным — формально он должен иметь одну строку, образованную из строки 3 матрицы С/, и ни одного столбца. Будем считать такого рода минор вырожденным, полагая, что особенный минор противоположного типа, содержащий формально несколько столбцов и ни одной строки, будет невырожденным. После этого упрощения оказывается излишней строка 3: соответствующий ей минор преобразованной матрицы 2 б Lo о _1б вырожден. В результате мы получаем безызбыточную матрицу 10 — 11—-] 1 11 _ 1 __ _ 1 _ 1 — lb 1 0 1 — 0 1 J которая оказывается минимальной, соответствуя кратчайшей ДНФ. В тех случаях, когда описанный способ упрощения ДНФ оказывается трудоемким, можно рекомендовать попытаться упростить сначала ДНФ более быстродействующим способом, а затем уже устранять избыточность из полученного результата. Например, довольно эффективной оказывается следующая процедура: в матрице U отыскиваются пары смежных строк и к ним применяется операция обобщенного склеивания. Если продукт поглощает некоторую из этих строк (или обе),тто он ее*заменяет, в противном случае не используется. Нетрудно проверить, что в применении к рассмотренному примеру этот метод приведет к тому же результату. 7 Л. Д. Закревский
194 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ Нахождение обязательных строк. Во многих практических ситуациях задача построения кратчайшей ДНФ, исходя из сокращенной ДНФ, может быть редуцирована путем нахождения в последней обязательных членов, которые должны присутствовать в любой кратчайшей ДНФ с безызбыточными членами и даже в любой безызбыточной ДНФ. В троичной матрице U, задающей сокращенную ДНФ, в этом случае отыскиваются соответствующие обязательные строки. Очевидно, что строка ut матрицы U является обязательной, т. е. должна быть непременно включена в решение, если ее нельзя выбросить с самого начала. Следовательно, она обязательна, если минор, образуемый пересечением других строк, неортогональных строке U;, со столбцами, где она имеет значение «—», не вырожден. Совокупность обязательных строк составляет ядро решения. С другой стороны, строка, покрываемая ядром, не сможет принадлежать ни одному из минимальных покрытий и даже ни одному из безызбыточных. Такая строка удовлетворяет условию: минор, образованный пересечением строк, принадлежащих ядру и неортогональных данной строке, со столбцами, в которых она имеет значение «—», вырожден. Совокупность таких строк назовем антиядром решения. Очевидно, что эти строки можно сразу исключить из дальнейшего рассмотрения, удалив их из матрицы U. В результате нахождения ядра и антиядра решения производимый при поиске оптимального покрытия перебор может значительно сократиться. Например, пусть множество А всех простых импли- кант булевой функции / задано троичной матрицей U = 1 "О о 4 б — о 1 — - о
17. УПРОППШИЕ ТРОИЧНЫХ МАТРИЦ, 19& Начнем с поиска обязательных строк. Соответствующий строке 1 минор 2 4 6 Г- 1 0]2 - - 1 3 1 — 1 4 Ll 1 -J8 не вырожден, следовательно, эта строка обязательна. Подобным образом находим, что обязательны также строки 2, 4, 5 и 6. Остальные строки проверяются на принадлежность антиядру. Например, образуя соответствующий строке 3 минор из неортогональных ей строк ядра 12 4 |0 - -ll - 1 - 4 I 1 I б у Lo 1 1 J * мы обнаруживаем, что этот минор вырожден, откуда следует, что строкаиЗ принадлежит антиядру и ее надо выбросить из матрицы U. Аналогично выясняется принадлежность антиядру строк 7 и 8. Удаляя их из U, получим остаток ГО — 1 — 0 —1 0 — — 1 — О - 1 1 , 1 — - — — 1 [1 1 0 — — —J содержащий лишь обязательные строки. Очевидно поэтому, что он представляет оптимальное решение. Допустим теперь, что исходная троичная матрица U задает не сокращенную, а некоторую безызбыточную ДНФ булевой функции /. Спрашивается, можно ли и в этом случае выявить ядро решения непосредственно в матрице U, не прибегая к предварительному получению множества всех простых импликант путем соответствующего расширения матрицы С/? Оказывается, что можно. Прежде всего, заметим, что поскольку обязательные строки должны содержаться в любой безызбыточной ДНФ, то все они, очевидно, содержатся и в данной матрице U. Остается распознать их там. Ранее было показано, что максимальный интервал U; множества М1 обязателен, если он обладает некоторым 7*
196 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИЙ элементом, не имеющим в множестве АР таких соседей, которые не принадлежали бы этому интервалу. Очевидно, что такие соседние элементы могли бы находиться только в таких максимальных интервалах, которые неортогональны интервалу \it или смежны с ним. Строка ut безызбыточной матрицы U обязательна в том и только том случае, когда не будет вырожденным минор, образуемый пересечением строк, неортогональных или смежных со строкой uf, со столбцами, в которых строка ut имеет значение «—». Действительно, если этот минор вырожден, то для любого элемента а интервала ut в матрице U найдется такой интервал Uj, который содержит элемент а (если иг и и; неортогональны) или некоторого его соседа (если ut и и; смежны). Это означает, что элемент а принадлежит по крайней мере двум максимальным интервалам — в первом случае оба они представлены в матрице £/, во втором случае один из них может быть получен обобщенным склеиванием интервалов ut и и7-. Если же минор не вырожден, то найдется ортогональный ему булев вектор. Присвоив значения его компонент соответствующим компонентам строки иь мы получим элемент интервала и*, не имеющий в множестве М1 соседей за пределами этого интервала, что и доказывает обязательность строки uf. Рассмотрим следующую безызбыточную матрицу: U = Анализируя первую из строк, построим соответствующий ей минор 1 1 — — — 1 1 2 — 0 1 0 — 0 3 0 — 0 — 1 0 4 — — — 1 0 — 5 0 1 — — — — в — 1 0 — — — 7 —" — 1 0 0 — 1 2 3 4 б в 2 0 1 0 — 0 4 — — 1 0 — в 1 0 — — — 7 — " 1 — 0 — 2 3 4 5 G
17. УПРОЩЕНИЕ ТРОИЧНЫХ МАТРИЦ 197 Он оказывается невырожденным, следовательно, строка 1 обязательна. В этом легко убедиться, построив ортогональный минору булев вектор 1111 и заменив значениями его компонент значения «—» соответствующих компонент строки 1. Полученный при этом булев вектор 110 10 11 будет представлять собой именно такой элемент характеристического множества М1, который принадлежит только рассматриваемому максимальному интервалу и не имеет в множестве М1 соседей за пределами интервала. Анализируя аналогично следующие строки матрицы £/, мы придем к выводу, что все они обязательны, кроме последней, которой соответствует вырожденный минор. Но просто так выбросить строку G из матрицы U нельзя — матрица безызбыточна. Необязательность строки G означает лишь, что ее можно заменить какой-то другой строкой, в данном случае не присутствующей в матрице U. Однако такая операция не приведет к уменьшению числа строк в матрице. Следовательно, можно считать доказанным, что рассматриваемая матрица U представляет кратчайшую ДНФ. Построение допустимых совокупностей максимальных интервалов. Вернемся теперь к ситуации, в которой матрица U представляет множество А всех максимальных интервалов характеристического множества М1, и рассмотрим задачу выбора из нее такой допустимой совокупности максимальных интервалов, для которой, согласно определению, найдется содержащее ее кратчайшее интервальное покрытие множества М1. Представим себе этот выбор как многошаговый процесс, при котором текущая ситуация характеризуется разбиением множества А на три части: некоторую уже построенную допустимую совокупность А+, такое множество А~у относительно которого известно, что существует некоторое кратчайшее интервальное покрытие множества М1, содержащее А+ и не пересекающееся с А~, и текущий остаток А*у определяемый как А \ (А+ (J А'). Все три множества являются переменными, причем в качестве исходного значения множества А+ может быть принято ядро решения, состоящее из обязательных интервалов, а в качестве исходного значения множества А~ — антиядро.
198 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ Очередной шаг состоит в добавлении в множество А" некоторого элемента, выбираемого из множества А*, причем такого, чтобы новое значение множества А~ также обладало описанным выше качеством. Эта операция сопровождается, если это возможно, расширением множества А+у а также соответствующим сокращением множества Л*. Процесс продолжается до некоторой тупиковой ситуации, когда в множестве А* уже не удается найти элементов с требуемыми свойствами. Тогда возникает необходимость в организации просмотра различных вариантов продолжения построения интервального покрытия множества М1 или в выборе какого-либо конкретного варианта, перспективного, но не гарантирующего оптимальность получаемого при его реализации результата. Обозначая, как и раньше, через М* множество элементов из А/1, не покрытых выбранной допустимой совокупностью А +, будем говорить, что интервал и;- поглощает интервал ut на множестве М*, если любой элемент из Л/*, принадлежащий интервалу и £, принадлежит и интервалу иу. В основе описываемого здесь метода построения допустимой совокупности лежит следующее утверждение: интервал и* может быть передан из множества 4* в множество Л", если в множестве А* существует некоторый другой интервал Uj, который поглощает иt на множестве ЛР. Условия возможной передачи интервала иг- из множества Л* в множество А+ остаются прежними: он не должен покрываться совокупностью остальных интервалов, принадлежащих объединению множеств А+ и А*. Поскольку при передаче некоторого интервала из множества А* в множество А~ происходит сокращение множества Л*, это может позволить найти затем в множестве Л* другой интервал, который можно передать множеству А +. В свою очередь передача некоторого интервала в множество А+ может создать условия для последующего сокращения текущего остатка А*. В этом и заключается цепной характер описываемого процесса. Представляя множества А+у А~ и А* в матрице С/, будем разбивать ее в текущей ситуации на три части — строчные миноры, обозначаемые соответственно через t/+, U~ и U*.B процессе построения допустимой совокупности матрицы U+ и U" будут расти, а матрица U* — сокращаться.
17. УПРОЩЕНИЕ ТРОИЧНЫХ МАТРИЦ 199 Строку и, матрицы U* можно передать в матрицу £/~, если в матрице U* останется некоторая другая строка и;- такая, что будет вырожден минор, образуемый пересечением строки Uj, а также неортогональных строке uf строк матрицы £/+, со столбцами, в которых строка и^ имеет значение «—». Строка uj матрицы U* передается в матрицу £/+, если не будет вырожден минор, образуемый пересечением неортогональных строке 11^ строк матриц £/+ и U* со столбцами, в которых строка и^ имеет значение «—». Пример. Обратимся к рассмотрению конкретного примера, чтобы продемонстрировать на нем описанные процессы упрощения троичных матриц. Пример этот, довольно сложный, просчитан на ЭВМ. Заметим, что демонстрируемые матричные преобразования будут иногда сопровождаться эффектом перемешивания строк матрицы, что явилось побочным следствием повышения эффективности реализуемых на ЭВМ алгоритмов. Пусть исходная матрица U задает некоторую ДНФ: U = "1 1 — — — 1 — — 1 0 1 — 0 0 0 — 0 0 1 1 1 0 — 0 — 0 0 1 — — 0 — 0 1 — — 1 — 0 1 1 0 1 — 0 1 1 — — 0 0 1 — 1 — 0 — 1 0 1 1 0 1 — 0 — 0 — 1 — 0 — 1 1 0 — 0 — 1 0 0 0 — 1 1 1 — 0 0 0 0 1 0 — — — — 1 1 0 — 0 — 0 0 — — 0 0 0 1 0 1 1 — — 0 — 1 — 1 — 1 1 1 1 " 1 0 0 0 — 0 1 — 1 — 0 1 ■о 0 0 1 — — 0 1 + + + + +
200 гл. 4. минимизация днф булевой функции Строя для каждой строки этой матрицы соответствующий ей минор, образуемый из неортогональных или смежных с ней строк, находим все обязательные максимальные интервалы. Их оказывается пять и они отмечены в матрице знаком + . Например, строке 0 10 — — 0 1 соответствует минор г— 0 0 |_1 1-| 1 1 oj который оказывается невырожденным (существует ортогональный ему вектор 0 0), в связи с чем эта строка обязательна. К сожалению, большинство строк по обязательно. Поэтому, чтобы применить итеративную процедуру построения допустимой совокупности интервалов, получим предварительно множество А всех максимальных интервалов множества М1 (например, методом Блека—Порец- кого). Кроме интервалов, перечисленных в исходной матрице f/, в множество А войдут также следующие интервалы: 1 1 — 1 1 1 — 1 0 0 — 0 0 — — 1 .1 — 0 0 — 0 0 — — — — — 1 — — — '— 1 — — 0 0 — 1 0 — 0 1 1 0 1 1 0 1 — — 1 0 0 0 — 0 0 0 0 1 1 0 0 1 — — 0 — 1 1 1 1 — 0 1 — 1 0 1 0 0 0 0 0 0 0 1 — — 1 — 0 0 1 0 1 1 0 — 1 0 1 0 0 0 0 - 1 0 0 Последующее разложение множества А на три части приводит к получению допустимой совокупности Л+,
17. УПРОЩЕНИЕ ТРОИЧНЫХ МАТРИЦ 201 представ лини он матрицей i— и+ = 0 1 0 0 0 1 -0 0 0 — 1 0 — 1 — 1 — 1 0 1 1 0 1 — 1 1 0 — — 0 — — - 1 — — - 0 0 - 1 1 — 1 - 1 0 1 1 0 1 1 (первые пять ее строк задают найденное ранее ядро решения), и несокращаемого далее текущего остатка А*, представленного матрицей и*= 0 » — 1 1 1 — — 0 — — 0 — — — — 1 — — — 0 0 — — — 1 — 0 1 1 0 — — 0 0 0 — 0 1 0 0 1 0 — — 1 — 0 0 0 — — — 1 0 — — 0 — — — 0 0 — 0 — 0 — 0 0 0 1 1 0 — — — — 0 — 1 0 1 0 0 0 — 0 1 0 1 1 — 0 1 0 0 1 0 0 0 — 1 0 — 1 0 0 1 0 1 0 1 — 0 — 0 — 0 — 0 0 1 — 1 1 0 0 0 0 — — 1 0 "* 0 1 - 1 1 0 0 0 0 0 — 0 0 — 0 1 — — 0 — 0 1 2 3 4 5 в 7 8 9 10 11 12 13 14 15 16 17 18 19 2С 21 22 23 24 (нумерация строк этой матрицы понадобится нам в дальнейшем). Остальные максимальные интервалы войдут в множество Л*", представляемое матрицей U~, которую
202 гл. 4. минимизация днф булевой функции мы не будем здесь приводить, поскольку в дальнейших операциях она не участвует. Матрица простых совокупностей. Продолжая минимизацию рассматриваемой булевой функции, можно получить в явном виде характеристическое множество М1, удалить из него элементы, покрываемые найденной допустимой совокупностью А+, построить матрицу бинарного отношения принадлежности оставшихся элементов интервалам из множества А* и приступить к поиску ее кратчайшего покрытия. Однако при большом числе элементов в множестве М1 этот метод оказывается трудоемким, а строящаяся матрица — громоздкой. Опишем в связи с этим другой метод, основанный на использовании матрицы простых совокупностей. Так мы назовем булеву матрицу, получаемую из матрицы Квайна путем удаления строк, поглощающих некоторые из остающихся в матрице строк. Напомним, что матрица Квайна задает бинарное отношение принадлежности элементов характеристического множества М1 максимальным интервалам этого множества, причем строки соответствуют элементам, столбцы — интервалам. Каждая строка матрицы простых совокупностей задает (единицами в соответствующих столбцах) некоторую простую совокупность, т. е. такую совокупность At максимальных интервалов множества М1, которая обладает следующими свойствами, очевидным образом вытекающими из описанного способа получения матрицы: а) в множестве М1 существует некоторый элемент, принадлежащий каждому из интервалов совокупности 4{ и не принадлежащий более ни одному из максимальных интервалов; б) не существует другой совокупности А^ содержащейся в A i (Aj CZ Ai) и обладающей свойством а. Очевидно, что любое безызбыточное интервальное покрытие содержит по крайней мере по одному интервалу из каждой простой совокупности. Матрица простых совокупностей может быть поэтому интерпретирована как перечень соответствующих требований, предъявляемых к искомому решению наряду с требованием минимальности, причем число этих требований минимизировано путем выбрасывания заведомо излишних, автоматически выполняемых при удовлетворении остающихся требований.
17. УПРОЩЕНИЕ ТРОИЧНЫХ МАТРИЦ 206 Сформулируем следующее правило, позволяющее находить простые совокупности непосредственно в множестве А простых импликант, задаваемых соответствующими максимальными интервалами множества М1. Подмножество At множества А представляет собой простую совокупность в том и только в том случае, когда: а) пересечение всех интервалов из At не содержится в объединении интервалов из А \ At; б) в множестве А не существует другого подмножества Aj, содержащегося в А{ и обладающего свойством а. Это правило легко переносится на случай, когда множество А задано троичной матрицей U. Известно, что пересечение любых интервалов, если только оно не пусто, также представляет собой интервал, причем представляющий его вектор получается из векторов, представляющих пересекающиеся интервалы, следующим образом: в компонентах, где все векторы- аргументы имеют значение «—», он также получает значение «—», а остальным компонентам присваивается значение 0 или 1, совпадающее со значением одноименных компонент некоторых векторов-аргументов (остальные имеют там значение «—»). Например, пересечение интервалов 01 — 0 — — — , — 1 — — 0 — 1^ и 0 1 — 0 0 — 1 образует интервал 0 1 — 0 0 — 1. Подмножество Ut взаимно неортогональных строк матрицы U является простой совокупностью в том и только том случае, когда: а) минор, образованный пересечением тех из остальных строк матрицы U, которые неортогональны каждой из строк подмножества Ut, со столбцами, в которых все строки подмножества Ut имеют значение «—», не вырожден, б) не существует другого подмножества строк Uj, содержащегося в [//и обладающего свойством а. Поиск простых совокупностей естественно проводить в порядке возрастания мощности анализируемых подмножеств. Если при этом будет найдена некоторая простая совокупность Uu то все содержащие ее подмножества исключаются из дальнейшего рассмотрения. В частности, при анализе одноэлементных подмножеств находятся все обязательные строки, образующие ядро решения (проверяемые при этом условия совпадают
204 гл. 4. минимизация днф булевой функций со сформулированным ранее, специально для поиска обязательных строк). Подмножества, анализируемые после этого, формируются из остальных строк. Если из множества А простых импликант предварительно выделены (неважно, каким методом) некоторая допустимая совокупность А + и соответствующий ей текущий остаток А*, то поиск простых совокупностей ограничивается множеством А*: анализу подвергаются только подмножества этого множества. Однако при построении соответствующих миноров используются строки как матрицы U*, так и матрицы U+. Именно на такой ситуации мы остановились в решаемом примере, поскольку она оказалась тупиковой для примененного итеративного метода конструирования допустимой совокупности. Итак, будем искать простые совокупности в полученной ранее 24-строчной матрице £/*, представляющей текущий остаток А*. Начнем с поиска двухэлементных простых совокупностей (одноэлементные уже найдены и вклю- 12 3 4 5 6 7 8 9 10 И 12 13 14 16 16 17 18 19 20 21 22 23 24 "1 000000 1 000000000 0 00000 0" 1 0000 000 1 000000000000000 0 10000000010000000000000 0 1 0000000000000000000001 00 1 0 1 0000000000000000000 000100000000010000000000 000100000000000100000000 00000 1 00000 0 00000 0 100000 00000 1 000000000000000010 000000 100000100000000000 000000 10000000 0 000000001 0000000 0 1 001000000 0 0 0000 00 0 00000 1 000000000 0 00001 000000000 110000000000000 0 0 0 0 0 0 0 0 0 10010000000 0 Оо 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 10 000000000000000 0 100 0 00 0 1 I 0 0 0 0 0 0 0 0 0 000000000101000 0 0 1 0 0 0 0 0 0 00 1 000 0000 ЮООо 0000 1 00000 0 0000010000010 000000100000000000010010 |_0 0 0 0 0 0 0 0 0 00000100100010 0_j
17. УПРОЩЕНИЕ ТРОИЧНЫХ МАТРИЦ 205 чены в допустимую совокупность А+). При этом прежде всего проверяется условие неортогональности строк анализируемой пары, а затем строится соответствующий минор и выясняется, вырожден ли он. В ходе этого процесса выявляются также пары, составленные из неортогональных строк, но не являющиеся простыми совокупностями. Из этих пар формируются затем трехэлементные подмножества, рассмотрением которых можно ограничиться при поиске трехэлементных простых совокупностей. Подобным образом совершается переход к поиску четырехэле- ментных простых совокупностей и т. д. В данном случае процесс заканчивается на рассмотрении трехэлементных подмножеств. Результат представляется булевой матрицей (с. 204), столбцы которой соответствуют строкам матрицы £/*, а строки задают найденные простые совокупности. Легко находится кратчайшее столбцовое покрытие этой матрицы, состоящее из десяти столбцов: 1,3, 4, 9, 11, 13, 15, 19, 23 и 24. Присоединяя соответствующие строки матрицы U* к допустимой совокупности U+, получаем кратчайшую ДНФ рассматриваемой булевой функции ■— 0 1 0 0 0 1 0 0 — 1 0 — — 1 1 1 — 0 0 — 1 0 — 1 — — — — — 1 0 1 0 0 — 1 — 1 0 1 1 0 1 1 0 1 — 0 _.. — — — 0 — г 1 — 0 — — (Г 0 0 — 0 1 — — 1 0 0 — — — — 0 1 — — — 1 0 1 0 0 0 — 1 — — 1 — 0 — 1 1 1 0 0 1 — — 0 — 0 — 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0
206 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ 18. Оптимальная реализация слабо определенных булевых функций Частичные и слабо определенные булевы функции. Иногда значения булевой функции определены почему-либо не всюду, а лишь на некоторых наборах значений аргументов, и в этом случае она называется частичной или не полностью определенной булевой функцией. Частичная булева функция задает разбиение булева пространства М на три части М1, М° и АГ~, представляющие собой множества наборов, на которых функция принимает соответственно значения 1, 0 или не определена. Рассматривая две частичные булевы функции / и g, будем говорить, что функция / реализует функцию g, если Mg cz cz М) и MgCZ М°/, т. е. если можно так доопределить функцию g, сменив некоторые из ее значений «—» на 1 или 0, что она совпадет с функцией /. Обычно значение «—» частичной функции интерпретируется как произвольное двоичное значение. В этом случае частичную функцию удобно рассматривать как соответствующее множество полностью определенных булевых функций, реализующих ее, и считать, что мы можем выбрать из этого множества любую функцию. Такая интерпретация используется, например, при синтезе комбинационной схемы, функциональные свойства которой описываются некоторой частичной булевой функцией /. Заметим, что в свойствах полученной в результате синтеза схемы уже не будет никакой неопределенности: для каждого набора значений входных переменных она будет выдавать вполне определенное значение выходной переменной, т. е. будет непосредственно реализовывать некоторую полностью определенную булеву функцию. Требуется лишь, чтобы эта функция принадлежала указанному множеству, т. е. реализовывала в свою очередь заданную частичную функцию /. Очевидно, что задача синтеза оптимальной схемы, реализующей заданную частичную булеву функцию /, тесно связана с оптимальным доопределением этой функции или'оптимальным выбором среди полностью определенных булевых функций, реализующих функцию /. Определение оптимальности булевой функции будет при этом
18. ОПТИМАЛЬНАЯ РЕАЛИЗАЦИЯ 207 зависеть от типа схем, в пределах которого ищется схемная реализация частичной булевой функции. В частности, при реализации функции на ПЛМ оптимальной следует считать такую булеву функцию, у которой кратчайшая ДНФ содержит минимальное число членов. Нахождение такой функции и одновременное получение ее кратчайшей ДНФ составляет содержание задачи минимизации частичной булевой функции. Особый практический интерес представляет задача минимизации слабо определенных булевых функций, т. е. таких функций, у которых сильно ограничена мощность множеств М1 и АТ°. Для конкретности положим, что в этих множествах может содержаться несколько десятков или сотен элементов. Для решения этой задачи может быть применен описанный ранее метод, в основе которого лежит предварительное получение множества всех максимальных интервалов. В данном случае метод модифицируется следующим образом: обязательному покрытию подлежит лишь множество М1, а интервалы, которым могут принадлежать элементы этого множества, выбираются среди максимальных интервалов множества M1[JM~. Однако будучи ограниченной по мощности множеств М1 и М°, слабо определенная булева функция может обладать большим числом аргументов и вследствие этого весьма большим числом максимальных интервалов множества М1 (J M~. Конечно, можно было бы ограничиться рассмотрением «полезных» интервалов, как мы назовем те из максимальных интервалов множества М1 (J Af~, которые пересекаются с множеством М1, однако и их число может оказаться чрезмерно большим. Изложим в связи с этим другой подход к решению данной задачи. Нахождение кратчайшей ДНФ слабо определенной булевой функции. Задача сводится к разбиению множества М1 на минимальное число подмножеств так, чтобы каждое из них содержалось в некотором максимальном интервале множества MX\JM~ . Назовем такие подмножества интервалъно-поглощаемъши* Очевидно, что некоторое подмножество множества М1 интервально-поглощаемо в том и только том случае, когда поглощающий его минимальный интервал содержится
208 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ в множестве М1 (J АГ~, т. е. не пересекается с множеством М°. Очевидно также, что при поиске указанного минимального разбиения множества М1 есть смысл ограничиться рассмотрением максимальных интервалъно-погло- щаемых подмножеств этого множества, т. е. таких подмножеств из М1, которые интервально-поглощаемы, но перестают быть такими при добавлении в них любого из остальных элементов характеристического множества МК Каждое из максимальных интервально-поглощаемых подмножеств Mt задает некоторый класс максимальных интервалов в множестве М1 (J АГ~, а именно таких интервалов, проекции которых на множество М1 равны между собой и совпадают с множеством Mt. Рассмотрение максимальных интервалов заменяется рассмотрением их классов, и поэтому чем больше различных максимальных интервалов содержится в каждом классе, тем эффективнее оказывается применение данного подхода. Именно эти соображения и положены в основу предлагаемого метода минимизации слабо определенных булевых функций. Метод заключается в получении всех максимальных интервально-поглощаемых подмножеств множества М1, последующем построении булевой матрицы отношения принадлежности полученным подмножествам элементов множества М1 и нахождении кратчайшего покрытия этой матрицы. Продемонстрируем работу метода на конкретном примере, когда множества М1 и М°, характеризующие частичную булеву функцию /, заданы соответственно матрицами иг = "1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 г 1 0 1 0 i 0 1 0 0 1 2 3 4 б 6 7 8 9 10
18, ОПТИМАЛЬНАЯ РЕАЛИЗАЦИЯ 209 UQ = 1110 110 110 1 0 0 0 10 0 10 111 0 10 10 110 0 11 0 10 0 10 10 0 10 10 110 10 10 0 1 0 110 0 0 110 0 0 10 10 0 10 10 10 L0 010110010 U Перебор подмножеств из М1, производимый при поиске интервально-поглощаемых подмножеств, может быть сокращен, поскольку искомые подмножества образуют в совокупности множество, выпуклое по отношению включения. Напомним, что идея этого сокращения заключается в том, что если некоторое подмножество не принадлежит выпуклому множеству, то и любое его расширение также не будет принадлежать ему. Не вникая в подробности данного перебора, представим результат, получаемый на первом этапе, булевой матрицей 1 234 5 6789 10 "0 0 0 1 0 0 0 1 0 Г 0 0 0 0 10 10 0 1 0 0 0 0 110 0 0 1 0 10 0 0 10 0 0 1 10 0 0 0 10 0 0 1 0 0 0 110 0 0 0 1 10 0 0 10 0 0 0 1 0000000110 0 0 10 10 10 10 10 0 0 0 10 0 10 0 0 0 10 0 110 0 0 10 10 10 10 0 10 0 10 10 10 0 0100001000 + + + 0 1 1 0 0 0 0 0 0 0_ Каждая строка этой матрицы задает некоторое максимальное интервально-поглощаемое подмножество из Af1, показывая единицами, какие именно элементы множества М1 принадлежат ему. Например, первая строка этой мат-
210 ГЛ. к. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНЦЦИЙ рицы задает совокупность трех строк матрицы иъ с номерами 4, 8 и 10. Минимальный поглощающий интервал для них получается достаточно просто: 01011001101 4 01011001111 s 00100011100 ю 0.— — — — 0 — 11 — — Так же просто выясняется, что этот интервал не пересекается с множеством М°. Он сравнивается по очереди с каждым элементом этого множества, в результате чего оказывается, что ни один из этих элементов не принадлежит данному интервалу. Нетрудно проверить, что при добавлении в рассматриваемое подмножество любого другого из остальных элементов множества М1 соответствующий интервал будет пересекаться с множеством М°. Далее остается найти кратчайшее покрытие построенной матрицы, для чего можно применить описанный ранее метод, находящий в данном случае трехэлементное решение 123 456789 10 Г1 00001000 Л 0101010100 1_0 0 1 0 1 0 1 0 1 0J (соответствующие строки покрываемой матрицы отмечены знаком +)• Элементами полученного решения служат некоторые из максимальных интервально-поглощаемых подмножеств. Находя для них минимальные поглощающие интервалы и, если это возможно, расширяя их на множестве М1 [J М~, получаем искомую кратчайшую ДНФ булевой функции /: Г— 0 — — — о — 1 — — —~| 0 — — — — — — 1— — 1. L— — 1 — — — — 0 — — oj Данный метод может быть рекомендован, когда мощности множеств М1 и М° сравнительно невелики. Особенно критичным метод оказывается к числу элементов в множестве М1, становясь весьма трудоемким уже при двух- трех десятках элементов в этом множестве. При дальней-
18. ОПТИМАЛЬНАЯ РЕАЛИЗАЦИЯ 211 шем увеличении мощности множества М1 целесообразно перейти к описываемому ниже приближенному методу. Метод конкурирующих интервалов. Так был назван метод, идея которого заключается в параллельном «выращивании» интервалов, из которых в результате образуется решение. Будем считать, что в текущей ситуации получено некоторое частичное решение Vt — совокупность интервалов множества Ml (J М",не обязательно максимальных, покрывающих некоторую часть множества М1, и обозначим через М* непокрытый остаток, образуемый теми элементами множества М1, которые не принадлежат ни одному из интервалов частичного решения. На очередном, (i-\- 1)-м шаге частичное решение Vt преобразуется в новое частичное решение Vi+U причем так, чтобы непокрытый остаток сократился по крайней мере на один элемент. Элементарными операциями такого преобразования могут служить лишь расширение некоторого из интервалов частичного решения в множестве М1 (J М~ и введение нового интервала. Конкретизация операции на очередном шаге производится на основе информации, заключенной в булевой матрице Ct отношения совместимости элементов из М* с интервалами частичного решения, первые из которых ставятся в соответствие строкам матрицы, а вторые — столбцам. При этом элемент а считается совместимым с интервалом и, если в множестве М1 (J M~ существует интервал, поглощающий как а, так и и. Очевидно, что необходимое и достаточное условие совместимости можно сформулировать следующим образом: минимальный интервал, поглощающий а и и, должен содержаться в множестве М1 (J М~. Получается такой интервал аналогично минимальному поглощающему интервалу для элементов булева пространства: компоненты троичного вектора, представляющего этот интервал, принимают значения соответствующих компонент векторов-аргументов при их совпадении, и значение «—» — в противном случае. Например, О 100 1011 10 а — 10 — 000 — 10 u — 1 0 — — 0 10
212 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ Выбор очередного шага производится следующим образом. Если в матрице Ct существует строка без единиц, то это означает, что соответствующий ей элемент непокрытого остатка не совместим ни с одним из интервалов частичного решения. В этом случае в частичное решение добавляется новый интервал, содержащий лишь данный элемент. Если в матрице Сг существует столбец без единиц, то это означает, что соответствующий интервал частичного решения не может быть расширен так, чтобы покрыть какой-либо из элементов множества М*. В этом случае он произвольно расширяется, если это возможно, на множестве М1 U М~ и принимается в качестве одного из элементов окончательного решения. Если в матрице Ct существует столбец, содержащий лишь одну единицу, то это означает, что соответствующий интервал может быть использован для покрытия только одного из элементов непокрытого остатка. Интервал соответственно расширяется и включается в окончательное решение. Наконец, если текущая ситуация такова, что ни одно из перечисленных условий не выполняется, то производится следующий выбор, который в большинстве случаев оправдывается, но может оказаться не наилучшим, что и приводит к тому, что описываемый алгоритм является лишь приближенным, не гарантируя оптимальности получаемого окончательного решения. В частичном решении отыскивается некоторый минимальный по числу элементов интервал, а затем среди совместимых с ним элементов непокрытого остатка выбирается ближайший к нему. Расстояние измеряется при этом по Хэммингу, числом компонент, по которым элемент и интервал ортогональны. Такой выбор оправдывается статистически, так как при нем покрытие нового элемента обеспечивается минимальным расширением интервала, что сохраняет больше возможностей для последующих преобразований частичного решения. Выполнение описанных операций преобразования частичного решения сопровождается удалением покрытых элементов из Mf и соответствующей корректировкой матрицы совместимости: Ct преобразуется в С*+1.
18. ОПТИМАЛЬНАЯ РЕАЛИЗАЦИЯ 213 В исходной ситуации частичное решение оказывается пустым, а непокрытый остаток совпадает с множеством М1: V0 = ф и М* = М1. Процесс конструирования решения завершается, когда пустым оказывается множество М*\ в этом случае частичное решение Vt принимается за окончательное. Пример. Применим данный метод к минимизации рассмотренной перед этим булевой функции. На первом шаге образуем первый элемент частичного решения — интервал, состоящий из единственного элемента множества М1, а именно первого из перечисленных в матрице Uv Этот интервал (назовем его а) оказывается несовместимым со вторым элементом множества М1, который образует в связи с этим второй элемент частичного решения — интервал Ь. В возникающей при этом ситуации частичное решение V2 будет иметь значение О 1 1 1 0 0 1 0 0 11 а 0010010101 1Ь> [I а непокрытый остаток М2 — значение г0 1 1 0 0 0 1 0 0 1 0П : о loiiooiioi 10 10 0 0 10 10 0 0 0 0 0 10 110 11 0 110 0 10 0 10 0 0 10 110 0 1111 10 10 110 0 0 10 L0 0100011100 3 4 5 6 7 8 9 10 (для удобства мы сохраняем нумерацию элементов множества М1). Матрица С2 отношения совместимости будет иметь соответственно следующий вид: а г° 1 1 1 0 1 1 -1 ь 1-, 1 0 1 11 1 0 lJ 3 4 5 6 7 ' S 9 10
214 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ Ситуация оказывается критической, поскольку в ней не выполняются условия, определяющие выбор «беспроигрышного» шага. Поэтому, следуя сформулированным для таких ситуаций правилам, мы фиксируем внимание на интервале а (он равен по размеру интервалу Ь, но оказывается первым в перечне) и измеряем расстояние от него до совместимых с ним элементов 4, 5, 6, 8, 9 и 10. Они оказываются равными соответственно 4, 6, 5, 5, 5 и 6. Выбираем ближний элемент 4 и соответственно расширяем интервал а, чтобы он поглотил этот элемент, т. е. находим для них минимальный поглощающий интервал, который будет принят в качестве нового значения растущего интервала а. В возникающей при этом новой ситуации частичное решение будет иметь значение _Г-- — 11001—0 Па Уз~ [° 0 1 001010 lljb> из непокрытого остатка буд ет удален элемент 4, а матрица совместимости окажется преобр виду: а ся = '0 0 1 0 1 0 0 ь Г 0 1 1 1 0 1 азованной к следующему 3 о 6 7 8 " 9 10 Обратим внимание читателя на то, что после выполненного расширения интервал а стал несовместим с элементами 5, 9 и 10 множества М1, с которыми он был раньше совместим. Например, минимальный поглощающий интервал для интервала а и элемента 5 пересекается с множеством М°, так как они обладают общим элементом 0 110 0 0 110 0 0.
18. ОПТИМАЛЬНАЯ РЕАЛИЗАЦИЯ 215 Поскольку в матрице совместимости появилась строка без единиц, на следующем шаге выбирается соответствующий ей элемент 5 непокрытого остатка и из него образуется новый интервал частичного решения 10100010100 с. Снова возникает критическая ситуация. Выбирается интервал b и отыскивается ближайший к нему элемент из непокрытого остатка. Им оказывается элемент 6, расстояние до которого равно 4. Интервал Ь соответственно расширяется, после чего наступает ситуация, в которой частичное решение принимает значение [___11 о 0 1 — 0 Па 0 о —0 — — — 10 1 1 ь , 1010001010 oj с непокрытый остаток — значение '01100010010" 0 110 0 10 0 10 0 0 10 110 0 1111 10 10 110 0 0 10 0 0 10 0 0 1110 0 м* = 9 10 а матрица совместимости — значение С5 = a b с "0 0 1 0 0 0 0 1 0 1 г 1 0 1 1 3 7 8 ( 9 10 Последняя матрица имеет особенность — столбец с одной единицей. Это позволяет редуцировать текущую ситуацию: интервал а расширяется так, чтобы он поглотил элемент 8, после чего в матрице совместимости вновь возникает столбец! с одной единицей, и расширению подвергается интервал Ь, поглощающий при этом элемент 10. Оба интервала а и b выходят из игры, а интервал с, оказывающийся совместимым с каждым из остающихся в остатке элементов 3, 7 и 9, последовательно расширяется,
216 ГЛ. 4. МИНИМИЗАЦИЯ ДНФ БУЛЕВОЙ ФУНКЦИИ поглощая все эти элементы. Так мы находим решении Г— — — 11 0 0 1 — — 1 ~ О 0 -0 — — — 1 — -- — 1 о - о о состоящее из трех интервалов, сообща покрывающих все элементы множества М1. Не будем считать это решение окончательным, а попытаемся улучшить его по дополнительному критерию, минимизируя общее число нулей и единиц в матрице решения. Для этого надо как можно сильнее расширить полученные интервалы в множестве М1 (J М~'. Эта задача сводится, как и многие другие, к нахождению кратчайшего покрытия некоторой булевой матрицы. В данном случае такой матрицей будет служить матрица покомпонентной ортогональности рассматриваемого интервала элементам множества М°. Столбцы этой матрицы соответствуют тем компонентам расширяемого вектор- интервала, которые имеют значение 0 или 1, а строки поставлены в соответствие строкам матрицы U0 и показывают (единицами), по каким из компонент последние ортогональны интервалу. Находя кратчайшее столбцовое покрытие матрицы покомпонентной ортогональности, мы находим тем самым некоторую минимальную совокупность компонент вектор-интервала, значения которых следует сохранить, чтобы он остался ортогональным множеству М°. Всем остальным компонентам присваивается значение «—». Например, отношение покомпонентной ортогональности полученного интервала а 110 0 1 1 элементам множества М°, т. е. строкам матрицы г1 110110110 1п 00010010111 Uo 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 10 10 0 10 10 10 L0 0 1 0 1 1 0 0 1 0 1J
18. ОПТИМАЛЬНАЯ РЕАЛИЗАЦИЯ 217 представляется следующей булевой матрицей: г1 0 1 0 О О- 0 10 110 0 11110 10 0 111 0 110 0 0 110 10 1 1110 0 1 •1 0 10 1 0-1 Одно из кратчайших покрытий этой матрицы образуется первыми двумя столбцами. В соответствии с этим можно оставить нетронутыми первые два отличные от «—» значения компонент и присвоить остальным компонентам значение «—», в результате чего вектор а в целом примет значение Аналогично строятся матрицы покомпонентной ортогональности для векторов Ь и с: 1 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 о-. 1 1 1 0 0 0 1- У г0 0 1 l-i 110 1 110 1 10 0 0 0 111 0 0 10 0 0 10 -0 0 0 1-J Кратчайшие покрытия этих матриц однозначны: в первой из них оказывается излишним третий столбец, во второй — второй. Соответственно расширяя интервалы Ьис, получаем окончательное решение задачи минимизации заданной частичной булевой функции: 0 о - - — - - 1 — -;- — — 1 _ _ — _0 — - 0
ГЛАВА 5 СИНТЕЗ ПРОГРАММИРУЕМЫХ ЛОГИЧЕСКИХ МАТРИЦ 19. Оптимизация ПЛМ по входу Непосредственная реализация системы булевых функций. Пусть некоторая система булевых функций задана в одной из введенных ранее форм, парой матриц X и У, булевых или троичных. Под непосредственной реализацией этой системы (X, У) будем понимать простейший переход от нее к структурным матрицам реализующей ее ПЛМ. Такой переход сводится обычно к простой смене интерпретации исходных матриц и не связывается с какой-либо оптимизацией. Напомним, что структура программируемой логической матрицы представляется троичной матрицей Т (входной ступени) и булевой матрицей В (выходной ступени) и что функциональные свойства ПЛМ описываются уравнением X, Y = ^BV^ ГУХ = "1BWTA ■ задающим выходную информационную матрицу У как функцию входной информационной матрицы X. Если система булевых функций задана булевой матрицей X, в которой перечислены (столбцами) некоторые наборы значений аргументов, и булевой матрицей У, где аналогичным образом представлены соответствующие значения функций системы, то непосредственная реализация заключается в том, что вкачестве структурной троичной матрицы Т принимается Хт (инверсированная и транспонированная матрица X), а в качестве структурной матрицы В — матрица У. Например, если Х = 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 0" 1 0 0 1 0 Y = > '0 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 0
19. ОПТИМИЗАЦИЯ ПЛМ ПО ВХОДУ 219 то структурные матрицы ПЛМ, реализующей непосредственно систему (X, У), имеют следующий вид: Т = 0 10 0 11 0 0 1111 110 10 0 0 0 0 10 1 10 110 1 в 110 0 1 10 0 11 0 10 0 0 10 111 0 0 0 1 1 Схема соответствующей ПЛМ приведена на рис. 49. На рис. 50 показана эквивалентная ей двухъярусная схема, реализующая композицию из конъюнктивного и Рис. 49. Непосредственная реализация на ПЛМ системы булевых функций, заданных поэлементно. Рис. 50. Двухъярусная схема из конъюнктивного и дизъюнктивного матричных операторов, эквивалентная предыдущей (см. рис. 49). дизъюнктивного матричных операторов. Такая схема более удобна, поскольку ее построение не связывается с ин- версированием матриц X и Y. Схемами такого рода мы и будем пользоваться в дальнейшем, имея в виду, что переход от них к ПЛМ элементарен. Совершенно так же производится непосредственная реализация системы булевых функций и в более общем случае, когда система задана троичной матрицей X, пере-
220 ГЛ. 5. СИНТЕЗ ПЛМ числяющей некоторые элементарные конъюнкции» и булевой матрицей У, где единицами отмечены те из них, которые входят в соответствующие дизъюнктивные нормальные формы. Непосредственная реализация заданной системы булевых функций оказывается весьма простой. Трудности возникают при поиске оптимальной схемы. Сведем решение этой задачи к оптимизации исходной системы (X, У). Не теряя общности рассуждений, будем пока считать, что исходная, подлежащая реализации система F состоит из частичных булевых функций Д, /2, . . ., /т и задана парой булевых матриц X и У. Будем говорить, что некоторая другая система G, состоящая из булевых функций gb eii • • ч^т» реализует систему F, если каждая из функций системы F реализуется соответствующей функцией из системы G. Определим оптимизацию системы F как нахождение такой простейшей пары из троичной матрицы X* и булевой матрицы У*, задаваемая которой в дизъюнктивной нормальной форме система булевых функций реализует систему F. Простота находимого решения оценивается прежде всего размерами матриц X* и У*, определяющими площадь ПЛМ, реализующей непосредственно систему (X*, У*). Дополнительным критерием оптимизации может служить число единиц в матрице У* и общее число единиц и нулей в матрице X*. Эти величины задают число транзисторов в ПЛМ. Знакомство с общей проблемой синтеза оптимальных ПЛМ начнем с рассмотрения задачи оптимизации ПЛМ по входу, когда в качестве матрицы У* принимается без изменений исходная матрица У и трансформациям подвергается лишь входная матрица X. Прежде всего попытаемся минимизировать число строк в матрице X*, поскольку число столбцов в ней зафиксировано — оно равно числу столбцов в матрице У. Классификация аргументов частичных функций. Рассматривая некоторую полностью определенную булеву функцию / (хъ х2, . . ., хп), всегда можно однозначно разбить множество ее аргументов на два класса, включив в один из них действительные аргументы, от которых функция действительно зависит, и образовав другой класс из фиктивных аргументов, изме-
19. ОПТИМИЗАЦИЯ ПЛМ ПО ВХОДУ 221 нение значений которых не может привести к изменению значения функции. Будем считать, что фиктивные аргументы можно вообще удалить из множества {хъ х2, . . . хп), сократив соответственно размерность булева пространства аргументов, и что функция / остается при этом прежней. Однако чаще всего класс фиктивных аргументов оказывается пустым. В случае частичных булевых функций мы встречаемся с принципиально иной ситуацией. Здесь также можно иногда найти действительные аргументы, но (если только множество М~ не пусто) нельзя найти аргументы, фиктивные в строгом смысле этого слова. Зато могут встретиться такие аргументы, которые нельзя отнести ни к действительным, ни к фиктивным. Дело в том, что при одном доопределении рассматриваемой частичной функции они окажутся действительными, а при другом — фиктивными. Назовем их возможными аргументами. С ростом неопределенности булевой функции растет и доля возможных аргументов. Слабо определенные функции имеют, как правило, лишь возможные аргументы. В самом деле, функция обладает действительными аргументами лишь тогда, когда существует хотя бы одна пара соседних наборов, на одном из которых функция принимает значение 0, а на другом — значение 1. Вероятность такого события для слабо определенных булевых функций мала. С аналогичной ситуацией мы будем иметь дело и при рассмотрении системы частичных булевых функций, заданной входной булевой матрицей X и соответствующей ей выходной матрицей У. например, abode "110 10" 0 10 11 10 110 10 0 0 0 0 0 111 0 0 10 0 1 2 з У = 4> 5 в abode "00110' 0 110 0 10 111 0 10 0 0 1110 0 1 2 3 4 б Любой из шести аргументов хъ х2, . . ., х% является здесь лишь возможным. При некотором доопределении системы он становится фиктивным и, следовательно, может быть удален из множества аргументов. При этом выбра-
222 ГЛ. 5. СИНТЕЗ ПЛМ abode 0 1 0 1 Г 10 110 10 0 0 0 0 0 111 0 0 10 0 2 3 4 > 5 6 Y = а Ь с d e 0 0 110" 0 110 0 10 111 0 10 0 0 1 1 1 0 0 1 2 п 4 г, сывается соответствующая строка в матрице X и получается другая система частичных булевых функций, реализующая заданную систему. Но это не значит, что из рассматриваемой системы можно удалить сразу все аргументы. Например, из матрицы X можно выбросить строку 1, что соответствует такому доопределению системы, при котором фиктивным становится аргумент хх. В получаемой при этом системе Х* = оказываются два соседних набора dn е, на которых принимает различные значения выходная переменная уг. Это значит, что аргумент х3, по которому наборы ортогональны, оказывается теперь действительным и уже не может быть исключен из системы. Минимизация числа аргументов в реализующей системе. Представляет интерес задача минимизации числа аргументов в системе частичных булевых функций, т. е. нахождение такой системы, которая будет реализовывать заданную систему, обладая минимальным числом аргументов. Очевидно, что эта система должна быть получена путем такого доопределения заданной системы, при котором как можно больше аргументов становятся фиктивными и выбрасываются из множества аргументов. Одна из практических интерпретаций данной задачи заключается в минимизации числа входных полюсов ПЛМ, равного числу столбцов во входной транзисторной матрице этой схемы, реализующей заданную систему частичных булевых функций. Выбрасывая из заданной системы некоторые аргументы и удаляя соответствующие строки в матрице X, необходимо следить за тем, чтобы не получить на некотором шаге такой остаток матрицы X, в котором окажутся равные между собой столбцы, соответствующие столбцам матрицы Y с различными значениями. Это значит, что ре-
19. ОПТИМИЗАЦИЯ ПЛМ ПО ВХОДУ 223 шаемая задача по существу совпадает с задачей нахождения теста для булевой матрицы X, уточняясь следующим образом: для заданной пары булевых матриц X и Y с одинаковым числом столбцов найти в матрице X минимальную совокупность строк, образующую минор, в котором любая пара столбцов, соответствующая столбцам матрицы Y с различными значениями, также будет иметь различные значения. Поэтому, решая задачу минимизации числа аргументов, найдем в матрице Y все пары столбцов с различными значениями, построим векторы различий для соответствующих им пар столбцов матрицы X (они получаются покомпонентной операцией дизъюнкции с исключением), составим из этих вектор-столбцов булеву матрицу различий и найдем ее кратчайшее строчное покрытие. Совокупность строк матрицы X, соответствующих элементам найденного покрытия, представит решение данной задачи. Поскольку в рассматриваемом примере все столбцы матрицы Y оказываются различными, векторы различий строятся в данном случае для всех десяти пар столбцов матрицы X. В результате получим следующую булеву матрицу различий, столбцы которой отмечены сверху порождающими их парами столбцов матрицы X: aaaabbbccd bcdecdedee 0 10 110 110 1 10 1110 0 110 10 0 1110 0 11 11110 0 0 0 0 0 0 1111110 0 0 0 10 0 10 0 110 Легко убедиться в отсутствии двухэлементных покрытий этой матрицы и в том, что одним из строчных покрытий ее служит совокупность первых трех строк. Следовательно, задача в целом имеет оптимальное решение Х* = 110 10' 0 10 11 10 110 Y = 0 0 110' 0 110 0 10 111 0 10 0 0 1110 0
224 ГЛ. 5. СИНТЕЗ ПЛМ которое можно рассматривать как сжатую форму следующего доопределения исходной системы (X, У), где число наборов, на которых определены значения выходных переменных, увеличено в восемь раз: Х* = у* = 1111111111 0000000011 111111110 0 11110 0 о о о 0 0 1 о 10 0 11 0 10 1 о о 0 1 0 10 1 0 000000000 000000001 1 111111110 0 0000000011 .1111111111 0 о" 1 1 0 о 1 1 1 1 О 1 о о 0 о 1 1 о о о о X 1 < 2*1 + ■Ф-* 3*1 ч- + +-+- Непосредственная реализация полученной системы (X*, У) показана на рис. 51. Решая данную задачу для более сложных систем частичных булевых функций, описываемых многостолбцовыми матрицами X и У, можно пользоваться приближенными методами поиска минимальных тестов. Сокращение числа транзисторов. Анализируя синтезированную схему, можно убедиться в ее избыточности, заключающейся в том, что при удалении некоторых транзисторов она по-прежнему будет реализовывать исходную систему (X, У). Возникает задача максимального упрощения схемы, при котором в ней останется минимальное число транзисторов. Удалению транзисторов соответствует замена значений 0 или 1 соответствующих элементов матрицы X* на значение «—», а это изменение в свою очередь, интерпретируется как расширение интервалов, на которых соответствующими столбцами матрицы У заданы значения выходных переменных. Рис. 51. Минимизированная но числу аргументов реализация системы частичных булевых функций.
19. ОПТИМИЗАЦИЯ ПЛМ ПО ВХОДУ 225 Очевидно, что если сокращение числа единиц и нулей в матрице X* проводится таким образом, что ее столбцы остаются взаимно ортогональными, то получаемая при этом система будет по-прежнему реализовывать исходную систему (X, У). Действительно, если ПЛМ реализует непосредственно исходную систему (X, У), то ее промежуточные переменные zu z2, . . ., z*, характеризующие состояния выходных полюсов первой ступени, поставлены во взаимно однозначное соответствие^ с наборами значений аргументов, на которых определены булевы функции исходной системы. При подаче на вход ПЛМ одного из этих наборов, представленного некоторым вектор-столбцом х1 входной информационной матрицы X, значение 1 принимает соответственно переменная zt, и только она, инициируя отображение на выход схемы соответствующего столбца матрицы У. Эта ситуация не будет меняться при замене наборов на поглощающие их интервалы, если эти интервалы не пересекаются. Однако данное требование не является необходимым. Во-первых, можно допустить пересечение интервалов за пределами области определения исходных частичных булевых функций. Во-вторых, при определенных условиях интервалы могут пересекаться и на этой области. Необходимое требование к системе (X*, У), реализующей систему (X, У), формулируется следующим образом: i-й столбец матрицы X* должен быть ортогонален /-му столбцу матрицы X, если г'-й столбец матрицы У не поглощается ее /-м столбцом. Например, в полученной паре матриц X* и У столбец 1 матрицы У поглощается лишь столбцом 3, откуда следует, что столбец 1 матрицы X* должен быть ортогонален столбцам 2, 4 и 5 матрицы X. Для выполнения этого условия необходимо и достаточно оставить в этом столбце лишь значение х\ = 0, заменив остальные значения на «—». Второй столбец матрицы X* обязан оставаться ортогональным всем столбцам матрицы X, и это требование обеспечивается сохранением значений элементов х\ = 1 и х\ = 0; элемент х\ получает при этом значение «—». Аналогично проводится сокращение числа единиц и нулей в столбцах 3 и 4. Наконец, столбец 5 матрицы У не поглощается лишь столбцом 2. В соответствии с этим необ- 8 А. Д. Закревсний
226 ГЛ. 5, СИНТЕЗ ПЛМ ходимо сохранить значение элемента х\ = 0. В итоге число единиц и нулей в матрице X* минимизируется и реализующая система (X*, У) принимает значение '— 1 0 - 0 1 0 1 - , — 011 —J Y = 0 0 110 0 110 0 10 111 0 10 0 0 1110 0 Соответствующая схема приведена на рис. 52. В рассмотренном примере минимизация числа единиц и нулей в матрице X* прошла легко. В более сложных ситуациях задача решается путем построения для каждого столбца упрощаемой матрицы X* булевой матрицы отношения его различий с теми из столбцов матрицы X, с которыми он должен оставаться ортогональным, и нахождения кратчайшего строчного покрытия этой матрицы. Следует затем сохранить значения рассматриваемого столбца в тех строках, которые войдут в найденное покрытие, и присвоить остальным компонентам столбца значение «—». Так находится оптимальное решение. Минимизация числа литералов. Если реализуемая программируемой логической матрицей система булевых функций от п переменных оказывается монотонной, то число столбцов во входной транзисторной матрице равно п. В общем же случае это число может достигать значения 2п. При этом произвольная система функций как бы сводится к монотонной путем удвоения числа аргументов, при котором множество аргументов хг, х2, . . ., хп заменяется на новое множество аргументов хх, х2, . . ., хп, %х, Х2, . . ., хп, рассматриваемых условно как независимые. Будем называть эти аргументы литералами. Именно им и соответствуют столбцы входной транзисторной матрицы. Рис. 52. ПЛМ, минимизированная по числу транзисторов.
19. ОПТИМИЗАЦИЯ ПЛМ ПО ВХОДУ 227 Уточним в связи с этим задачу минимизации числа столбцов во входной транзисторной матрице как задачу минимизации числа литералов в заданной системе частичных булевых функций. Рассматривая равные по длине булевы векторы а и Ь, будем говорить, что вектор а превышает вектор Ь, если и только если в них существует некоторая пара одноименных компонент at и bt со значениями а* = 1 и bt = 0. Введем в рассмотрение булев вектор превышения вектора а над вектором Ь, полагая, что он принимает значение 1 в тех и только тех компонентах, которым соответствуют значения at = 1 и bt — 0. Удвоение числа аргументов в системе сопроводим удвоением числа строк в матрице X, введя туда дополнительно инверсные значения для всех уже существующих строк. Полученную матрицу, строки которой соответствуют литералам исходной системы, обозначим через Z. Каждой упорядоченной паре (z2, zJ) столбцов этой матрицы соответствует свой вектор превышения. Будем считать, что он задает стандартным образом некоторое подмножество из множества всех литералов, и назовем это подмножество множеством превышения ъ{ над zJ. В основе излагаемого ниже метода минимизации числа литералов лежат следующие два утверждения. Если некоторый столбец у1 матрицы Y превышает столбец yJ, то в число литералов реализующей системы должен войти по крайней мере один из элементов множества превышения V- над zJ. Совокупность необходимых условий данного типа, находимая путем рассмотрения всех пар столбцов матрицы У, находящихся в отношении превышения, образует достаточное условие реализуемости. Эти утверждения позволяют свести рассматриваемую задачу, подобно предыдущим, к нахождению кратчайшего покрытия некоторой булевой матрицы, на этот раз — матрицы превышений, образуемой вектор-столбцами превышений для тех упорядоченных пар столбцов матрицы Z, которые соответствуют находящимся в отношении превышения столбцам матрицы У. Вернемся к старому примеру. Пусть 8*
228 ГЛ. 5. СИНТЕЗ ПЛМ а Ъ с d e "О 0 1 1 01 1 oiiooh 10 1113 0 10 0 0М 1110 0 5 Построим матрицу Z, отметив ее строки соответствующими литералами: о "1 0 1 1 0 0 0 1 0 0 1 1 b 1 1 0 0 0 0 0 0 1 1 1 1 с 0 0 1 0 1 1 1 1 0 1 0 0 d 1 1 1 0 1 0 0 0 0 1 0 1 е 0" 1 0 0 1 0 1 0 1 1 0 1 Анализируя матрицу У, замечаем, что большинство упорядоченных пар ее столбцов находится в отношении превышения. Исключение составляют пары (а, с), (d1 с), (е, а), (е1 с) и (г, d). Получим матрицу превышений, отмечая ее столбцы парами порождающих их столбцов матрицы 7л а Ъ "0 0 1 1 0 0 0 1 0 0 0 0 а d 0 0 0 1 0 0 0 1 0 0 1 0 о е 1 0 1 1 0 0 0 1 0 0 1 0 ь а 0 1 0 0 0 0 0 0 1 1 0 0 b с 1 1 0 0 0 0 0 0 1 0 1 1 b d 0 0 0 0 0 0 0 0 1 0 1 0 b е 1 0 0 0 0 0 0 0 0 0 1 0 с а 0 0 0 0 1 1 1 0 0 1 0 0 с ь 0 0 1 0 1 1 1 1 0 0 0 0 с d 0 0 0 0 0 1 1 1 0 0 0 0 с е 0 0 1 0 0 1 0 1 0 0 0 0 d а 0 1 0 0 1 0 0 0 0 1 0 0 d ь 0 0 1 0 1 0 0 0 0 0 0 0 d е 1 0 1 0 0 0 0 0 0 0 0 0 е ь 0" 0 0 0 1 0 1 0 0 0 0 0 1 2 3 4 5 6 г • 2' 3' 4' б' 6' а г1 0 1 1 0 0 ь 1 1 0 0 0 0 с 0 0 1 0 1 1 d 1 1 1 0 1 0 е 0" 1 0 0 1 0 1 2 3 4 > 5 6 Xi х> Хз ХА Хь хв Xi х> Хь х* хь Хо
19. ОПТИМИЗАЦИЯ ПЛМ ПО ВХОДУ 229 Для нахождения кратчайшего строчного покрытия этой матрицы применим метод редуцирования, последовательно удаляя то поглощающие столбцы, то поглощаемые строки. В результате матрица упрощается до следующего нередуцируемого далее минора: aabbbcddde bdadedabeb -О 0 0 0 1 0 0 0 1 0-. ! 001000 10002 1000000 1 1 О 3 OOOOOOllOlU 00000 1000 11'- 110001000012' ooiiooooool3' L0 1 0 1 1 0 0 0 0 0-1 5' Проведем расщепление возникшей критической ситуации по первому столбцу. Выберем сначала строку 3. Тогда процесс редуцирования возобновляется и доходит до получения строчного покрытия (2, 3, Г, 5'), которому соответствует совокупность литералов (х2, х3, Хг, Хъ), задающая следующую реализацию исходной системы: Х* = Рассмотрение другого варианта, связанного с выбором строки 2', приводит к получению равноценного решения (х1, xb1 %г, %3), задающего реализацию г— 1 1.0 — 1 0 0 1 — — 1 1 — о - 1 —_ 1 2 3 1 5 Y = "00110 0 110 0 10 111 0 10 0 0 1110 0 х*= Г1 0 L— 1 0 — — 0 1 1 — 1 —" 0 1 _ 1 2 3 » 5 Y = '00110 0 110 0 10 111 0 10 0 0 1110 0 В силу достаточности выполненного перебора вариантов при поиске кратчайшего покрытия матрицы оба решения являются оптимальными. Однако при дополнительной оптимизации по числу транзисторов второй вариант приводит к лучшему результату. Матрица X* сокращается
230 ГЛ. 5. СИНТЕЗ ПЛМ до значения Г— 1 — 1 —П х 0 — О — — 2 - 0 - - - з- — — 1 1 1 J5 Соответствующая система приведена на рис. 53. Обобщение метода на случай тройных информационных матриц. Допустим теперь, что матрица X исходной системы (X, Y) является троичной и задает некоторое множество непересекающихся интервалов пространства аргументов, а матрица У является булевой и задает значения функций системы на этих интервалах. В этом случае описанные процедуры оптимизации ПЛМ по входу сохраняют силу. Операции образования векторов различий и превышения для троичных векторов определяются так же, как и для булевых. Например, если и - 1 - 0 - 1 1 - 0, v = 1 1 - 1 0 0 0 1, то вектор различий для векторов и и v имеет значение 0 0 0 0 110 1, а вектор превышения и над v — значение 0 0 0 0 110 0. Пусть, например, исходная система булевых функций задана парой матриц Рис. 53. ПЛМ, минимизированная по числу литералов. х= а 1 — 1 0 — 1 — 0 ь 1 — 1 1 0 — 1 с 0 — — 1 — — 0 0 d — 1 0 — 1 1 — 1 е 1 -, 1 0 — 0 — 0 — 1 J 2 3 4 5 6 7 8 Y = а 1 1 0 0 ь 0 1 1 1 с 1 1 0 1 d 1 0 0 1 е 0 1 0 1
19. ОПТИМИЗАЦИЯ ПЛМ ПО ВХОДУ 231 Оптимизация по числу входных полюсов схемы производится, как и прежде, путем нахождения кратчайшего строчного покрытия матрицы различий, имеющей в данном случае следующий вид: aaaabbbccd bcdecdedee rO 1 0 0 1 0 0 0 1 On 1 00 0000000 I2 00 100100003 11000010104 pooooioooob' 0001000001» poooioooooh L0 0 1 1 0 0 0 1 1 0-1 8 а оптимизация по числу литералов — путем нахождения кратчайшего покрытия матрицы превышений а Ь ~0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 а d 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 а е 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 b а 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ь с 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 ъ d 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 b е 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 с а 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 с ъ 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 с d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 с е 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 d а 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 d ь 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 d е 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 е а 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 е d 0" 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 Решение этих двух задач удается совместить, найдя минимальную совокупность литералов {х1ч яг, х3, х3, #4, £4, д:6, £6, £8}. Последующая минимизация числа транзисторов в ПЛМ связывается с рассмотрением соответствующего строчного
232 ГЛ. 5. СИНТЕЗ ПЛМ минора матрицы X: Х* = а "1 1 0 1 0 6 1 1 1 — — с 0 — 1 — 0 d 0 — 1 — е 1 " — 0 0 — 1 3 4 6 8 d e в котором значения элементов xs и х% заменены на «—», поскольку литерал xs не вошел в решение. Для каждого из столбцов этого минора строится матрица различий с теми столбцами матрицы X, которым он должен оставаться ортогональным: ОТ | / о т li 7 о 1 U- /, л ■ 7° Т с~ . Ro \ О ° I 1 к -н i н р R >- м —о ГО 0 0] 0 1 0 1 0 0 0 0 1 Lo 1 ij у Рис. 54. Оптимальная реализация на ПЛМ системы частичных булевых функций, заданных на интервалах. У "0 0 0] 1 1 0 0 0 0 0 0 1 [_1 0 0 У '0 0] 0 0 0 0 1 1 Li oj Кратчайшие строчные покрытия этих матриц находятся элементарным образом. Элементы матрицы X*, соответствующие входящим в полученные покрытия строкам, сохраняют свои значения, остальные приобретают значение «—». В результате получаем оптимальную реализующую систему Х* = — — 0 — 0 1 1 1 — — 0 — — — 0 — 0 — 1 — — — — 0 — 1 3 4 У в 3 У = ri о 1 1 оп 1110 1 0 10 0 0 Lo 1 1 1 ij 1 2 ■V1 3 4 Соответствующая схема приведена па рис. 54,
20, МИНИМИЗАЦИЯ СИСТЕМЫ БУЛЕВЫХ ФУНКЦИЙ 233 20. Минимизация системы булевых функций Нахождение кратчайшей ДНФ системы булевых функций. Существенным параметром, определяющим сложность ПЛМ, является число I промежуточных переменных zu z2, . . ., z\, представляющих состояния выходных полюсов первой ступени, равное числу непосредственно соединенных с ними входных полюсов второй ступени. Другими словами, этот параметр задает число строк в структурной матрице Т и число столбцов в матрице S. Минимизация этого параметра при синтезе ПЛМ, реализующей некоторую заданную систему булевых функций, является достаточно сложной задачей теории булевых функций, известной под названием задачи совместной минимизации системы булевых функций в классе дизъюнктивных нормальных форм, а точнее говоря, получения кратчайшей ДНФ для системы булевых функций. Минимизируется в этом случае общее число различных элементарных конъюнкций, из которых образуются ДНФ, представляющие булевы функции заданной системы. Пусть исходная система F состоит из частичных булевых функций fi (здесь, как и далее, пробегает значения 1, 2, . . ., т), заданных соответственно характеристическими множествами М\ и Ми представляющими собой некоторые подмножества общего булева пространства М. Очевидно, что получение кратчайшей ДНФ системы F сводится к нахождению такого минимального множества интервалов пространства М, чтобы каждое из множеств М\ покрывалось совокупностью тех из них, которые не пересекаются соответственно с множеством М\. Точное решение этой задачи может быть получено следующим методом. Рассмотрим бинарное отношение принадлежности элементов пространства М множествам М], представляющее собой множество Р всех пар типа (rrij, к), где rrij — элемент булева пространства ikf, принадлежащий в то же время множеству М\, номер которого задан вторым элементом пары (rrij,к). Назовем некоторое подмножество из Р интер- валъно-поглощаемым, если существует такой интервал множества Af, который для каждой пары (rrij, к), принадлежащей данному подмножеству, содержит элемент rrij и не
234 ГЛ. 5. СИНТЕЗ ПЛМ пересекается с множеством А/£. Выделим из множества всех интервально-поглощаемых подмножеств максимальные, т. е. не содержащиеся в других, и построим булеву матрицу К, столбцы которой поставлены в соответствие с элементами множества Р, а строки представляют стандартным образом всевозможные максимальные интерваль- но-поглощаемые подмножества из Р. Получение кратчайшей ДНФ системы F сводится к нахождению кратчайшего строчного покрытия матрицы К. После его нахождения не составляет особого труда найти для каждого элемента покрытия соответствующий интервал пространства М. Для этого достаточно расщепить все пары (rrij, к), принадлежащие некоторому рассматриваемому максимальному интервально-поглощаемому подмножеству Pt (элементу найденного покрытия), на элементы rrtj и к и образовать из первых элементов некоторое множество ^, а из вторых элементов — множество St, затем найти для множества Qt минимальный покрывающий интервал пространства М и, если возможно, расширить его, но так, чтобы он не пересекся ни с одним из множеств Mb Для которых к ее St. Уточним этот метод для случая, когда система F задана парой булевых матриц X и Y. Специфика этого случая заключается в том, что области определения всех функций fi системы F совпадают, будучи равны множеству Мр вектор-столбцов матрицы X, причем число элементов этого множества, как правило, сильно ограничивается. Каждое максимальное интервально-поглощаемое подмножество Pt совпадает теперь с прямым произведением множеств Qt и St> представляя собой множество всевозможных пар, первый элемент которых выбирается из множества Qt, а второй — из множества St, и это произведение представляется некоторым единичным минором матрицы У. Поэтому каждое из множеств Pt, Qtn St однозначно определяет два других. Отсюда следует, что поиск максимальных интервально- поглощаемых множеств Pt можно заменить поиском соответствующих множеств Qt, которые мы будем называть существенными для рассматриваемой системы (X, Y). Таким образом, громоздкий перебор подмножеств из множества Р, производимый при поиске максимальных интер-
20. МИНИМИЗАЦИЯ СИСТЕМЫ БУЛЕВЫХ ФУНКЦИЙ 235 вально-поглощаемых подмножеств, заменяется теперь на менее трудоемкий перебор подмножеств на множестве Mfj при котором отыскиваются все существенные подмножества. Отсюда следует также, что множество всех существенных подмножеств из Mf может быть получено следующим путем. Найдем сначала независимо для каждой функции ft системы F все максимальные интервально-поглощаемые подмножества множества М\, а затем образуем всевозможные различные пересечения тех из них, которые соответствуют различным функциям /,-. Получаемое в результате множество подмножеств из Mf и будет являться множеством всех существенных подмножеств. Пример. Пусть Х = 1 0 1 0 1 .0 2 1 0 1 1 1 3 0 1 1 0 1 4 0 0 1 1 0 б 0 1 0 0 1 6 г 1 1 0 0 1 2 3 4 б У = 1 "1 1 0 1 1 0 2 0 1 1 1 0 1 3 0 1 1 0 0 0 4 1 0 0 1 1 0 5 0 1 0 0 1 0 6 °1 0 1 1 о 1 Рассматривая независимо функции ft, найдем описанным ранее методом для каждой из них множество всех максимальных интервально-поглощаемых подмножеств в множестве М\. Результат представим следующей секционированной булевой матрицей, каждая секция которой задает перечень найденных подмножеств для соответствующей функции: 1 1 1 0 0 0 0 1 1 0 2 0 0 1 1 1 0 1 0 1 3 0 1 1 1 0 1 0 0 0 4 1 0 0 0 0 0 1 1 0 б 0 1 1 0 0 0 0 0 0 в 01 0 0 0 1 1 0 1 1 1 2 3 4
236 ГЛ. 5. СИНТЕЗ ПЛМ |1 0 0 1 0 0| * |1 О О О 1 0| 10 1 О О О 1]« Далее ищутся всевозможные пересечения (покомпонентные конъюнкции) строк, принадлежащих различным секциям. Они и будут представлять искомые существенные подмножества из Mf- Получаем 12 3 4 6 6 "1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0" 0 0 0 0 1 1 0 1 0 0 1 2 3 4 5 в 7 8 9 10 11 Найдя таким образом все существенные множества Qt (для удобства они пронумерованы), однозначно определяем соответствующие им множества St как подмножества функций системы F, принимающих значение 1 на всех элементах множества Qt, т. е. как подмножества строк в матрице У, поглощающих вектор-строку, представляющую существенное множество Qt. Максимальное интервально-поглощаемое подмножество Pt из Р представляется единичным минором матрицы У, образуемым пересечением этих строк с теми столбцами, которые' соответствуют элементам множества Qt. Присвоим затем для удобства индивидуальные имена всем элементам множества Р, показав вводимую нумера- "а в 0 к о 0 0 г ж л 0 с 0 Д 3 0 0 0 б 0 0 м ы 0 0 е 0 0 Р 0 0" 0 и н 0 т 1 2 3 4 > б 6
20. МИНИМИЗАЦИЯ СИСТЕМЫ БУЛЕВЫХ ФУНКЦИЙ 237 и построим булеву матрицу К, задающую все подмножества Pt: а б в гдежзиклмнопр с т '11000000010101100 0" 001011000000000000 000000010100 000000000000 110 0 00000000 к = 0 0 10 0 1 0 0 0 111 0 0 0 110 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 11 000000000 000000000 10 10 0 0 0 0 0 0 10 10 0 0 11 000000000 1110 0 0 0 0 0 10 110 0 0 0 0 10 0 0 10 0 0 0 000100100010000010 1 2 3 4 5 в 7 8 9 10 11 Кратчайшее строчное покрытие этой матрицы находится простым редуцированием: сначала в решение включаются строки 1, 3 и 6, для каждой из которых в матрице находится столбец, где только эта строка содержит значение 1, затем выбирается строка 5, покрывающая оставшиеся непокрытыми столбцы. Отберем далее из существенных множеств Qt те, которые соответствуют вошедшим в кратчайшее покрытие строкам матрицы К: 1 2 3 4 5 6 "10 0 10 0]! 1 0 0 0 1 О 3 0 1 1 О О О б> _0 1 0 0 0 1J в и, рассматривая образующие эти множества совокупности столбцов матрицы К, построим для них минимальные покрывающие интервалы, представив их столбцами троичной матрицы Х* = 0 — 1 — 1 — (например, первый из них получается в результате соответствующей операции над столбцами 1 и 4 матрицы X).
238 ГЛ. 5. СИНТЕЗ ПЛМ Представляя соответствующие множества St вектор- столбцами, образуем из них булеву матрицу '1 0 0 0] 0 110 у*__ 0 0 11 10 0 1 110 0 0 0 0 1 Полученная в результате система матриц (X*, У*), интерпретируемая как ДНФ некоторой системы булевых функций F*, реализует исходную систему (X, У), обладая при этом минимальным числом элементарных конъюнкций. Ее можно упростить далее, применив описанный ранее метод замены значений некоторых элементов матрицы X* с 0 или 1 на «—». В данном случае этот метод приведет к следующему результату: Х* = — — — 1 1 — 011 0 — 1 —_ Г1 о о о" 0 110 0 0 11 10 0 1 110 0 0 0 0 1 У*: Рис. 55. Реализация системы частичных булевых функций, минимизированная по числу про- На рис. 55 показана непосред- межуточных полюсов. ственная схемная реализация полученной системы. Метод выделения интервальных миноров. Поскольку каждое интервально-поглощае- мое подмножество из множества Р представляется на матрице У некоторым единичным минором, можно попытаться свести задачу построения кратчайшей ДНФ, реализующей систему (X, У), к нахождению некоторого кратчайшего минорного покрытия матрицы У, т. е. к уже знакомой нам задаче, подробно рассмотренной в связи с оптимиза-
20. МИНИМИЗАЦИЯ СИСТЕМЫ БУЛЕВЫХ ФУНКЦИЙ 239 Цией одноярусных схем, описываемых уравнением У = = В^Х. Однако рассматриваемая сейчас задача осложняется тем, что покрытие должно конструироваться не из любых единичных миноров, а лишь из таких, у которых множество соответствующих столбцов матрицы X образует интер- вально-поглощаемое подмножество для каждой функции/;, соответствующей некоторой строке минора. Обладает ли этим свойством некоторый единичный минор матрицы У или нет, можно узнать лишь на основе информации, заключенной в матрице X. В соответствии с этим будем называть единичные миноры матрицы У, обладающие данным свойством, интервальными минорами системы (X, У). Стандартным образом определяются максимальные из них, и оказывается, что при поиске оптимального решения имеет смысл ограничиться рассмотрением только таких миноров. Итак, кратчайшая ДНФ системы (X, Y) может быть найдена путем дизъюнктивного разложения матрицы Y на минимальную совокупность интервальных миноров данной системы. В некоторых случаях этот метод приводит к искомому решению быстрее, чем предыдущий. Продемонстрируем это на уже знакомом примере. Пусть Х = В матрице У легко выявляются существенные элементы у\ и у\. Первый из них определяет максимальный минор, образуемый пересечением столбцов 1 и 4 со строками 1, 4 и 5. Минимальный покрывающий интервал для соответствующих ему столбцов 1 и 4 матрицы X имеет значение 0 1 0 и не содержит, как нетрудно проверить, других элементов множества Mf, откуда следует, что данный минор является интервальным и может быть включен в решение. Аналогично показывается, что интервальным является и минор, определяемый элементом у\. Отмечая 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 г 1 1 0 0 1 2 3 4 5 1 "1 1 0 1 1 0 2 0 1 1 1 0 1 3 0 1 1 0 0 0 4 1 0 0 1 1 0 5 0 1 0 0 1 0 6 0" 0 1 1 0 1 1 2 3 4 5 6
240 ГЛ. 5. СИНТЕЗ ПЛМ знаком + покрываемые этими минорами элементы матрицы Уш преобразуем последнюю к виду + 1 0 + + 0 0 1 + + 0 + 0 1 1 0 0 0 -1- 0 0 + + 0 0 1 0 0 1 0 0 " .0 + + 0 ч- 1 2 3 4 5 6 Здесь находятся определяющие элементы yl и yl, определяемые которыми миноры также оказываются интервальными и покрывают остальные единичные элементы матрицы У. В результате матрица У разлагается на четыре интервальных минора системы (X, Y) 10 0 10 0" 0 0 0 0 0 0 0 0 0 0 0 0 10 0 10 0 10 0 10 0 0 0 0 0 0 0 У "0 0 0 0 0 0 "0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 о.о 0.0 0^0 0 0 0 0 0 0 0 0 0 0 0 0 0 .1 0 0 1 0 0" 0 1 1 0 \ш 0" 0 0 0 0 0 » "000000 0 110 0 0 0 110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 • Для каждого из этих миноров находится далее соответствующая пара столбцов матричной системы (X*, У*), реализующей исходную систему (X, У). В матрицу У* при этом вводится столбец, задающий строки минора, а в матрицу X* — столбец, представляющий минимальный покрывающий интервал для соответствующих столбцов матрицы X. Так получается решение Х* = 0 — — 1 0 1 — 1 — — — — 1 — 1 0 " 1 0 — — _ 1 2 3 4 5 у* = '10 0 0" 0 0 11 0 110 110 0 10 0 1 0 10 0 1 2 13 4 5 в
20. МИНИМИЗАЦИЯ СИСТЕМЫ БУЛЕВЫХ ФУНКЦИЙ 241 упрощаемое затем описанным выше методом минимизации числа единиц и нулей в матрице X* до следующего ее вначения — 1 1 0 . Lo — 1 —J Сравнивая это значение с полученным ранее при решении этой же задачи, убеждаемся, что они совпадают (с точностью до перестановки столбцов, которая не имеет существенного значения). Поиск приближений к оптимальному решению. С ростом числа столбцов в матрицах X и У нахождение точного решения рассматриваемой задачи может стать практически невозможным из-за огромного числа различных интервальных миноров системы (X, У). В этом случае приходится отказываться от рассмотрения всех их и переходить к конструированию некоторых приближений к кратчайшей ДНФ. При оценке качества получаемых при этом решений можно ориентироваться на такой параметр системы, как число элементов в кратчайшем минорном покрытии матрицы У. Очевидно, что число столбцов в матрицах X* и У*, реализующих систему (X, У), не может быть меньше этого параметра. По аналогии с методами минимизации одной булевой функции методы минимизации системы (Ху У) можно разбить на два класса, включив в первый из них такие, когда интервальные миноры, из которых конструируется решение, находятся последовательно, а во второй — параллельно. В первом случае в матрице У выбирается некоторый элемент и рассматривается как элементарный минор, и этот минор расширяется до некоторого максимального интервального минора, покрывающего часть единичных элементов матрицы У. Затем выбирается один из оставшихся непокрытыми элементов, находится новый минор, и так до тех пор, пока не будет получено некоторое минорное покрытие матрицы У. Во втором случае параллельно ве-
242 ГЛ. 5, СИНТЕЗ ПЛМ дется расширение нескольких миноров, и очередной шаг заключается в выборе некоторого непокрытого элемента и расширении некоторого из миноров, так чтобы он покрыл этот элемент, или, если такого минора не найдется, введении нового минора. Очевидно, что выбор элементов, миноров и конкретных шагов расширения минора должен производиться каждый раз каким-то «достаточно оптимальным» образом. Используемые с этой целью критерии выбора могут быть весьма разнообразны. Рассмотрим один из методов минимизации системы (X, У), относящийся к первому классу, иллюстрируя его по ходу изложения на следующем нетривиальном примере: а Ъ с d e f g h г j к I mnop q r s t 1100100110001011011 l-.1 101001000001 111 11 1 0 0 2 11001100 10 11 0000 10003 0010101 10101000001014 01110100001001001 1 0 0 5 > 110001111010100100116 0011001 10100001000117 L10011000 1101011 1010 lJ 8 0010001101000100110 l]i 110100011000111100112 010001000010000010003 11001100 1 1 1 1001 1 10014# 10100100000 11 101 1100* 011101110110011110016 z = Y = Решая поставленную задачу, естественно искать как можно более крупные интервальные миноры, содержащие возможно большее число единиц. Лишь в этом случае можно надеяться найти покрытие матрицы Y из небольшого числа миноров. Целенаправленность поиска при этом увеличивается, когда удается заметить некоторый минор, целесообразность включения которого в решение не вызывает сомнения. В данном случае таким оказывается максимальный ми- нор, определяемый существенным элементом z/3 и оказывающийся интервальным: соответствующие ему вектор-
20. МИНИМИЗАЦИЯ СИСТЕМЫ БУЛЕВЫХ ФУНКЦИЙ 243 столбцы матрицы X 10 10 110 0 Ъ 0 110 110 0 / 0 0 1*01100 к 0 110 10 0 0 q (для удобства они показаны транспонированными) определяют минимальный покрывающий интервал 10 1-00, не пересекающийся с остатком множества Mf- Отметив значением + покрываемые этим минором эле- менты матрицы а Ь с d e / г = '0 0 10 0 0 11 0 10 0 0 + 000 + 1+001 + 10 10 0 1 0 4-110 + g h i j к 110 10 0 110 0 0 0 0 0 + 0 0 11 + 0 0 0 0 0 110 1 + 1 0 0 0 1 1 0 т п 0 1 1 1 0 0 0 0 1 1 0 1 о 0 1 0 1 0 1 р 0 1 0 1 1 1 Q 1 0 + + 1 + г s t 1 0 Г 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 2 3 4 > 5 6 обратим внимание на элемент yl, оказывающийся единственным единичным элементом в своем столбце. Покрывающие его интервальные миноры, следовательно, однострочны и представляют интервально-поглощаемые подмножества множества М\. Выбор лучшего из них несложен — им оказывается минор (4) X (а, е, i, у, Z, о, р, t), т. е. минор, образованный пересечением строки 4 со столбцами а, е, i, /, I, о, р, t. Он содержит все непокрытые пока единицы в строке 4, и соответствующий ему интервал — — — — 0 — — 1 не пересекается с множеством М\. Этот минор принимается в качестве второго элемента решения. Рассмотрим далее элемент у%, также единственный единичный элемент в своем столбце. Однако, в отличие от предыдущего, он не образует вместе с другими непокрытыми единичными элементами своей строки интервально-по- глощаемого подмножества. Поэтому естественно поставить задачу нахождения такого интервального минора, который покрывал бы вместе с элементом у\ максимальное
244 ГЛ. 5. СИНТЕЗ ПЛМ количество непокрытых единичных элементов строки 2, находящихся в столбцах a, b, d, h, i, m, n, о, р, t. Эта вспомогательная задача решается следующим образом. Из перечисленных столбцов образуется один минор матрицы X, а из столбцов, одноименных с теми столбцами матрицы У, которые имеют в строке 2 значение О, —другой минор. Затем оба минора преобразуются путем инверсирования тех строк, в которых вектор- столбец Xs имеет значение 1, и обозначаются соответственно через D и Е. Далее находится такое строчное покрытие матрицы Е, чтобы соответствующая совокупность строк в матрице D оставляла непокрытыми максимальное число столбцов. Эти столбцы будут представлять собой элементы множества М\, покрываемые найденным интервалом, а сам интервал определится выбором значений 0 и 1 из вектора Xs в строках, вошедших в покрытие, и присвоением значения «—» остальным компонентам представляющего его троичного вектора. В данном случае а г° 1 1 0 0 0 1 U ь 0 0 1 0 1 0 1 0 d 1 0 0 0 1 1 0 1 h 0 0 0 1 0 0 0 0 г 0 0 1 0 0 0 1 1 т 0 1 0 0 0 0 1 0 п 1 1 0 0 1 1 1 1 О 0 1 0 0 0 1 0 1 р 0 1 0 0 0 0 1 1 S 0 0 0 0 0 0 0 0 * Оп 0 0 1 0 0 0 1- 1 2 3 4 б i в 7 8 с rl 1 0 1 1 1 0 Lo е 0 0 1 1 0 1 1 1 / 1 1 1 0 1 0 1 0 8 1 0 0 1 0 0 0 0 3 1 0 0 1 0 1 0 1 к 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 Q 1 1 1 0 1 1 1 0 г °1 1 0 1 1 1 1 1- 1 2 3 4 б • в 7 8 Оптимальным решением является здесь пара строк 1 и 6, формирующая из столбца хв интервал 1 — 1 , ортогональный множеству М\ и покрывающий восемь элементов множества М\. Соответствующий одностроч-
20. МИНИМИЗАЦИЯ СИСТЕМЫ БУЛЕВЫХ ФУНКЦИЙ 245 ный интервальный минор (2) X (a, b, h, i, m, p, s, t) принимается в качестве третьего элемента строящегося минорного покрытия матрицы У. После этого матрица У получает следующий вид: Ь с d e f g h' I m 7i о р q r s Y = 0 0 1000 110 100 + + 01000 + + 000 0 +000+0000-4-0 + + 00 + +00 + + + + o 101001000001 0+110+1101+0 0 + 0 0 1 0 10 0 110 1" 11 +0 0 + + 0 0 0+000 0 + + + 0 0 + 10 1110 0 111+001 1 2 3 4 5 6 Здесь обращает на себя внимание строка 2, в которой остались лишь три непокрытые единицы, и строка 6, также содержащая единицы в соответствующих столбцах. Находя для одноименных столбцов матрицы X минимальный поглощающий интервал 00 — 0 — 1, мы убеждаемся, что он не содержит иных элементов множества MF, следовательно, упомянутые шесть элементов матрицы У образуют интервальный минор. Было бы неплохо расширить его, чтобы он захватил еще некоторые непокрытые пока единичные элементы. С этой целью мы опять решаем вспомогательную задачу с булевыми матрицами D и Е, образуемыми из матрицы X. Только на этот раз в них не включаются строки, в которых вектор-интервал 00 — 0 — 1 имеет значение «—», матрица Е образуется из всех тех столбцов, соответствующие которым столбцы матрицы У содержат нуль в строке 2 или в строке 6, а матрица D — из тех столбцов, где матрица У имеет непокрытую единицу в строке 6 и покрытую в строке 2: Е = Очевидно, что решение данной задачи единственно — это совокупность строк 3, 4 и 8. Ему соответствует интервал 00 1 и интервальный минор (2, 6) X (d, п> °i Р) — четвертый элемент минорного покрытия матрицы У. D = h p t -о о on 10 1 111 Li о oj a rl 0 1 Lo с 0 1 0 1 e 1 1 0 0 / 1 0 1 1 g г Э 0 1 0 1 0 1 1 1 0 1 0 0 fr I m q r s 110 10 0" 0 10 0 10 10 10 0 1 10 110 1. 3 4 6 8
246 ГЛ. 5. СИНТЕЗ ПЛМ X 2 &- 3 о- 4 ^ 5 о- 6 *■ 7 о- Далее аналогичным образом рассматриваются непокрытые единицы строки 6, образующие вместе с соответствующими элементами строки 1 интервальный минор (1,6) х X (с, g, h, /, t), расширить который не удается, затем — непокрытый остаток единиц в строке 1, образующий с соответствующими элементами строки 5 интервальный минор (1,5) X (с, n,q, r), расширенный на столбец с, наконец, все остальные непокрытые единичные элементы матрицы Y входят в интервальный минор (5) X (а, /, Z, га, гс, Р, ?, г). Так находится семиэле- ментное минорное покрытие матрицы У. Переходя от образующих его интервальных миноров к соответствующим парам столбцов в матрицах X* и У* реализующей систе- 8 о- Рис. 56. ПЛМ, синтезированная методом минимизированного покрытия матрицы Y интервальными минорами. , получаем след Х* = ующии результат: -1 л 1 — — 0 — - — - - - 0 1 - - 1 0 — — — 1 — — — 1 — — 0 - л п Y* 1 - 1 — — ГО 0 0 0 1 1 01 0 0 110 0 0 10 0 0 0 0 0 110 0 0 0 0 0 0 0 0 0 11 10 0 110 0 1 1 3 4 6 6 7 S 2 3 4 • 5 6 По найденным матрицам легко строится схема, изображенная на рис. 56.
21. СИНТЕЗ ПЛМ С ЗАДАННОЙ ВЫХОДНОЙ МАТРИЦЕЙ 247 Рассмотренный пример оказался относительно легким, и его удалось решить своеобразным редуцированием, гарантирующим в данном случае оптимальность полученного результата. В более сложных ситуациях описанный метод таких гарантий не дает. 21. Синтез ПЛМ с заданной выходной матрицей Постановка задачи. Вернемся к рассмотрению задачи построения схемы, генерирующей заданное множество выходных булевых векторов. Ранее мы искали такую схему в классе одноярусных схем, описываемых операторами Z?v или Tv, теперь будем искать ее среди ПЛМ—двухъярусных схем, описываемых операторной композицией *) В^ТА. Представляя, как обычно, множество выходных векторов булевой матрицей У, опишем поведение ПЛМ матричным уравнением У = ВУТ^Х, в котором все величины, кроме У, неизвестны. Синтез искомой схемы сводится к решению данного уравнения, т. е. к нахождению удовлетворяющих ему значений матриц S, Т и X. При этом важно найти не просто некоторое решение (это довольно легко), а по возможности оптимальное решение. Критерием оптимальности в данном случае служат те размеры рассматриваемых матриц, которые можно варьировать. Допустим, что исходная матрица У содержит m строк и I столбцов. Обозначив это соответствующей индексацией матрицы (У = У(т>/)), укажем аналогичным образом размеры остальных матриц: ^(т, I) = 8(т, Р)Т(Р, п)Х(п, /)• Соседние матрицы в правой части уравнения оказываются равными по значению одного из введенных параметров, что позволяет записать уравнение в более компактной *) Выражаясь точнее, ПЛМ описывается композицией ~~] Z?vrA-~"|, однако исследование последней сводится к исследованию В^ТА. ^
248 ГЛ. 5. СИНТЕЗ ПЛМ форме: тУ I — mBpTnXu где число строк в любой из входящих в уравнение матриц показывается левым индексом матрицы, а число столбцов— правым. Как видно, уравнение в целом характеризуется четырьмя параметрами т, р, п и Z, из которых два (т и I) заданы, а остальные два (р и п) могут варьироваться. Очевидно, что оптимизация искомого решения должна сводиться к минимизации именно этих параметров р и п. Параметр п задает число входных переменных синтезируемой схемы, т. е. число ее входных полюсов, в то время как параметр р задает число промежуточных переменных, т. е. ширину ПЛМ. Лучше всего было бы найти такую ПЛМ, в которой оба параметра принимали бы минимальное значение, однако это не всегда возможно. В связи с этим целесообразно рассмотреть несколько вариантов постановки задачи, отличающихся друг от друга тем, что в одних случаях предпочтение отдается одному из данных параметров, в других случаях — другому. Число входных полюсов в ПЛМ считается обычно более важным параметром, чем ее ширина, что отражается присвоением параметру п высшего приоритета. В этом случае оптимизация синтезируемой ПЛМ будет сводиться в первую очередь к минимизации п и уже во вторую очередь к минимизации р. Однако возможны такие практические ситуации, когда высший приоритет следует присваивать параметру р, например, когда ограничения на ширину ПЛМ оказываются более существенными. В этих случаях минимизация параметра п будет лишь сопровождать минимизацию параметра р и подчиняться ей. Достаточно реальной оказывается и такая ситуация, когда оба параметра пир приходится «вгонять» в некоторые заранее заданные рамки. С такой ситуацией мы сталкиваемся, когда синтезируется ПЛМ стандартных размеров, заранее ограничивающих как число входных полюсов схемы, так и ее ширину. Синтез «от входа». Будем считать, что все столбцы матрицы Y различны, поскольку переход к противному случаю достаточно прост: одинаковым столбцам в мат-
21. СИНТЕЗ ПЛМ С ЗАДАННОЙ ВЫХОДНОЙ МАТРИЦЕЙ 249 рице Y можно поставить в соответствие одинаковые же столбцы во входной матрице X. Очевидно, что минимальное значение п равно ]log2 Й — целому, ближайшему сверху к двоичному логарифму числа /. Присвоив параметру п именно это значение, без труда можно построить входную матрицу Х(п> г), в которой не будет одинаковых столбцов. Для этого достаточно, например, использовать в качестве столбцов двоичные коды чисел 1, 2, . . ., Z. После этого останется найти операторную композицию BVTA, для чего может быть использован описанный ранее метод совместной минимизации системы булевых функций в классе дизъюнктивных нормальных форм. Однако значение р может оказаться при таком подходе далеко не минимальным. Пусть например, У = гО 0 1 0 0 о 1 1 L0 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1- 1 1 1 0 0 0 0 1. 1 2 3 4 б 6 7 8 9 В данном случае 1= 10, следовательно, rcmin = 4. Реализуя описанный подход, получаем матрицу X: Х = 0 000000011" 0 0 0 0 11110 0 0 0 110 0 110 0 .0101010101. Тем самым мы получаем девять частичных булевых функций /х, /2,. . ., /9 от четырех переменных хх, х2, х9, х± (см. рис. 57). Минимизируя эти функции в классе дизъюнктивных нормальных форм, мы должны стремиться найти минимальную совокупность некоторых интервалов булева пространства М (пространства булевых переменных хх, х2, х3, а;4) так, чтобы этими интервалами можно было покрыть характеристическое множество М\ любой из рассматривав
250 ГЛ. 5. СИНТЕЗ ПЛМ емых функций /,-, не захватывая при этом элементов из соответствующего множества М?. Однако легко убедиться в том, что для данного примера не существует решения лучшего, чем тривиальное решение, образуемое совокупностью всех элементов булева пространства, на которых определены функции и которые представлены столбцами матрицы X. Это решение получается непосредственной реализацией постолбцового соответствия между матрицами X и У. Действительно, в искомое решение должен входить, например, элемент 0 0 10 (на котором хх = 0, х2 = 0, щщга I ЯК ВИН Н^Н X?* f7 f8 f9 Рис. 57. Подлежащая реализации система частичных булевых функций. х3 = 1 и я4 = 0), поскольку он, принадлежа характеристическому множеству М\ и не имея там соседей, образует вместе с элементом 10 10 один из максимальных интервалов множества М\ (J Ml. Аналогичным образом устанавливается необходимость включения в решение также элементов 0001, 1000 и 1001, образующих максимальные интервалы соответственно в множествах М\ (J U Щ, М\[}ЩпМ\[} Щ. Легко показать далее, что если в минимальное решение с необходимостью входит некоторый одноэлементный интервал, а в некотором М\ существует содержащий его двухэлементный максимальный интервал множества М\ (J
21. СИНТЕЗ ПЛМ С ЗАДАННОЙ ВЫХОДНОЙ МАТРИЦЕЙ 251 (J Ml, то в минимальное решение можно включить и другой из содержащихся в этом двухэлементном интервале элементов. Пользуясь этим правилом, введем в искомое решение элементы 0011 и 000 0. Небольшой перебор возможных вариантов покрытия остальных четырех элементов 0100, 0110, 0111 и 0 10 1 убедит нас в том, что и эти элементы можно включить в решение, гарантируя при этом его оптимальность. Таким образом доказывается, что тривиальное решение содержит в данном случае минимальное число интервалов или соответствующих им элементарных конъюнкций. Можно лишь понизить ранги некоторых из них, рационально доопределив рассматриваемые частичные функции на области М~, общей для всех функций, и заменив элементы решения 0 0 1 0, 0 0 1 1, 0 1 0 0, 0 101, ОНО, 0111, 100 0, 1001 соответственно на — 010, —011, -1 0 0, -1 0 1, - 1 1 0, — 111,1 0,1 1. Однако это упрощение не изменяет числа промежуточных переменных в синтезируемой схеме, т. е. ее ширину. Полученное решение показано на рис. 58. Очевидно, что для того, чтобы действительно минимизировать ширину ПЛМ, генерирующей заданное множество выходных векторов, нужно как-то согласовать входные наборы с соответствующими им выходными наборами, а не вводить их произвольно, как это по существу было сделано в рассмотренном примере. Синтез «о т в ы х о д а». Минимизировать ПЛМ по ширине можно, синтезируя схему «от выхода». Соответствующий метод, описываемый ниже, основан на том очевидном факте, что минимальное значение параметра р X 1 1 ° Ц_ ■> о , * ь_ 1 1 3 ° ь_ 1 1 4° Li_ •"Г L/ 1 т * 1 ' i * г * ' i 1 ~т~^ 1 1 U з 1 L * « / о Ч ° Э —об -*8 S—f> n ц Рис. 58. Минимизированная по числу промежуточных полюсов ПЛМ, реализующая заданную систему булевых функций (см. рис. 57). В данном случае решение оказывается тривиальным.
252 ГЛ. 5. СИНТЕЗ ПЛМ равно мощности кратчайшего минорного покрытия матрицы У. Пользуясь этим методом, следует, однако, помнить, что минимизируя схему по ширине, можно упустить решение с минимальным числом входных переменных. Дело в том, что после получения некоторой совокупности единичных миноров, покрывающей матрицу У, нужно будет найти для каждого из них соответствующий интервал булева пространства М, а для каждого столбца матрицы У — соответствующий элемент пространствам (этотэлемент будет затем представлен некоторым столбцом матрицы Аг). Искомые интервалы должны быть связаны друг с другом отношениями пересечения, образующими довольно сложную систему, представляемую совокупностью тех подмножеств столбцов матрицы У, которые соответствуют полученным минорам. Эти подмножества столбцов будут в свою очередь задавать некоторые подмножества элементов пространствам. Каждый из интервалов должен содержать все элементы соответствующего подмножества из Мине содержать элементов, поставленных в соответствие остальным столбцам, не входящим в рассматриваемый минор. Чем сложнее окажется система в целом, тем труднее будет реализовать все представленные в ней отношения пересечения и тем больше входных переменных может для этого понадобиться. Одним из путей упрощения описанной системы отношений пересечения интервалов является сокращение горизонтальных размеров у миноров, образующих покрытие матрицы У, в результате чего уменьшается число элементов, которые должны принадлежать соответствующим интервалам. Вертикальные размеры миноров, как нетрудно видеть, оказываются несущественными с данной точки зрения. Поэтому при поиске кратчайшего минорного покрытия целесообразно отдавать предпочтение максимальным минорам, вытянутым по вертикали, за счет их горизонтальных размеров. Учитывая эти соображения, вернемся к рассмотрению матрицы У (стр. 253) и будем конструировать ее минорное покрытие, стремясь к тому, чтобы оно было минимальным. В данном случае довольно эффективной окажется итеративная процедура выбора столбцов, минимальных по числу непокрытых единиц, и отыскания для них максимальных миноров, покрывающих эти единицы.
21. СИНТЕЗ ПЛМ С ЗАДАННОЙ ВЫХОДНОЙ МАТРИЦЕЙ 253 У = 1 гО 0 1 0 0 0 1 1 Lo 2 1 1 1 1 1 0 0 0 0 3 1 1 0 0 1 1 0 1 0 4 0 0 1 1 0 0 1 1 1 б 0 1 1 1 0 0 0 0 1 в 1 0 1 1 0 0 1 0 1 7 0 1 0 0 0 1 0 1 0 8 1 1 0 0 0 1 1 1 1 9 0 1 1 0 0 1 1 1 0 10 1- 1 1 1 0 0 1 0 1_ 1 2 3 4 5 6 7 8 9 На первом шаге выбирается столбец 1 и строится соответствующий ему максимальный минор, образуемый пересечением строк 3, 7, 8 со столбцами 1, 4 и 9. Символически этот шаг можно записать как 1-й шаг: 1-» (3,7,8) х (1,4,9). После этого покрытые элементы матрицы Y получают неопределенное значение «—», и матрица принимает следующий вид: 1 •0 0 — 0 0 0 — — 0 2 1 1 1 1 1 0 0 0 0 3 1 1 0 0 1 1 0 1 0 4 0 0 — 1 °1 0 — — 1 б 0 1 1 1 0 0 0 0 1 в 1 0 1 1 0 0 1 0 1 7 0 1 0 0 0 1 0 1 0 8 1 1 0 0 0 1 1 1 1 9 0 1 — 0 0 1 — — 0 10 1- 1 1 1 0 0 1 0 1. 2 3 4 5 6 7 8 9 Минимальными по числу непокрытых единиц становятся столбцы 4 и 9, На втором шаге выбирается первый из этих столбцов и строится покрывающий его минор. 2-й шаг: 4 -► (3, 4, 9) Х(4, 5, 6, 10). Аналогично проходятся следующие шаги: 3-й шаг: 5 -► (2, 3, 4) х (2, 5,10), 4-й шаг: 2-»-(1, 5) X (2, 3), 5-й шаг : 6 -+ (1, 7, 9) х (6,8,10), 6-й шаг: 9 -* (2, 6,8) х (3, 7, 8,9).
254 ГЛ. 5. СИНТЕЗ ПЛМ В результате исходная матрица Y представляется в виде* произведения 0 0 1 0 0 0 1 1 .0 0 0 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 On 1 0 0 0 1 0 1 0. X "1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 1 0 которое можно рассматривать как одно из решений матричного логического уравнения Y = Z?VZ с заданным значением матрицы У. Это решение определяет структуру последнего яруса искомой ПЛМ и значение промежуточной информационной матрицы Z. Остается синтезировать первый ярус ПЛМ — схему, описываемую матричным оператором ТА и генерирующую полученную матрицу Z. Другими словами, надо решить уравнение Z = ТАХ с заданной матрицей Z, стремясь при этом минимизировать число строк в матрице X. Поскольку оператор ТА эквивалентен суперпозиции jZ*v |, уравнение Z = TAX можно заменить эквивалентным ему уравнением Z = TVX и свести рассматриваемую задачу к нахождению кратчайшего парного минорного покрытия матрицы [0 1 1 0 1 1 1 1 0 Г 1110 0 0 1110 10 110 11110 10 0 1111111 111110 10 10 110 1110 0 0 1 z = Один из методов решения последней задачи был уже рассмотрен. Однако он оказывается довольно трудоемким при относительно большом числе единиц в матрице, когда возрастает число максимальных миноров. В связи с этим рассмотрим другой метод, позволяющий работать непосредственно с матрицей Z без ее инверсирования и более эффективный в данном случае, когда число единиц в матрице Z относительно невелико.
21. СИНТЕЗ ПЛМ С ЗАДАННОЙ ВЫХОДНОЙ МАТРИЦЕЙ 255 Метод конструирования пересекающихся интервалов. В своей непосредственной постановке интересующая нас задача решения уравнения Z = ТАХ, в котором задано лишь значение матрицы Z, может быть интерпретирована следующим образом. Для данной булевой матрицы Z размером р на I требуется найти систему элементов аг, а2, ..., а\ булева пространства М и систему интервалов иг, и2, ..., ир этого же пространства, удовлетворяющих следующим условиям: а) at ЕЕ и^ если z)= 1, и а%ф.щ, если z) = 0; б) размерность булева пространства М должна быть при этом минимальна. При отсутствии второго условия задача решалась бы весьма просто: в качестве искомых элементов можно взять столбцы матрицы Z, а в качестве интервалов — троичные векторы той же длины с одной единицей в соответствующей позиции и значением «—» всех остальных компонент. При этом размерность пространства М окажется равной числу строк в матрице Z. Однако такое решение тривиально и приводит к тождеству X = Z, свидетельствующему о практическом отсутствии какого-либо преобразования. Действительно, в этом случае оператор первого яруса синтезируемой ПЛМ становится единичным, в чем можно убедиться на рассматриваемом конкретном примере: Z = '10 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 "1 - - 1 __ _ — — _ — 1 1 0 0 0 0 — — 1 -— — 0 0 0 1 1 0 1 0 0 0 0 0 0 10 0 0 1 — — — — _ __ 1 - - 1 0 1 0 0 0 0 0 0 1 0 1 1 —" — — — — 1 л 0" 1 1 0 1 0_ '1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 10 0 0 0 10 1110 0 0 1 0 10 0 0 0 1 0 0 0 0 0 0 0 0 0 10 10 1 0 0 0 1110 Попытаемся теперь найти лучшее решение. Очевидно, что оно будет оптимальным, если нам удастся сконструировать искомую систему элементов и интервалов в буле- ром пространстве М четырех переменных хг; х2, х3, #4.
256 ГЛ, 5. СИНТЕЗ ПЛМ Предлагаемый метод заключается в последовательном выборе в пространстве Мэлементов, которые ставятся в соответствие столбцам матрицы Z, рассматриваемым в некотором порядке, а также в определении пересекающихся на этих элементах интервалов, которые, в свою очередь, ставятся в соответствие строкам матрицы Z, имеющим единицу на пересечении с рассматриваемым столбцом. Процесс начинается с максимальных по числу единиц столбцов, поскольку на соответствующих им элементах пространства М пересекается максимальное число интервалов и лучше разместить их в пространстве заблаговременно, пока оно еще достаточно свободно. Столбцы с меньшим числом единиц связаны с меньшим количеством требований, предъявляемых к конструируемому решению, и поэтому их рассмотрение можно отложить на конец. Размещая очередной элемент или интервал, мы должны делать это так, чтобы не нарушить все его отношения с уже размещенными объектами. Разумеется, данные соображения носят эвристический характер, в связи с чем лучше продемонстрировать метод на конкретном примере (столбцы рассматриваемой матрицы Z и соответствующие им элементы пространства М будем для удобства обозначать одними и теми же символами а, 6,..., /): Z = Рассмотрим сначала столбец /, обладающий максимальным числом единиц, и поставим ему в соответствие элемент 1111 (очевидно, что выбор первого элемента не может увести нас в сторону от оптимального решения). На этом элементе пересекаются три интервала u2l u3 и иъ, соответствующие строкам 2, 3 и 5. Каждый из них содержит от трех до четырех элементов, размещаемых в пространстве М, откуда следует, что это должны быть интервалы первого или второго ранга. Стараясь экономнее «расходовать» пространство^, примем второе из этих значений и располо- а 1 0 0 0 0 0 b 0 0 1 1 0 0 с 0 0 0 1 0 1 d 1 1 0 0 0 0 е 0 1 1 0 0 0 / 0 1 0 0 1 0 g 0 0 0 0 0 1 h 0 0 0 0 1 1 г 1 0 0 0 0 1 3 0" 1 1 0 1 0 1 2 3 4 5 6
21. СИНТЕЗ ПЛМ С ЗАДАННОЙ ВЫХОДНОЙ МАТРИЦЕЙ 257 жим интервалы так, как это показано на рис. 59, а. При этом учитывается, что интервалы и2 и и3 пересекаются также на элементе е, а интервалы и2 и иъ — на элементе /. Положение элементов & и ft, принадлежащих соответственно интервалам и3 и иь, пока не будем фиксировать, указывая лишь области их возможного размещения. Анализируя размещенные элементы, мы видим, что все содержащие их интервалы также уже размещены, за исключением интервала иг, которому принадлежит элемент d. Этот интервал должен содержать еще два элемента (а и *), Xl И Ь Уг-и. ал< т ь Ё~ 1 h fc ffl ZU Ш b \ Хл u5 и, и. a) 171, чЛ 1 h \\ || 1 d 1 f 1 J \Щ 1ЫТШ Щ u,u2 в). Рис. 59. Конструирование системы пересекающихся интервалов. не принадлежащие ранее размещенным интервалам, из чего следует единственность варианта размещения: иг = = 0 0 (рис. 59, б). Остается выяснить положение еще двух интервалов, и4 и и*. Разумнее начать с размещения более крупного из них — интервала щ. Учитывая, что этот интервал пересекается с интервалами иг и иь (соответственно на элементах i и Ь) и содержит еще два элемента (с и g), мы находим единственный вариант его размещения: щ = 0 (рис. 59, в). Наконец, легко размещается последний интервал щ, после чего окончательно устанавливается положение всех элементов (рис. 59, г). 9 А, Д. Закревский
258 ГЛ, 5. СИНТЕЗ ПЛМ Полученные таким образом совокупности элементов и интервалов пространства М четырех переменных образуют оптимальное решение поставлен- ' ■ ■ ■ ■ J ной задачи синтеза первого яруса ПЛМ. ^1001000010' °1 2< 3< 4- 4<м ш ш -г z = -о/ -* J -об >7 0 0 0 1110 0 0 1 0 10 0 10 0 0 0 1 0110000000 0000010101 0 0 10 0 0 1110 <>-о8 0 0 1 1 1 — 1 —1 -0 -1 — 1 1 — 0 ш Д| Г1 10111000 1-1 0001111111 10110010101 Г Lo 110101Ю ij Рис. 60. ПЛМ, синтезированная методом конструирования пересекающихся интервалов. с заданной матрицей Так завершается процесс синтеза ПЛМ в целом. Решение представляется следующими корнями матричного уравнения Y = В^ТАХ Y (схема приведена на рис. 60): У = 0 1 1 1 о о о о 1 0 0 0 110 0 0 10 0 1 1110 0 0 0 110 0 0 0 0 0 10 0 0 0 0 0 0 1 1 0 0 0 1 0 10 0 0 0 1 L0 1 0 0 1 0 0 0 1 1 1 1 о о 1 о и о 1 1 0 - 1 -11 — д Г1 1 0 1 1 0 0 0 11 0 110 0 0 110 1 0 0 0 1 1 1 0 1 0 1 1 О
22, ДИАГНОСТИРОВАНИЕ ПЛМ 259 22. Диагностирование ПЛМ Содержательные постановки задач. Создание сложных технических устройств сопровождается разработкой практических методов проверки их исправности и нахождения возможных дефектов в них — неисправностей отдельных элементов и нарушений связей между последними. Эти задачи решаются в рамках технической диагностики, грубо подразделяемой на производственную и эксплуатационную. Производственная диагностика связана с разработкой методов испытаний изготовляемых на производстве устройств. В ходе этих испытаний выясняется, удовлетворяет ли устройство предъявляемым к нему требованиям, заложенным в проект устройства, т. е. нет ли в устройстве каких-либо дефектов, появившихся там в результате некоторых сбоев в технологическом производственном процессе. Эксплуатационная диагностика занимается аналогичной проблемой применительно кпериоду эксплуатации устройства,-разрабатывая средства обнаружения дефектов, появляющихся уже при работе устройства. Широкое развитие получили методы тестового диагностирования дискретных устройств, заключающиеся в подаче на вход устройства некоторой последовательности входных наборов (называемой тестом), наблюдении за соответствующей последовательностью выходных наборов и надлежащей обработке этих данных, приводящей к установлению с той или иной степенью точности характера и местоположения дефекта, если он имеет место. Конкретный метод оформляется в виде диагностической процедуры, какназывается программа, содержащая информацию о том, какие именно наборы и в каком порядке надо подавать на вход устройства и как обрабатывать результаты наблюдений. В частности, если диагностическая процедура позволяет лишь отличить исправное устройство от неисправного, но не устанавливает местоположение дефекта в устройстве, то она называется проверяющей. Тесты, в которых выбор последующего выходного набора ставится в зависимость от реакции устройства на предыдущие наборы, называются условными. Соответствующие им диагностические процедуры имеют более сложный характер и здесь рассматриваться не будут. Безусловными, 9*
260 ГЛ. 5. СИНТЕЗ ПЛМ X 1 <П 2Ч как нетрудно догадаться, являются такие тесты, которые представляют собой последовательность входных наборов, достаточную для того, чтобы в любой из ситуаций заранее определенного класса решить поставленную задачу проверки исправности устройства или нахождения дефекта в нем. Задачи диагностики возникают и при производстве и эксплуатации ПЛМ — типичного представителя класса дискретных устройств. Ниже мы ограничимся исследованием задачи нахождения безусловных диагностических тестов для ПЛМ, стараясь при этом, чтобы получаемые тесты были эффективными, г. е. существенно отличались по объему от тривиальных, содержащих все 2П наборов значений п входных переменных. Для некоторых простейших ситуаций эту задачу удается решить в более глубокой постановке, в общем же случае программируемой логической матрицы произвольного вида эффективное решение возможно лишь для облегченных вариантов постановки задачи. Начнем с ПЛМ простейшего типа, обладающей п входными полюсами, одним промежуточным и одним выходным. Такая схема, пример которой показан на рис. 61, реализует одну элементарную конъюнкцию. С другой стороны, будем считать, что неисправности в этой схеме могут быть самыми тяжелыми, т. е. в любой точке матричного поля схемы транзисторы могут как появляться, так и исчезать. Рассмотрим сначала более трудную задачу построения опознающего теста для схемы данного типа, позволяющего узнать, какая же конкретная функция реализуется схемой в ее произвольном неисправном состоянии. Легко представить себе такую неисправность, когда схема будет реализовывать в результате функцию, тождественно равную нулю. Очевидно, что для опознания этой функции потребуется подать на вход схемы все 2П наборов, откуда следует, что данная задача не имеет решения, кроме тривиального, при котором фактически строится полная таблица реализуемой функции. Очевидна также справедли- 5 * \\-f-* Рис. 61. Пример ПЛМ простейшего типа для построения проверяющего теста.
22. ДИАГНОСТИРОВАНИЕ ПЛМ 261 вость этого вывода и для более сложных ПЛМ, у которых число промежуточных и выходных полюсов не ограничивается единицей. Заметим, что опознание конкретных функций, реализуемых неисправной схемой, иногда может проводиться быстрее. Если окажется, что на очередном наборе а реализуемая функция / принимает значение 1, то для полного ее опознания достаточно будет испытать функцию еще на п наборах, соседних к а. Правила опознания функции / при этом очевидны: мы получим ее характеристическое множество М1, расширяя интервал, образуемый первоначально набором а, по всем переменным, на соответствующих которым соседях элемента а функция / также принимает значение 1. Например, если в ходе испытаний оказалось, что /(1 0 0 1 1) = 1, то следует определить значения функции на пяти соседних наборах. Если при этом будут получены значения /(0001 1)=0, /(1101 1) = 1, /(10111)= = 0, / (1 0 0 0 1) = 0 и / (1 0 0 1 0) = 1, то это будет значить, что характеристическим множеством функции / служит интервал 1 — 01—, т. е. / = х±Х3х^ Легче решается задача построения проверяющего теста. Нетрудно показать, что он должен содержать к + 2 набора (но к + 1 набор в случае, когда к = п), где к — ранг реализуемой элементарной конъюнкции, причем все они получаются из вектор-интервала и, на котором реализуемая исправной схемой функция принимает значение 1. Первые к наборов, улавливающие неисправности типа исчезновения транзисторов в первом ярусе схемы, можно получить, изменяя каждый раз одно из значений 0 или 1 в векторе и на противоположное и заменяя все значения «—» на любое из значений 0 и 1. Два последних набора должны совпадать по значению с вектором и в тех компонентах, где последний имеет значение 0 или 1, и должны быть инверсны друг к другу по остальным компонентам (таким образом, при п^>к допустимы 2п~к~1 различных пар). Эта пара наборов улавливает все неисправности типа появления транзисторов в первом ярусе схемы, а также исчезновения единственного транзистора во втором ярусе. Например, для схемы, изображенной на рис. 61 и реализующей булеву функцию f = x1%3Xt, проверяющим тестом может служить множество столбцов следующей
262 ГЛ. 5. СИНТЕЗ ПЛМ булевой матрицы: Х = 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 11 1 о 1 1 1 2 3 4 б К диагност и*к е неисправностей] в первом ярусеПЛМ. Остановимся на задаче построения проверяющего теста для первого яруса ПЛМ, где реализуется некоторая система элементарных конъюнкций. Допустим при этом, что мы имеем непосредственный доступ к промежуточным переменным, т. е. можем наблюдать их значения для любого входного набора. Эта задача уже исследовалась в гл. 3, однако при одном существенном ограничении: там рассматривались неисправности только типа исчезновения транзисторов. Обобщим теперь полученные результаты на случай неисправностей произвольного типа, рассматривая в качестве примера схему, изображенную на рис. 62 и описываемую структурной матрицей х 1 2 3 4 5* °~1 1I1T I | f I 1—[ Ц———[—• о | т \——I ' I I f I—г °1 т\——Г ■—— т °"?—1 Т Т I о-« i —[ 1 23 4 z Рис. 62. Пример для построения проверяющего теста первого яруса ПЛМ. Т = ГО — 1 1 — - — 0 — 1 — 1—01 10--- Анализируя каждую из четырех реализуемых конъюнкций, находим соответствующую совокупность требований, предъявляемых к искомому тесту. Например, дляпроверки правильности реализации элементарной конъюнкции £i£3£4 тРебуется, чтобы в тест входили наборы, принадлежащие интервалам 1 —1 1 ,0 — 01 иО — 1 0— —, а также пара наборов, расположенных на максимальном расстоянии в интервале 0 — 11 . Так получается полный перечень условий, который удобно представить
22, ДИАГНОСТИРОВАНИЕ ПЛМ 263 столбцами следующей троичной матрицы: а Ъ с d e f ghijklmno Го 1 0 0 — — — — — — — — 1 0 1"| — — — — — — — — 1 0 1 100 1 0 о 1 о — г 1 1 1 о + + Задача нахождения минимального проверяющего теста формулируется теперь как задача нахождения булевой матрицы X с минимальным числом столбцов, интерпретируемых как некоторые элементы булева пространства М. Для каждого неотмеченного интервала-столбца матрицы U в матрице X должен найтись по крайней мере один принадлежащий ему элемент-столбец. Если же интервал-столбец отмечен снизу знаком +, то в матрице X должна найтись пара принадлежащих ему элемент-столбцов, ортогональных друг другу по всем компонентам, где интервал-столбец имеет значение «—». Разобьем решение задачи на два этапа: сначала найдем минимальную раскраску графа отношения ортогональности между столбцами матрицы U (соответствующая процедура описана в гл. 2) и совместим одноцветные столбцы, т. е. получим пересечения соответствующих интервалов, затем, если потребуется, добавим к полученному решению еще несколько столбцов, чтобы удовлетворить требованиям, представленным отмеченными столбцами матрицы U. Так мы получим матрицу X — проверочную матрицу для рассматриваемой т-схемы. В данном случае задача решается просто. Очевидно, что первые четыре столбца матрицы U взаимно ортогональны, четыре следующие — тоже. Столбец с может быть совмещен с одним из столбцов е, g или ft, а столбец / — с одним из столбцов а, Ъ или d, других возможностей совмещения среди перечисленных восьми столбцов нет. Отсюда следует, что для их окраски потребуется не менее шести различных красок, а этого оказывается достаточно и для окраски всех последующих столбцов. В результате получаем следующее минимальное разбиение множества столбцов матрицы U на подмножество взаимно неортогональных U = 110 10 10 0 1 1 1 0 — — — — — — — — 1 1 0 1 — — — — 1 1 1 0 "*+ +
264 ГЛ. 5. СИНТЕЗ ПЛМ столбцов: 1: {а, /, &}, 2: {&, т), 3: {с, е, л}, 4: {d, i), 5: {£, Z, о}, 6: {h, /}. После соответствующего совмещения столбцов в подмножествах получаем матрицу Х* = 1 0 1 1 1 1 1 2 1 0 1 1 — — 3 0 0 0 1 1 1 4 0 1 1 0 1 — 5 1 1 0 0 0 1 в — 0 0 0 1 0 три элемента в которой остаются пока неопределенными. Рассматривая далее отмеченный интервал-столбец а матрицы С/, находим в матрице X* единственный принадлежащий ему элемент-столбец 1. Тем самым однозначно определяется другой элемент пары 00 110 0, который необходимо ввести в решение, чтобы удовлетворить представляемое столбцом а требование. Аналогично анализируется отмеченный интервал-столбец е и в матрицу X* добавляется элемент-столбец 110 0 11. Что касается отмеченных интервал-столбцов i и т, то оказывается, что представляемые ими условия удается удовлетворить соответствующим доопределением уже введенных в матрицу X* столбцов. В результате находим следующую проверочную матрицу заданной т-схемы: Х = Проверка ПЛМ, реализующей одну Д Н Ф. В практических ситуациях промежуточные полюсы обычно недоступны, и все, что можно делать при проверке ПЛМ, это подавать на ее вход некоторые входные наборы — значения булева вектора х — и наблюдать за соответствующей реакцией схемы в целом, выражающейся выдачей некоторого значения выходного вектора уЛ 1 0 1 1 1 1 1 2 1 0 1 1 0 1 3 0 0 0 1 1 1 4 0 1 1 0 1 0 5 [в 1 1 1 0 0 0 0 0 0 1 1 0 7 0 0 1 1 0 0 8 1 1 0 0 1 1
22, ДИАГНОСТИРОВАНИЕ ПЛМ 265 на- 1 at / ° t ° а • 7 о • ( J °| { 5о, ' R о • ' %а \ , 2 ^ ~] К к ifyr ^ .L I3 А , i Е И Допустим, что ПЛМ имеет лишь один выходной полюс, состояние которого отображается значением булевой переменной I/, несколько входных полюсов, соответствующих входным булевым переменным хг, x2l..., хп и несколько промежуточных полюсов, на которых реализуются интервалы иг, и2, ..., ир пространства М (точнее говоря, реализуются характеристические функции этих интервалов — соответствующие элементарные конъюнкции). Поставим задачу построения эффективного проверяющего теста ложив пока определенное ограничение на типы рассматриваемых ~ неисправностей: будем считать, что в ПЛМ транзисторы могут лишь исчезать, но не появляться. Положим также, что проверяемая ПЛМ безызбыточна, что не является существенным ограничением, так как синтез безызбыточных ПЛМ достаточно прост. Например, в схеме, показанной на рис. 63 и содержащей 15 транзисторов, обозначенных буквами v a, б,..., п, будем считать возможными 216 состояний, каждое из которых возникает при удалении из схемы некоторого подмножества транзисторов. Лишь одно из этих состояний исправно, и в этом состоянии ПЛМ реализует булеву функцию У = f (X) = BjZ&i V #8*6^6 \/ Х2%4?Ь V *1^2. Из безызбыточности ПЛМ следует, что в любом другом состоянии она реализует функцию, отличную от данной. Поиск проверяющего теста будем проводить по той же схеме, что и раньше: сначала сформулируем систему условий, которые должны выполняться на тесте, а затем будем искать соответствующее этой системе минимальное решение. Однако сейчас приходится иметь в виду явное ухудшение условий проверки. Ранее можно было наблюдать за значениями реализуемых элементарных конъюнкций по отдельности, теперь же мы можем получать лишь их дизъюнкцию в форме значения единственной выходной переменной у. Рис. 63. Пример ПЛМ, реализующей одну булеву функцию, для построения проверяющего теста.
2ЬЬ ГЛ. 5. СИНТЕЗ ПЛМ Отсюда следует соответствующая модификация требований, предъявляемых к тесту. Рассмотрим некоторую одиночную неисправность, заключающуюся в выходе из строя транзистора в первом ярусе ПЛМ. Необходимым и достаточным условием возможности обнаружения этой неисправности является наличие в тесте такого входного набора, который принадлежал бы интервалу пространства М, реализуемому на соответствующем промежуточном полюсе в рассматриваемом неисправном состоянии, и не принадлежал бы ни одному из интервалов, реализуемых в исправном состоянии. Заметим, что такой входной набор всегда можно найти, если схема безызбыточна. Формулируя такое условие для каждой одиночной неисправности в первом ярусе ПЛМ и объединяя их в систему, получаем необходимое и достаточное условие возможности обнаружения любых кратных неисправностей данного типа в первом ярусе. Это утверждение представляется достаточно очевидным. Нетрудно также показать, что необходимым и достаточным условием возможности обнаружения любых кратных неисправностей, ограниченных вторым ярусом схемы, является наличие в тесте некоторых входных наборов av a2,...<, яр, принадлежащих соответственно интервалам ы1э u2,..., ир и только им (at ЕЕ utl но at ф, Ц/, если/ Ф i). Анализ одновременного выхода из строя транзисторов в обоих ярусах проводится сложнее. Оказывается, однако, что и все неисправности такого рода обнаруживаются тестом, удовлетворяющим двум сформулированным выше условиям, т. е. обнаруживающим все одиночные неисправности типа исчезновения транзисторов. Докажем это. Допустим, что из строя вышел транзистор второго яруса^ соответствующий некоторому элементу Ьх однострочной структурной матрицы В. Эта неисправность обнаруживается содержащимся в тесте набором at (at Е: щ)> если только не выйдет одновременно из строя транзистор первого яруса, соответствующий некоторому элементу t[ матрицы Г, в результате чего интервал ^реализуемый на к-ы промежуточном полюсе схемы и ортогональный интервалу иг по Z-й компоненте, расширится так, что он захватит элемент at1 причем транзистор второго яруса, соответствующий элементу fck, будет оставаться исправным. Но такая дополнительная неисправность обнаруживается прове-
22. ДИАГНОСТИРОВАНИЕ ПЛМ 267 ряющим набором для элемента ti, содержащимся в тесте согласно первому условию. Найти проверяющий тест для заданной схемы можно, последовательно рассматривая входящие в нее транзисторы, формулируя соответствующие требования и реализуя их путем последовательного усложнения теста (вначале он пустой). Наряду с этим можно проводить и минимизацию конструируемого теста. Рассмотрим этот метод на данном примере, перебирая транзисторы в алфавитном порядке и составив сначала перечень всех требований к тесту, формулируемых при анализе первого яруса ПЛМ. Выход из строя транзистора а обнаруживается таким элементом интервала 1 1 (соответствующего данной неисправности), который не принадлежит ни одному из интервалов uv u2, и3, щ. Совокупность удовлетворяющих этому условию наборов образует интервал 1111 — —. Аналогично находится совокупность наборов, обнаруживающих выход из строя транзистора б,— она может быть представлена как объединение интервалов 0 — 010 — и 0 — 01 — 0. Выход из строя транзистора в обнаруживается любым из наборов, принадлежащих объединению интервалов 0010 и 0 — 1 0 0 —. Рассмотрение всех транзисторов первого яруса приводит к получению множества некоторых подмножеств из М, которые удобно представить соответствующими вертикальными секциями следующей троичной матрицы, обозначенными теми же буквами, что и соответствующие им транзисторы: а б в г *д е 1 00 00 010-00 — 1 0—01—1 —0 1 1 00 11 1100 000 1110 0 01 1 —1 - 0 - -0 110 0 111 — —0 1111 0 0 0 0 0 0 0 1 - 0 0 1 1 -0 1 -1 1 1 1 1 0 - 1 1 1 1 1 1 — 0 0 — 1 — 0 0 — 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 - -0 0 1 1 1 1 1 1 -1 - — 1 1 0 0
268 ГЛ. 5. СИНТЕЗ ПЛМ Для каждой из этих секций в проверочной матрице X должен ^найтись столбец — входной набор, принадлежащий какому-либо из интервал-векторов данной секции. Заметим, что минимизация числа столбцов в проверочной матрице уже не сводится к нахождению минимальной раскраски графа отношения ортогональности секций, как это делалось ранее, при рассмотрении одностолбцовых секций. Дело в том, что многостолбцовыми секциями могут представляться произвольные подмножества в булевом пространстве М, и поэтому из попарной совместимости секций, образующих некоторую совокупность, не следует возможность совмещения всех секций одновременно. Рассмотрим приближенный метод решения поставленной задачи, идея которого заключается в реализации последовательного совмещения секций, т. е. в нахождении пересечений представленных ими подмножеств булева пространства М. Выбирая секции а, б, в,... в порядке их следования и сравнивая каждую из них со всеми предыдущими, мы последовательно рассматриваем пары (б, а), (в, а), (в, б), оказывающиеся несовместимыми (пересечения соответствующих подмножеств пусты), и доходим до пары (г, а), где совмещение возможно. Реализуя его, мы заменяем секции а и г на их пересечение — столбец с единицами во всех компонентах. Продолжая перебор пар в том же порядке,мы реализуем любое возможное совмещение, т. е. совмещаем секции диб, живит, д. В результате получается троичная матрица 1 "1 1 1 1 1 1 2 0 — 0 1 0 1 3 0 0 1 0 1 — 4 — 1 — 0 0 — 5 0 1 — 0 1 1 о в которой столбец 1 образован совмещением секций а, г, з, л, столбец 2 — совмещением секций б, д, столбец 3 — совмещением секций в, ж, к, столбец 4 совпадает с секцией и,
22. ДИАГНОСТИРОВАНИЕ ПЛМ 269 а столбец 5 представлет собой упрощение секции е, из которой выбран один столбец. Эта матрица является проверочной для неисправностей в первом ярусе рассматриваемой схемы. Чтобы обеспечить подобную проверку и для второго яруса схемы, в тест необходимо добавить еще четыре элемента пространства Af, принадлежащие соответственно интервалам, заданным строками матрицы Т = го - 1 — - о — - 1 - О 10-- 1 - —■ 1 1 и удовлетворяющие дополнительным требованиям, сформулированным выше. Такие элементы можно получить из столбцов матрицы 7V заменяя' значения «—» всюду на 1. Производя аналогичную замену в матрице X* (где возможно любое доопределение) и объединяя обе матрицы получаем искомый проверяющий тест, представляемый булевой матрицей Х = ч о 1 1 1 0 W 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 Полученный проверяющий тест оказывается значительно короче тривиального теста, который содержит 26 = 64 набора. Проверка реализации системы ДНФ. Данная задача отличается от предыдущей тем, что при каждом элементарном эксперименте, подавая на вход ПЛМ некоторый входной набор и наблюдая за соответствующим значением выходного вектора у, мы получаем, как правило, больше информации о состоянии схемы, чем в том случае, когда имеем дело с вырожденным случаем ПЛМ — схемой с одним выходным полюсом. Это позволяет надеяться на соответствующее сокращение длины проверяющего теста.
270 ГЛ. 5, СИНТЕЗ ПЛМ X 2*л С другой стороны, чтобы получить этот выигрыш, потребуется несколько усложнить процесс поиска теста. Усложнение коснется в основном требования к тесту, формулируемого при анализе последствий выхода из строя некоторого транзистора, соответствующего элементу 4 структурной матрицы Г, когда реализуемый на i-м промежуточном полюсе интервал ut расширяется по /-й переменной. В данном случае требование принимает следующий вид: в тест должен войти некоторый набор, принадлежащий интервалу щ° (так будем обозначать интервал, соседний интервалу ut по /-й компоненте), но не принадлежащий хотя бы одному из характеристических множеств М\ булевых функций fk, реализуемых на выходных полюсах схемы, причем таких, при реализации которых используется данный транзистор (Ь& = 1). Множество допустимых в этом смысле наборов обозначим через Н ($). Требования, удовлетворение которых гарантирует возможность обнаружения неисправностей во втором ярусе схемы, формулируются так: если некоторый элемент Ъ1 матрицы В имеет значение 1, то в тест должен войти набор, принадлежащий интервалу иь но не принадлежащий ни одному цз интервалов щ, для которых b/t = 1 и I Ф*1. Множество таких наборов обозначим через Н (bl). При этом мы вновь ограничиваемся рассмотрением неисправностей типа исчезновения транзисторов. Каки ранее, совокупность индивидуальных тестов для всех элементов схемы образует проверяющий тест, обнаруживающий любые комбинации неисправностей данного типа. Поясним сформулированное правило на примере ПЛМ, изображенной на рис. 64 и описываемой операторной суперпозицией Bv ГА, в которой матрица Т задает совокупность интервалов иг, м2,..., ив, реализуемых первым ярусом схемы, а матрица В показывает структуру ДНФ трех Ji 4 o-i 5* 5с 2t *£ UJ±_ о 1 о 3 а Рис. 64. Пример к проверке реализации системы ДНФ.
22. ДИАГНОСТИРОВАНИЕ ПЛМ 271 реализуемых булевых функций. 1 0 0 1 0 1] 1 110 0 11*. О 1 1 1 О О I з Допустим, например, что из строя вышел транзистор а, соответствующий элементу ^структурной матрицы Т и принимающий участие в реализации интервала щ = = 0 — 1 1 на первом промежуточном полюсе и функций /х и /2 на соответствующих выходных полюсах ПЛМ (b\ = 1 и Ъ\ = 1, но Ъ\ = 0). При этой неисправности интервал иг заменяется интервалом 1 1 , и это превращение отразится на значении выходного вектора у при подаче на вход ПЛМ набора, принадлежащего множеству Я (t\) = и? f] (M{ U И\). Поскольку каждое из характеристических множеств М\и М\ представляет собой объединение нескольких интервалов, задаваемых соответствующими строками матрицы Т, нахождение множества Я (*J) упрощается, так как интервалы, ортогональные интервалу щ1, можно сразу выбросить из рассмотрения — они не влияют на получаемый результат. В данном случае М\ = иг \J u4 \J щ и М\ = = UjljMgU^eU Me, но интервал щ1 = I — 1 1 пересекается лишь с интервалами м4 = 1 0 и иь = 1 0, откуда следует, что Я (i[) = щ1 f] П (»4 U »5> = 1 1 1 1 U 1 — 1 1 — I- Аналогичное рассмотрение транзистора б, соответствующего элементу £? матрицы Г, приводит к нахождению множества Я (ф = 0 — 0 1 1—(J0 — 01—0 наборов, на которых обнаруживается исчезновение этого транзистора. Для транзистора в находится множество Я (t{) = 0 — 1 о 1 _ у о — 1 о-о. Представим эти результаты текущим значением переменной матрицы X* (для удобства—в транспонированной Т = 0—11 0 - 1 1 _ 1 _ о 1 — 10 --1 --0 О _0 1 3 4) 5 в я =
272 ГЛ* 5. СИНТЕЗ ПЛМ форме): 1 1 0 0 0 0 1 — — — — — 1 1 0 0 1 1 1 1 1 1 0 0 1 —' - О Полученные три секции несовместимы. Однако уже следующую секцию, образуемую при анализе транзистора г, 1-11 г (этот интервал получается путем склеивания нескольких) можно совместить с секцией а. Сделав это, мы получим очередное значение матрицы X* (также в транспонированном виде): 1 О о о о 1 1 о о 1 1 1 а, г 1»-} Так последовательно получаются все секции, соответствующие транзисторам первого яруса ПЛМ: - - о - о о о — 1 — О О о 1 - - 0 - - О 1 - о 1 — - 1 О — о — — — о — о — — - о 1 о 1 1 о о } д е ж и к л м
22. ДИАГНОСТИРОВАНИЕ ПЛМ 273 и проводится их совмещение, как только это оказывается возможным. Результат этого процесса отображается следующим значением переменной матрицы X* (в транспонированном виде), в сопровождении информации о том, совмещение каких именно секций привело к получению составляющих матрицу векторов: 11 1 1 11 а, г, з, л, н 0 б, е, м 1 в, ж, к, п 1 д, и, о 0 0 1 0 0 — 0 1 — — 0 1 0 0 — 1 0 0 — 0 1 1 0 0 0 S} Далее находятся множества индивидуальных тестов для транзисторов второго яруса. При этом перебор единичных элементов матрицы В целесообразно организовывать не по строкам, а по столбцам, поскольку это повышает вероятность того, что соседние секции окажутся совместимыми. Так получаем множества Н (b\) = щщщ = = 0-11 1-U0-1 1-0, #(Ь£) = игщйъщ = 0-1 1 1 1 и др., формируя секции: 0 0 0 0 0 1 1 1 1 1 0 о о о 1 1 1 о о о о 1 1 1 о о о о 1 1 - — о } }■ } т 1 — — — — о 1 1 о - 1 0 - — о - о — - - о о о о о о о о 1 1 1 1 } } }
274 ГЛ. 5, СИНТЕЗ ПЛМ Продолжая процесс совмещения очередных секций с предыдущими, 1 0 0 1 0 0 0 0 — — 1 1 1 0 0 получаем 1 — 0 1 — — 0 — 1 1 1 0 0 0 — 1 0 1 0 1 1 0 0 0 1 1 — — 0 1 1 0 0 0 1 — 1 1 0 0 — — — 0 1 1 1 0 0 1 1 1 1 1 1 — 0 — 0 0 1 0 1 1 0 1 1 1 1 0 — — 0 1 1 af rf з, л, н б, е, м в, ж, к, п Д. и, о Pi Ц с, ф 1 } х, ш 1 }■ 1 \ т, ъ ] | У. ч 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 после чего нетрудно найти окончательное решение — проверочную матрицу X, заданную уже в прямом, а не транспонированном виде: Х = Об универсальном проверяющем тесте. Рассмотрим теперь наиболее тяжелый случай произвольных неисправностей, когда по каким-либо причинам вместо исправной ПЛМ, реализующей известную нам систему булевых функций F, перед нами может оказаться ПЛМ с тем же количеством входных, выходных и промежуточных полюсов, но с совершенно отличным от предполагаемого размещением транзисторов. Как определить, реализует ли эта схема систему F, имея доступ лишь к входным и выходным полюсам? Как построить нетривиальный проверяющий тест, называемый в данном случае универсальным?
22. ДИАГНОСТИРОВАНИЕ ПЛМ 275 Заметим, что об однозначном определении действительного размещения транзисторов не может быть и речи, поскольку, например, любая неисправность типа синхронной перестановки строк в матрице Т и столбцов в матрице В не изменяет функциональных свойств ПЛМ. Нас будет интересовать лишь такая диагностика, которая направлена на выявление искажений функциональных свойств и опирается на учет общих возможностей схемы, определяемых параметрами п, m и р. Если ПЛМ была спроектирована и построена с целью реализации некоторой системы слабо определенных булевых функций, заданных на сравнительно небольшом числе элементов булева пространства М, можно ограничиться проверкой ПЛМ на этой области, игнорируя, таким образом, возможные неисправности, не изменяющие на ней поведения ПЛМ. Более сложным представляется случай, когда нас интересует поведение ПЛМ на всем булевом пространстве Af. Выше уже говорилось, что опознать реализуемую в действительности систему булевых функций чрезвычайно сложно — для этого в общем случае потребуется полный перебор входных наборов. С аналогичной ситуацией можно встретиться при решении более ограниченной задачи — проверке правильности реализации заданной системы булевых функций F, если только не будет гарантий, что число промежуточных полюсов р является для этой системы минимальным. Действительно, если такой гарантии нет, то можно допустить, что в схеме появилась некоторая «оптимизирующая неисправность», при которой система F оказалась реализованной посредством р—1 промежуточного полюса, аТна освободившемся полюсе реализована некоторая дополнительная полная элементарная конъюнкция, принимающая значение 1 на единственном входном наборе, где фактически реализуемая система функций отличается от системы F. Чтобы опровергнуть эту гипотезу в случае, когда схема в действительности исправна, потребуется прибегнуть к практически полному перебору входных наборов. Будем предполагать поэтому, что нам известна некоторая минимальная по параметру/? реализация системы булевых функций F и именно эта реализация описывается парой структурных матриц В и Т. Построение эффективного
276 ГЛ. 5. СИНТЕЗ ПЛМ проверяющего теста для ПЛМ, заданной матрицами В и Г, можно интерпретировать как нахождение системы частичных булевых функций, минимизированной по объему области ее определения и такой, что при ее минимальной реализации она неизбежно будет доопределена до системы F. Довольно трудная в общем случае, эта задача успешно решается при малом разнообразии оптимальных реализаций. Типичной для ПЛМ со многими входными полюсами можно считать^ ситуацию, в которой некоторые из элементарных конъюнкций, реализуемых на первом ярусе схемы, оказываются обязательными, или, как говорят, принадлежат ядру множества оптимальных решений. В этом случае легче] сформировать такую систему частичных булевых функций, при оптимальной реализации которой она однозначно доопределится до системы F. Продемонстрируем это на конкретном упрощенном примере, рассмотрев ПЛМ, описываемую парой матриц 12 3 4 5 6 [1 _ _ о 0 -1 1 _ 0 0 1 - - М , В = [1 1 1] 1 1 — — — О J з и реализующую булеву функцию / (хг, х2, xs, #4, хъ, #в) = = х1х^ъ V ^з^Узд^в, характеристическое множество которой задается объединением представленных в матрице Т интервалов их — 1 00—, м2 = — 0 0 1 и щ =1 1 0. Напомним, что обязательным мы называли такой максимальный интервал характеристического множества М1 рассматриваемой булевой функции, который содержит по крайней мере один определяющий элемент — набор, не содержащийся ни в одном из других максимальных интервалов. Такое определение было связано с тем обстоятельством, что мы ограничивались ранее поиском оптимальных реализаций булевых функций в множестве максимальных интервалов. Пределы на размеры допустимых интервалов устанавливались при этом автоматически только сверху. Однако теперь, ^рассматривая ПЛМ в произвольном состоянии, следует считаться с возможностью реализации на первом ярусе схемы и немаксимальных интервалов. Учитывая это различие, введем понятие определяющей пары
22, ДИАГНОСТИРОВАНИЕ ПЛМ 277 для максимального интервала ut как такой пары его элементов, не принадлежащих другим максимальным интервалам, которые находятся в интервале Ui на максимальном расстоянии. Очевидно, что такая пара покрывается единственным среди любых интервалов множества А/1, а не только среди максимальных. Например, анализируя интервал щ = 1 00 — и рассматривая соответствующий ему минор (2, 3) X (2, з, 6) I? - .1 находим, что ортогональные этому минору булевы векторы образуют множество 0 1 — (J 1 — 1, определяющее обязательность интервала щ. В этом множестве можно найти пару векторов 0 1 0 и 1 0 1, взаимно ортогональных по всем компонентам, откуда следует, что соответствующие этим элементам наборы 101000и110001 образуют определяющую пару для интервала uv Аналогично находятся пары (000100, 1 0 0 1 1 1) и (1 1 0 0 1 0, 1 1 1 1 0 0), определяющие обязательность интервалов щ и щ и ограничивающие их размеры снизу. Включая найденные шесть наборов в проверяющий тест, следует дополнить его элементами, ограничивающими размеры интервалов сверху. Такие элементы находятся рассмотренным ранее путем — они задаются минимизированной системой согласованных индивидуальных тестов для обнаружения выхода из строя транзисторов первого яруса. Выполняя соответствующие процедуры, находим, что такая система будет содержать четыре набора, которые можно выбирать по одному из интервалов 0 1 — 0 0 0, 11010 1, 11 и 1 0 0^0 1 0. Окончательно получаем следующий универсальный проверяющий тест, который оказывается минимальным: Х = 110 1110 10 1 10 0 0 11110 0 0 10 0 0 10 0 10 0 0 110 10 110 0 0 0 110 0 0 0 1 10 0 10 0 0 10 0
278 ГЛ, 5. СИНТЕЗ ПЛМ Бели на входящих в этот тест наборах выходная переменная у принимает соответственно значения из однострочной матрицы У = [1 1 1 1 1 1 0 0 0 0], то это будет необходимым и достаточным условием того, что проверяемая ПЛМ действительно реализует булеву функцию
ГЛАВА в МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ 23. Моделирование и анализ Модели многоярусных схем. Элементарные матричные схемы, описываемые функциональными операторами J?v, ВА, Гу, ТА и ~~|, образуют достаточно богатый набор элементов, позволяющий строить логические сети, реализующие практически любые алгоритмы преобразования информации в дискретной форме. Рассмотрим некоторые задачи, возникающие при исследовании таких сетей. Прежде всего сформулируем синтаксическое правило, которому должна подчиняться структура любой логической сети, составленной из элементов перечисленных типов. Допустим, что сеть содержит к элементов. Обозначим через Xi = {xili xi2i • • •> хгщ) множество входных и через Yi = {Уin Уi2, • • ., ytmi) множество выходных двоичных полюсов г-го элемента, через X и Y — соответствующие объединения этих множеств: х = х1 и х2 и • • • U хк, у = ^ и г. и • • • ип (множества Xt и Xj, равно как и множества Yt и Yj, соответствующие различным элементам, не пересекаются). Через U и V обозначим соответствующие множества входных и выходных полюсов сети. Положим, что состояния всех полюсов представляются значениями одноименных булевых переменных.
280 fJt. б. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Сеть образуется из элементов путем установления некоторой системы непосредственных связей между различными полюсами как элементов, так и сети в целом. При этом любой входной полюс любого элемента и любой выходной полюс сети должен быть непосредственно связан с одним и только одним выходным полюсом некоторого элемента или входным полюсом сети. Другими словами, синтаксическое правило образования логической сети заключается в том, что^ система непосредственных связей должна задаваться функциональным отображением множества X (J V в множество Y [j U. Обратим внимание читателя на то, что при этом системой непосредственных связей охватываются, как правило, все элементы множеств X и V, но не обязательно все элементы множеств Y и U. Такая несимметрия имеет определенное практическое обоснование. Обычно предполагается, что используемые при конструировании сети элементы не имеют фиктивных входных полюсов, не оказывающих никакого воздействия на выходные полюсы элементов, существенными полагаются также все выходные полюсы сети. Более вероятной считается некоторая избыточность в множествах U и У, выявляемая в процессе синтеза и упрощения сети — некоторые входные переменные сети могут оказаться фиктивными, а некоторые выходные переменные отдельных элементов — неиспользуемыми. Однако такая избыточность может появиться и в множествах X и V. В таком случае функциональное отображение множества X (J V в множество Y (J U будет рассматриваться как частичное. Структурное описание логической сети складывается из описаний ее элементов и описания системы непосредственных связей. Вторая компонента может быть задана в элементарной форме, путем простого перечисления всех пар непосредственно связанных полюсов. Для сложных сетей такое описание вряд ли может быть признано удобным, в связи с чем ниже рассматриваются более компактные формы, в которых вместо булевых переменных, соответствующих отдельным полюсам, используются булевы векторы, характеризующие состояния некоторых наборов таких двоичных полюсов, которые удобно рассматривать в совокупности. К таким наборам относятся прежде всего множества U и F, называемые входным и выходным сече-
23. МОДЕЛИРОВАНИЕ И АНАЛИЗ 281 ниями сети, а также множества Xt и Yu задающие входные и выходные сечения отдельных элементов сети. Система непосредственных связей задается на множестве таких булевых векторов, называемых информационными. Элементарная межэлементная связь выражается алгебраически отождествлением1 соответствующих двоичных переменных. Например, непосредственная связь первого входного полюса элемента 5 с седьмым выходным полюсом элемента 2 представляется выражением xbtl = у2,т Последовательное соединение двух матричных схем представляется отождествлением соответствующих булевых векторов, равных по длине. Например, выражение х2 = = у3, эквивалентное системе #2,1 == #3,1> #2,2 == Уз,2> • • • > #2,П = Уг,П> отражает попарное соединение входных полюсов элемента 2 с одноименными выходными полюсами элемента 3. В более общем случае непосредственные межэлементные связи можно задавать с помощью операции конкатенации (сочленения) векторов, определяемой следующим Е ]-№D- Ч<Т- ~HZl Рис. 65. Логическая сеть из элементарных матричных схем. образом: конкатенацией векторов а = (аг, а2, . . ., ар) и Ь = (Ь1э Ь2, . . ., bq) называется вектор (аг, а2, . . . . . ., ар, Ь1? Ь2, . . ., bq), обозначаемый через (а, Ь). Используя механизм отождествления информационных векторов наряду с введенным ранее аппаратом операторных суперпозиций, можно описать любую логическую сеть соответствующей системой векторно-матричных логических уравнений. Например, сеть, изображенная на рис. 65, описывается системой уравнений V = 77(11, -]«2V*,/*4V*),- г = ТЫ
282 гл. в, многоярусные комбинационные сети Решение разнообразных задач анализа и синтеза логических сетей, а также диагностики их неисправностей сводится, таким образом, к исследованию систем уравнений, описывающих данные сети. В настоящей главе ограничимся рассмотрением относительно простого класса бесконтурных сетей, элементы которых могут быть пронумерованы так, что ни один из входных полюсов любого элемента не будет непосредственно связан с каким-либо выходным полюсом элемента со старшим номером. Очевидно, что бесконтурные сети относятся к комбинационным автоматам, или автоматам без Памяти; это означает, что состояния выходных полюсов сети.в любой момент времени оказываются функциями состояний входных полюсов в этот же момент (временными задержками сигналов в схеме здесь можно пренебречь). При исследовании логических сетей окажутся полезными также следующие операции, обобщающие введенные ранее: — операция а~~] р выборочной инверсии булева вектора р (значения 1 в булевой вектор-константе а отмечают ин- версируемые компоненты вектора р 1— таким образом, вектор а может интерпретироваться как вектор, задающий расположение инверторов в некотором наборе соединительных линий); — операция (Р, Q) строчной конкатенации матриц Р и Q с одинаковым числом строк, приводящая к получению матрицы со строками (pi, q*); — операция [Р, Q] столбцовой конкатенации матриц Р и Q с одинаковым числом столбцов, приводящая^ получению матрицы со столбцами (р3, q>). Конкатенации могут подвергаться как информационные матрицы, так и структурные. Исследование правильных' цепо- ч е к. Частным, но важным случаем логических сетей являются правильные цепочки, образуемые последовательным соединением некоторой совокупности матричных схем, когда число входных полюсов последующей схемы совпадает с числом выходных полюсов предшествующей. Поведение таких цепочек моделируется достаточно просто, путем последовательного вычисления соответствующей цепочки информационных векторов, передающих информацию между соседними схемами и соответствую-
23. МОДЕЛИРОВАНИЕ И АНАЛИЗ 283 щих задаваемому значению входного вектора х. Трудоемкость этого процесса относительно невелика, однако иногда, особенно когда он попадает в некоторый внутренний цикл более сложных вычислений, возникает целесообразность в минимизации и этого процесса. Рассмотрим, например, эту задачу для случая монотонных чередующихся цепочек, представляющих собой такие правильные цепочки, в которых чередуются элементарные матричные схемы, описываемые операторами #л и Bv. В этом случае вычисления удобно организовывать на парах «конъюнктивный ярус — дизъюнктивный ярус», представляя операторную матрицу первого яруса в прямом виде (пусть это будет, например, булева матрица Л), а второго — в транспонированном виде (например, матрицей С). Тогда информационный вектор у, выходной для рассматриваемой пары ярусов, вычисляется следующим образом, как функция входного (также для данной пары ярусов) вектора х: значение вектора у приравнивается покомпонентной дизъюнкции всех таких строк с* матрицы С, для которых выполняется условие af Д х = О, т. е. оказывается равной нулю покомпонентная конъюнкция соответствующей строки а* матрицы А и инверсного значения вектора х. Такой способ моделирования особенно удобен при вычислении на ЭВМ, поскольку вычисления производятся наиболее просто, когда все векторы х, af, cf и у, над которыми выполняются элементарные матричные операции, не превосходят по длине ячейку памяти машины. На число строк в матрицах А и С ограничения при этом не накладываются. Пусть, например, в некоторой монотонной чередующейся цепочке пара соседних разнотипных операторов В^ и Bi+i обладает следующими значениями матриц: Bi = 10 10 010 0 0 0 10 0 0 10 0 10 1 10 11 0 10 1 1 0" 1 0 0 1 0 0 1 0 0 1 0 1 1 2 3 4 б ' 6 7 Bi+1 = 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1
284 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Тогда А = Bt, a 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0' 0 0 0 1 1 1 1 2 3 4 б 6 7 с = Допустим, что х = 010111. В этом случае условие а* Д х = 0 будет выполняться для строк 2, 5 и 7 матрицы А, следовательно, вектор у примет значение, равное дизъюнкции соответствующих строк матрицы С: У = с2\/с6\/с7 = 1 0 1 1 1. Очевидно, что описанный процесс легко программируется и быстро реализуется на ЭВМ. Моделирование можно рассматривать как частный случай задачи анализа — выяснения функциональных свойств заданной схемы или хотя бы проверки отношения реализации между схемой и функцией, которую она должна реализовывать. Наиболее известной задачей анализа является вычисление значения входного вектора х по заданному значению выходного вектора у. Решение этой задачи может быть неоднозначным, а иногда — отсутствовать. В общей постановке задачи анализа правильной цепочки есть смысл рассматривать некоторое подмножество Н (v) из булева пространства всех значений выходного для цепочки в целом вектора v и искать соответствующее ему подмножество Н(и) из булева пространства всех значений входного вектора и. Соответствие должно быть следующим: множеству Н(и) будут принадлежать все такие и только такие значения вектора и, которые отображаются рассматриваемой схемой в значения вектора v, попадающие в множество Н (v). В частности, множество Н (и) может оказаться пустым. Тривиальным способом решения этой задачи является моделирование, связанное с перебором всех значений вектора и и отбором среди них таких, которые удовлетворяют сформулированному требованию. Однако при большом числе входных переменных такой способ практически неприемлем.
23. МОДЕЛИРОВАНИЕ И АНАЛИЗ 285 Более совершенный метод анализа основывается на последовательном продвижении от выхода цепочки к ее входу и вычислении соответствующей серии множеств значений промежуточных информационных векторов. Рассмотрим этот метод подробнее для случая, когда соседние информационные векторы (обозначим их через х и у) связаны уравнением у = fivx или у = Гух. Как мы знаем, к уравнениям такого типа легко сводятся и уравнения у = 5лх и у = ГАх, преобразуемые к виду у = £Vx и у = Г?х. Анализ оператора BV. Допустим, что у = Svx и нам известно множество Н (у) возможных значений вектора у. Требуется найти множество Н (х) всех допустимых при этом значений вектора х. Если мощность множества Н (у) невелика, то вычисления можно произвести поэлементно, т. е. найти для каждого возможного значения вектора у все допустимые значения вектора х, а затем объединить найденные подмножества, получив таким образом множество Н (х). Допустим, что операторная матрица В и выходной вектор у имеют следующие значения: 1 2345 678 в = Г1 0 1 0 0 1 0 Г 0 10 0 10 0 0 10 0 10 0 11 0 1110 0 0 1 110 0 0 0 0 1 У = "Г 0 1 1 0 1 2 3 4 б Простые рассуждения приводят к следующему методу нахождения всех допустимых значений вектора х для заданного значения вектора у. Выделяя в матрице В строки, соответствующие компонентам вектора у со значением 0, и столбцы, имеющие значение 1 по крайней мере в одной из этих строк, построим на их пересечении минор, обозначив его через В0. Очевидно, что компоненты вектора х, соответствующие входящим в минор В0 столбцам, должны с необходимостью получить значение 0. Что же касается значений остальных компонент вектора х, то они должны быть выбраны таким образом, чтобы столбцы, соответствующие компонентам со значением 1, образовывали покрытие минора Вх, дополнительного к минору В09 т. е. представляющего собой пересечение строк и столб-
286 ГЛ. 6# МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ цов, не использованных при построении минора В0. Наличие в миноре Вх некоторой строки, не содержащей единиц, будет свидетельствовать об отсутствии покрытий и, следовательно, отсутствии допустимых значений вектора х. Чтобы этот метод стал более наглядным, полезно так переставить строки и столбцы в матрице S, чтобы минор В0 был образован в левом верхнем углу матрицы, а дополнительный к нему минор Вх — в правом нижнем. В данном случае получим 1 "0 1 1 1 о г2 1 1 0 0 1 б 1 0 0 0 0 8 0 1 1 1 1 3 0 0 1 0 1 4 0 0 0 1 1 в 0 0 1 0 0 Легко видеть, что образуемый при этом правый верхний минор не будет содержать ни одной единицы, а левый нижний не будет оказывать никакого влияния на поиск значений вектора х. Итак, для заданного примера вектор х должен получить значение 0 в компонентах 1, 2, 5 и 8 и значение 1 в некоторых из компонент 3, 4, 6 и 7, так чтобы соответствующие им столбцы минора 3 4 6 7 [1 0 1 0"] 0 10 1 1 1 0 0J образовывали столбцовое покрытие этого минора. Задача о нахождении всех покрытий булевой матрицы была рассмотрена нами ранее. Напомним лишь, что множество всех покрытий полностью определяется своей нижней границей — множеством безызбыточных покрытий. Это последнее множество находится в рассматриваемом случае без особого труда и представляется булевой матрицей 3 4 6 7 1 1 0 01 10 0 1, 0 1 1 0J
23, МОДЕЛИРОВАНИЕ И АНАЛИЗ 287 каждая строка которой задает единицами одно из безызбыточных покрытий. Отсюда следует, что вектор х должен обладать единицами в компонентах 3 и 4 или в компонентах 3 и 7 или же в компонентах 4 и 6. Так находится множество всех допустимых значений вектора х, которое удобно представить как множество столбцов следующей булевой матрицы: 0 0 0 0 0 0 0 0 11 000000002 1111110 0 3 11110 0 114 OOOOOOOOls 0 0 110 111 0 10 1110 1 00000000 Простое перечисление всех этих значений может оказаться громоздким, в связи с чем иногда целесообразнее пользоваться более сжатым представлением, задаваемым эквивалентной троичной матрицей Го 0 0 0 1 2 3 4 б » в 7 8 столбцы которой непосредственно соответствуют безызбыточным покрытиям минора Bi, и их можно получить оттуда. Описанный метод легко обобщается на случай поин- тервальной обработки множества Н (у), когда оно задано также в компактной форме некоторой троичной матрицей С, каждый столбец которой представляет некоторый интервал булева пространства значений вектора у. В этом случае нет нужды разлагать очередной вектор-интервал с* на элементы, чтобы затем последовательно их обрабатывать, а можно сразу находить все множество допустимых значений вектора х, отображаемых анализируемой матричной схемой в этот интервал.
288 гл. 6. многоярусные комбинационные сети Так же, как и ранее, из матрицы В выделяется минор В0 и соответствующие компоненты вектора х получают значение 0. Минор Вг образуется пересечением строк, которым соответствуют компоненты вектора с1 со значением 1, и столбцов, имеющих единицу хотя бы в одной из этих строк, но не входящих в В0. Комбинаторно задача сводится опять к нахождению всех безызбыточных столбцовых покрытий матрицы Вг. Каждое из этих покрытий определяет множество компонент вектора х, получающих значение 1. Оставшиеся неопределенными компоненты получают значение «—». Так находится множество троичных вектор-интервалов булева пространства значений вектора х, отображаемых в заданный столбцом с* интервал пространства значений вектора у. Проиллюстрируем этот метод на следующем примере, в котором матрица В уже приведена к удобному виду путем соответствующей перестановки строк и столбцов: 2 3 6 7 8 9 10 в= 1 1 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 'Л 1 1 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 с = 0 " 0 0 Г! 1 1 1 1 — — _ 1 2 3 4j б в 7 8 9 В данном случае значение 0 приобретают первые четыре компоненты вектора х, а значения 1 распределяются на основании информации, заключенной в миноре Вг = 5 6 7 8 110 0" 1110 0 0 11 .0 0 0 1. Этот минор имеет два безызбыточных столбцовых по-
23. МОДЕЛИРОВАНИЕ И АНАЛИЗ 289 крытия 6 6 7 8 10 0 1 0 10 1 определяющих два способа расстановки единиц в векторе х: при одном из них значение 1 получают компоненты 5 и 8, при другом — компоненты 6 и 8. В соответствии с этим множество Нь (х) представляется как объединение двух интервалов, задаваемых столбцами троичной матрицы 0 0 0 0 1 — 1 0 0 0 0 — 1 1 —т 1 2 3 4 5 6 7 8 9 10 Множество Я(х) в целом образуется объединением всех полученных таким образом множеств Ht (x) допустимых значений вектора х, соответствующих отдельным столбцам матрицы С — интервалам множества Н (у). При этом может возникнуть задача минимизации числа столбцов в результативной матрице, т. е. задача минимизации соответствующей ДНФ. Для ее решения могут быть привлечены методы, описанные в гл. 4. Анализ оператора Гу. Рассмотрим теперь аналогичную задачу для элементарной матричной схемы, описываемой уравнением у = Tvx. Допустим, что известна троичная вектор-константа с, задающая некоторый интервал в булевом пространстве значений вектора у, и требуется найти соответствующее множество Н (х) значений вектора х, отображаемых в этот интервал оператором Tv. По аналогии с описанным ранее методом выделим из троичной операторной матрицы Т два минора, Т0 и Тг. Минор Т0 образуется пересечением строк, которым соответствуют компоненты вектора с со значением 0, и столбцов, содержащих в этих строках не менее одного значе- Ю А. Д. З&кревский
290 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ ния, отличного от «—». Минор 7\ образуется аналогично на пересечении строк, которым соответствуют компоненты вектора с со значением 1, и тех из остальных столбцов, каждый из которых содержит в этих строках не менее одного значения 0 или 1. Компоненты, вектора х, соответствующие столбцам, вошедшим в минор Г0, должны получить значения 0 или 1, не совпадающие со значениями элементов минора в этих столбцах. Если же окажется, что в каком-либо из столбцов минор Т0 имеет как значения 0, так и значения 1, то искомое множество Н (х) будет пусто — ни одно из значений вектора х не будет отображено оператором Г7 в интервал, заданный вектором с. Как и ранее, комбинаторно задача сводится к нахождению всех безызбыточных покрытий второй матрицы, в данном случае — матрицы 7\. Однако теперь речь идет о покрытии троичной матрицы, в связи с чем нам придется определить, что это означает. Столбцовыми покрытиями булевой матрицы мы назвали ранее некоторые подмножества ее столбцов, удовлетворяющие определенным требованиям. Эти подмножества удобно представлять булевыми векторами, равными по длине строкам рассматриваемой матрицы, в связи с чем их также можно назвать покрытиями. Будем говорить, что булев вектор р является покрытием булевой матрицы Л, если для каждой строки из А найдется компонента, в которой как эта строка, так и вектор р имеют значение 1. Если при этом ни одно из значений 1 компонент вектора р нельзя заменить на 0 так, чтобы получить снова покрытие, то покрытие р называется безызбыточным. Покрытием (столбцовым) троичной матрицы W назовем такой троичный вектор q, равный по длине строкам матрицы W, что для каждой строки из W найдется такая компонента, в которой как эта строка, так и вектор q имеют совпадающие значения 0 или 1. Если при этом ни одно из значений 0 или 1 компонент вектора q нельзя заменить на «—» так чтобы снова получить покрытие, то покрытие q называется безызбыточным. Множество всех безызбыточных покрытий минора 7\ однозначно определяет множество троичных векторов — максимальных интервалов множества решений Н (х). При этом значения вектор-покрытий передаются непо-
23. МОДЕЛИРОВАНИЕ И АНАЛИЗ 291 средственно соответствующей группе компонент вектора х. Остальные компоненты, соответствующие столбцам матрицы Г, не вошедшим ни в минор Т01 ни в минор 7\, получают значение «—». Может оказаться, что минор Тг не будет иметь покрытий. В таком случае множество Н (х) будет пустым. Рассмотрим конкретный пример, уже приведенный к удобному для нас виду. Пусть Т = 1 2 3 ;4 "1 - — — 10-1 — - 0 — — 1 — _ 1 - - 0 -00- 0 — — — 1 0 0 - - - 1 - 0 - 0-01 - - 0 1 - 0 1 - - - 1 с = Значения первых четырех компонент вектора х находятся однозначно из рассмотрения минора Т0: (хъ х, 2> x3i л:4) = 0110. Чтобы определить допустимые значения следующих четырех компонент, надо найти все безызбыточные покрытия минора [10 0-1 - 1 - 0 . 0 - 0 1 J Эта частная задача оказывается однотипной с задачей о вырожденности троичной матрицы и. решается похожим методом, основанным на сокращенном переборе некоторых комбинаций значений рассматриваемых компонент. При этом находятся безызбыточные покрытия, представляемые строками троичной матрицы 5 6 7 8 11—1 0 0-0 - 1 0 - L- - о о J ю*
292 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Конечный результат — совокупность максимальных интервалов множества Н (х) — представляется как множество столбцов троичной матрицы "0000 1 1 0 1 1 — 1 1 1 0 0 0 — 0 1 1 0 — 1 0 — 1 1 0 — — 0 0 2 3 4 5 6 7 8 9 Методы аппроксимации отображений. Реализация изложенных выше методов не всегда приемлема, поскольку она может потребовать трудоемких вычислений. В некоторых случаях разумнее прибегнуть к упрощению, аппроксимируя рассматриваемые в булевых пространствах подмножества минимальными поглощающими интервалами. Познакомимся в связи с этим со следующими четырьмя задачами. Допустим, что задано уравнение у = Svx и для данного интервала п (троичного вектора) значений булева вектора х требуется найти минимальный вектор-интервал т, содержащий все допустимые значения вектора у. Обозначая через S° (p) множество номеров компонент вектора р, обладающих значением а, сформулируем правило, позволяющее определить значения всех компонент искомого вектора т. Если Sl (bt) cz Sl (n), to компонента rtii получает значение 1, если Sl (bt) f] S° (n) Ф ф, то т,} получает значение 0, в остальных случаях гпх принимает значение «—». Аналогичная задача для уравнения у = Tvx решается следующим образом. Компонента rrii принимает значение 1, если S1 (tj) cz S1 (n) и S° (tf) cz S° (n); принимает значение 0, если S1 (tt) fl S° (n) ф ф или S° (t,) f] S1 (n) ф ф\ принимает значение «—» в остальных случаях. Аппроксимация обратных отображений несколько сложнее. Для уравнения у = Svx с заданным интервалом m значений булева вектора у соответствующий вектор- интервал п, содержащий все допустимые значения вектора х, находится следующим образом. Если S1 (bl)f]S° (т)т=
24. ДЕКОМПОЗИЦИОННЫЕ МЕТОДЕ СИНТЕЗА 293 Ф 0, то компонента пь принимает значение 0. Значение 1 получают компоненты, определяемые «ядром покрытия» минора Вг: в этом миноре для каждой такой компоненты найдется строка, содержащая единственную единицу, а именно в соответствующем столбце. Напомним, что если минор Вг не имеет покрытий, то допустимых значений вектора х также не существует. Аналогично решается задача аппроксимации обратного отображения для уравнения у = Tvx с заданным интервалом m значений вектора у. Компонента nt получает значение 1, если S° (V) f) S1 (m) Ф ф, и получает значение 0, если S1 (V) Г) S° (m) Ф ф (одновременное выполнение обоих условий свидетельствует об отсутствии допустимых значений вектора х). Кроме того, компонента nt получает значение 0 или 1, если это значение является обязательным для всех покрытий минора Тг. Компоненты, не получившие значений 0 или 1, получают значение «—». Опять-таки, если минор Тг не имеет покрытий, то допустимых значений вектора х не существует. Описанные упрощения могут быть положены в основу приближенных методов моделирования и анализа, значительно ускоряющих процесс решения рассматриваемых задач. Однако следует помнить, что находимые при этом интервалы являются лишь приближениями сверху к точным областям допустимых значений булевых векторов, и может потребоваться комбинаторный поиск в пределах полученных интервалов. 24. Декомпозиционные методы синтеза в базисе элементарных матричных схем Метод стандартной декомпозиции. Любая булева функция может быть представлена в дизъюнктивной нормальной форме, а любая система булевых функций — системой ДНФ с общим базисом элементарных конъюнкций. Такая система всегда может быть реализована некоторой двухъярусной матричной схемой, описываемой уравнением у = В^ТАх, если только на размеры матриц В и Т не накладываются никакие ограничения. Однако в действительности размеры операторных матриц всегда ограничены как по числу строк, так и по числу
294 ГЛ* 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ столбцов. Эти^ограничения определяются уровнем технологии и с течением времени могут ослабляться, однако никогда не исчезнут. В связи с этим и возникают рассматриваемые здесь задачи декомпозиции. Начнем со следующей задачи. Допустим, что требуется реализовать схемно функциональное отношение между булевыми векторами х и у, заданное уравнением у = = Svx, в котором операторная матрица В обладает размерами (т х п), равными соответственно длинам векторов у и х. В то же время элементарные матричные схемы, из которых мы должны строить нашу схему, имеют размеры (s х t), в общем случае меньшие, чем (тхп). Спрашивается, как определить структурные матрицы элементарных схем и как соединить эти схемы между собой, чтобы получить схему, реализующую заданное функциональное отношение? Для решения этой задачи можно предложить метод стандартной декомпозиции, не связанный с комбинаторным поиском и пригодный при рассмотрении произвольных матриц В заданного функционального отношения у = Z?vx. Этот метод особенно удобен, когда число входов в элементарной матричной схеме превышает число ее выходов в целое число раз. Предположим для конкретности, что t = 2s, т. е. структурная матрица А, описывающая элементарную схему, представляет собой строчную конкатенацию двух квадратных булевых матриц Аг и А2. При данном методе исходная матрица разбивается на миноры размером (s x s) или меньше — для миноров- остатков, образующихся, когда т или п не делится нацело на s. Суть метода заключается в использовании стандартной схемы соединений элементарных матричных схем допустимых размеров со стандартным определением структурных матриц этих элементарных схем, при котором они принимают значения соответствующих миноров, полученных при разбиении матрицы В. Например, если т = s, а п = 5s, то разбиение матрицы В приводит к рассмотрению ее как строчной конкатенации пяти квадратных миноров Ви В2, В31 S4 и Въ, каждый размером (s x s). Если бы у нас имелась элементарная матричная схема размером (s x 5s), то можно было бы реализовать данное функциональное отношение непосредственно на ней, определив ее структурную мат-
24. ДЕКОМПОЗИЦИОННЫЕ МЕТОДЫ СИНТЕЗА 295 рицу так, как это показано на рис. 66, а, где показано также разбиение входного вектора х на «куски» длиной s каждый, питающие соответствующие квадратные миноры. Для сравнения на рис. 66, б приведена типовая элементарная схема размером (s.x 2s), образующая для нас базис синтеза. Для данного примера метод стандартной декомпозиции приводит к получению схемы, изображенной на рис. 67, а, 2 Ж В,\ВЖ\В3\В4\ Bs \*Ц т~> A, J Az а) б) Рис. 66. Разбиение элементарной матричной схемы на миноры: а) матричная схема с большим числом входных переменных, б) типовая матричная схема. ш в, ! в2 ТдП- в3\ в, ^fsj—i в,\ У^9 Л. U SS-* а) 5) Рис. 67. Стандартная декомпозиция дизъюнктивной матричной схемы по входным переменным: а) с последовательным соединением типовых схем, б) с минимизацией по глубине сети. где показаны как схема соединений элементарных матричных схем, так и значения их структурных матриц. Диагональная черта в квадратной половинке изображения некоторой элементарной схемы означает, что соответствующий минор структурной матрицы является единичным, т. е. значения его элементов на главной диагонали равны единице, а в остальных позициях — нулю. На рис. 67, б показана эквивалентная схема, менее регулярная, зато
296 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ и меньшей глубины, что может представлять интерес при стремлении максимизировать быстродействие схемы. Более общий случай проиллюстрирован на рис. 68. Здесь т = 3s, п = 5s, и матрица В разбивается на миноры так, как это показано на рис. 68, а, с соответствующим Рис. 68. Стандартная декомпозиция дизъюнктивной матричной схемы по входным и выходным переменным: а) разбиение исходной матрицы на миноры, б) синтезированная логическая сеть из типовых матричных схем. разбиением информационных векторов х и у. В этом случае метод приводит к получению схемы, изображенной на рис. 68, б. Совершенно так же производится стандартная декомпозиция матрицы В в операторе ВА, а декомпозиция троичной матрицы Тв операторах Тч и ТА отличается от описанной лишь тем, что единичный квадратный минор определяется в данном случае как такой минор, который содержит единицы на главной диагонали и значение «—» в остальных позициях. Параллельная декомпозиция «р е J - к и х» матриц. По-видимому, вряд ли можно предложить более эффективный метод декомпозиции операторных матриц в общем случае, когда эти матрицы содержат примерно поровну элементов с различными значениями,
24. ДЕКОМПОЗИЦИОННЫЕ МЕТОДЫ СИНТЕЗА . 297 причем эти значения распределены по матрице без какой- либо видимой закономерности. Более выигрышные методы декомпозиции применимы в тех случаях, когда рассматриваемая операторная матрица является в каком-то смысле более простой, чем случайная. Особого внимания заслуживает случай «редких» матриц, содержащих относительно небольшое число единиц (в булевой матрице) или единиц и нулей (в троичной матрице). В частности, если это число, подсчитанное для каждой отдельной строки матрицы, не превышает t — числа входов в элементарной матричной схеме, то возможна параллельная декомпозиция, при которой получается одноярусная схема из нескольких элементарных матричных схем, реализующая заданное функциональное отношение. Тривиальное решение здесь можно получить, реализуя каждую строку исходной матрицы посредством соответствующей элементарной схемы, в которой будет в этом случае использоваться лишь один выходной полюс. Однако очевидно, что такое решение может быть сопряжено с излишним расходом элементарных схем. Оптимальное решение следует искать, группируя функции, заданные строками исходной матрицы, в некоторые совокупности с ограниченным числом аргументов в каждой из них, и минимизируя число этих совокупностей. По существу, задача декомпозиции операторов Sv и #Л сводится к разбиению булевой матрицы В на минимальное число строчных миноров, каждый из которых содержит единицы не более чем в t столбцах. Декомпозиция операторов Tv и Гд также сводится к этой задаче, для чего достаточно заменить в матрице Т значение 0 на 1, «—» на 0 и обозначить полученную матрицу через В. Эта задача уже рассматривалась в гл. 1, где были предложены два метода ее решения. Первый из них, точный, заключается в построении всех максимальных миноров с указанным свойством и последующем нахождении кратчайшего покрытия ими исходной матрицы. Второй, приближенный, реализуется путем последовательного формирования строчных миноров, включаемых в решение. Очередной минор формируется из числа еще непокрытых строк матрицы В. Этот процесс начинается с выбора максимальной по числу единиц строки минора и продолжается путем присоединения к минору последо-
298 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ вательно строк, имеющих максимальное (по числу компонент со значением 1) пересечение с ним. Процесс завершается, когда присоединение любой новой строки выводит минор из класса допустимых, т. е. содержащих единицы не более чем в t столбцах. Допустим, что требуется реализовать функциональное отношение между булевыми векторами х и у, заданное уравнением у = В^х с операторной матрицей 13 = а Ь с d е f g h i j к I m n о р q r '0 1000000010100000 0' 001000010000011000 100100000010000001 0010 0 0001001000000 01000001000 0 000100 000110000010000000 000000010000000010 010000000001000110 010000000000100100 000010100000000001 001000001001010000 000001000000100100 010000000100100001 100100100000000000 10 11 12 13 14 размером (14 x 18), в то время как элементарные матричные схемы имеют размер (4 х 6). Будем искать решение приближенным методом. Процесс начинается с выбора строки 2, как первой из максимальных. Перебирая подряд остальные строки матрицы, останавливаем выбор на строке 11, как совместимой со строкой 2 и имеющей с ней максимальное пересечение— в компонентах сип, где обе строки имеют значение 1. Минор, составленный из этих двух строк, имеет единицы в тех же столбцах, что и вектор 001000011001011000 — дизъюнкция строк 2 и 11. Сравнивая этот вектор с другими строками матрицы и учитывая, что число единиц в нем имеет максимально допустимое значение — 6, заключаем, что к минору можно присоединить еще лишь одну строку — 4. Так находится первая совокупность
24, ДЕКОМПОЗИЦИОННЫЕ МЕТОДЫ СИНТЕЗА 299 строк a bed e f g h i j'klmnopqr ГО 0100001000001100 0] 2 001000001001000000 4, LooioooooiooioiooooJ.il где единицы сосредоточены в шести столбцах: с, h, i, Z, п и о. Очевидно, что при реализации элементарных дизъюнкций, представленных этими строками, остальными столбцами, сплошь заполненными нулями, можно пренебречь. В результате оказывается достаточным взять элементарную матричную схему с шестью входами, описываемую уравнением ух = В^х^ в котором информационные векторы и значение операторной матрицы определены следующим образом: *i = (с, h, i, Z, п, о), у1 = (у2, уь, уп), с h i I n о 2 *.-! ' [1 1 0 0 1 Л 2 10 110 0 4, 1 0 1 1 1 0J и На втором этапе выбирается вторая из максимальных строк — строка 3. По тем же правилам к ней последовательно присоединяются строки 6, 10 и 14 и синтезируется элементарная матричная схема, описываемая уравнением у2 = В^х2, где х2 = (a, d, e, g, к, г), у2 = (у3, г/в, г/10, у14), a d e g к г Г1 1 0 0 1 Л 3 d _|0 1 1 0 1 0 I в 2 0 0 1 1 0 1 10' L1 1 0 1 0 0J и Далее выбирается строка 8 и этот выбор приводит к построению элементарной схемы, для которой у3 = В^Хз, *з = (Ь, К h h P, ?), Уз = (Ух, Уь, Ун Уз), Ь h J I v Q [1 0 1 1 0 0~| 1 110 0 10 5 0 1 0 0 0 1 7' 1 0 0 1 1 lJ •
300 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Наконец, остальные строки собираются в последний минор, которому будет соответствовать элементарная схема со следующим описанием: у4 = £^х4, х4 = (Ь, /, /, т, р, г), у4 = (г/о, г/12, Уга), Ъ f j m p r [1 0 0 1 1 01 9 0 1 0 1 1 0 М2 . 1 0 1 1 0 1_| is Полученная в результате схема, реализующая заданное функциональное отношение, изображена на рис. 69. Рассмотренную задачу можно интерпретировать как нахождение некоторой минимальной системы миноров с ограниченными размерами (s х t), содержащих в совокупности все единицы заданной матрицы В. Решение этой задачи становится наглядным при некоторой перестановке строк и столбцов в матрице В. Например, в данном случае матрица В приводится к виду, показанному на стр. 301. Из полученной картины становится ясным, почему метод применим к «редким» матрицам, содержащим относительно небольшое число единиц (или число единиц и нулей в случае троичной матрицы). Процесс решения задачи сводится к выбору миноров с повышенной плотностью элементов с этими значениями. Комбинированная декомпозиция. Не всегда, однако, можно надеяться на выполнение условия, заключающегося в том, что число единиц в любой строке матрицы В не должно превышать t — числа входов в элементарной матричной схеме. Даже в случае «редких» матриц это условие может быть нарушено, и в заданной матрице В найдется некоторая строка, со- п о h I Рис. 69. Одноярусная сеть из типовых ПЛМ, синтезированная методом «группирования строк «редкой» операторной матрицы (номера ПЛМ совпадают с номерами соответствующих структурных матриц).
24. ДЕКОМПОЗИЦИОННЫЕ МЕТОДЫ СИНТЕЗА ;t()i a d e g к г f т Ь j p q h I с i n о I 11001 Г[00 000 000 0000 3 01101 0j00 000 0 0.0 0000 б 00110 1J00 000 000 0000 Ю 110100 I 000000000000 14 ooooojooi io iTo oooooo 9 0000 0)0 11001 JO 000000 12 00000 1 01 110J000 0000 13 00000 0 00 j 110 001 j 0000 l 00000 0 00 jlOl OlOjOOOO 5 ooooo о oofooo noioooo и 00000 О 00И01 1 ^.LL-2_°_2 I 8 ooooooooooo olio ioii I 2 00000000000 OJO 11100 4 L ooooo о oo ooo о J о i liio J i1 держащая более чем t единиц. Ясно, что в этом случае, располагая элементарными матричными схемами размером (s х t), нельзя найти решение задачи реализации заданного функционального отношения у = Svx в классе одноярусных схем и необходимо перейти к синтезу по крайней мере двухъярусной схемы. Если все же большинство строк матрицы В удовлетворяет указанному условию, описанный выше метод параллельной декомпозиции может оказаться полезным, поскольку его можно применить к этим строкам и получить некоторое неполное решение. После этого останется рассмотреть «нестандартные» строки с повышенным числом единиц в них. Их можно реализовать по частям, использовав для этой цели, в частности, оставшиеся свободными строки в уже построенных элементарных схемах. На втором ярусе сети эти части будут подвергнуты операциям дизъюнкции. Проиллюстрируем идею этого подхода на уже знакомом нам примере, в данном случае слегка измененном. Допустим, что в результате поиска системы миноров размером (4x6), покрывающей множество единиц некоторой операторной матрицы В, и после соответствующей перестановки строк и столбцов в ней мы получили
302 ГЛ. 6, МНОГОЯРУСНЫЕ , КОМБИНАЦИОННЫЕ СЕТИ матрицу 0 0 0 0 0! 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Q 0 0 0 0 0 0 0 0 0 0 о о! 1 1 О О О 1 О О о(О 0 0 1 О о I 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 О 1 О О 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 О О 1 0 1 1 1 О О ooooo!iiooio!i!oi 1110 6 10 14 9 12 13 1 5 7 8 2 4 отличающуюся от рассмотренной выше наличием дополнительных единиц в строках 3 и 11 заданной нумерации. Можно заметить, что почти все из этих дополнительных единиц могут быть реализованы в составе миноров Вг и 2?4 прежнего решения, если туда добавить по соответствующей строке, получив, таким образом, i Вг = В* = 1 П 2 1 1 О О -10 10 0 0 0 1 0 111 .011110. г 1 т \ь з р "001101" 110 0 10 0 110 0 1 L1 0 1 1 1 0- Теперь строка 3 матрицы В может быть представлена как дизъюнкция трех компонент, заданных строкой 3 минора Вг, строкой 3 минора В2 и входной переменной д, а строка 11 матрицы В — как дизъюнкция также трех компонент, заданных строкой 11 минора В19 строкой 11 минора ВА и переменной q. Эти дизъюнкции реализуются з 11 и 12 ' 13
24. ДЕКОМПОЗИЦИОННЫЕ МЕТОДЫ СИНТЕЗА 303 элементарной матричной схемой, образующей второй ярус синтезированной схемы (рис. 70). Метод матричной факторизации. Возможны практические ситуации, в которых каждая из строк исходной булевой матрицы В будет содержать, как Wf; с L п о h I Рис. 70. Сеть, синтезированная методом комбинир о ионной декомпозиции. правило, единиц больше чем t. Как в этом случае синтезировать сеть, составленную из элементарных однотипных схем размером (s x t) и реализующую функциональное отношение у = i?vX| заданное матрицей S? Будем искать решение в классе двухъярусных схем, имея в виду, что решение должно существовать, если только максимальное число единиц в строке матрицы В не превышает t2. Очевидно, что это условие достаточно мягкое. Идея предлагаемого ниже метода заключается в снижении рангов рассматриваемых элементарных дизъюнкций, заданных матрицей S, путем факторизации — отщепления от дизъюнкций некоторых частей, каждая из которых может быть реализована на одной элементарной матричной схеме и представлена затем промежуточной переменной, снимаемой с соответствующего выходного
304 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ полюса этой схемы. Так синтезируется первый ярус схемы. Этот процесс прекращается не раньше, чем ранги всех дизъюнкций снизятся до величины t. После этого становится непосредственно применимым уже знакомый нам метод параллельной декомпозиции, реализация которого приводит к получению структуры второго яруса схемы. Основные трудности синтеза связаны всегда со стремлением получить не просто решение, а оптимальное решение, например минимальное по числу использованных компонент. Для получения решения, близкого к оптимальному в этом смысле, будем придерживаться следую- щих двух правил. Во-первых, отщепляемые при факторизации части должны быть общими для нескольких дизъюнкций, и чем больше их число, тем лучше. Это правило, по существу, не отличается от известного правила факторизации, используемого при синтезе комбинационных схем из «обычных», не матричных логических элементов. Второе правило специфично. Вводя в синтезируемую сеть новую компоненту — элементарную матричную схему, следует реализовать на ней не одну часть некоторой элементарной дизъюнкции (это было бы невыгодно), а несколько, лучше всего s, чтобы более полно использовать возможности элементарной схемы. При этом число t входных полюсов элементарной схемы ограничивает не только ранг реализуемых частей, но и общее число их аргументов, в связи с чем обычно оказывается нерациональным максимизировать ранги этих частей по отдельности. Факторизация может вестись в режиме поиска единичных (составленных из элементов со значением 1) миноров матрицы S, желательно больших размеров, но не превышающих по числу столбцов параметра t. При этом введение в синтезируемую сеть одной элементарной матричной схемы и определение ее внутренней структуры будет соответствовать нахождению такой совокупности из s миноров данного типа, которая образована на общем базисе из t столбцов матрицы В. Построение такой совокупности может вестись последовательно: сначала в матрице В отыскивается некоторый достаточно крупный минор, определяющий часть столбцов матрицы 5, последующие
24, ДЕКОМПОЗИЦИОННЫЕ МЕТОДЫ СИНТЕЗА 305 миноры выбираются так, чтобы число захваченные минорами столбцов росло по возможности медленно и не выходило за допустимые пределы. Перейдем к рассмотрению конкретной задачи, уточняя метод по ходу ее решения. Пусть 5 = 3, t = 4 и В = а 0 0 0 0 1 0 1 0 1 1 0 1 ь 1 0 1 1 0 0 0 0 0 0 0 0 с 0 1 0 1 1 1 0 1 0 1 1 0 d 0 0 1 0 1 0 1 0 1 1 0 0 е 1 0 1 1 1 1 0 1 1 0 0 0 / 0 1 0 0 0 1 0 0 0 0 0 0 g 1 1 1 1 0 1 0 0 0 1 1 0 h 0 0 0 1 0 0 0 1 0 0 1 0 г 1 1 1 0 0 0 1 1 0 0 0 0 ; 1 0 0 0 1 0 0 0 1 1 0 0 к 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 т 0" 0 0 0 0 0 1 0 0 0 0 1 1 2 3 4 о 6 7 8 9 10 11 12 Приступим к формированию первого элемента первого яруса сети. Процесс начинается с поиска максимальных единичных миноров, не превышающих по числу столбцов параметра t. Это — достаточно сложная комбинаторная задача, в детали решения которой мы вникать здесь не будем. Скажем лишь, что в данном случае выбор падает на единичный минор (1, 3, 4) х (Ь, е, g). Таким образом, отыскивается элементарная дизъюнкция Ъ \J e\J g, представляющая собой общую часть для дизъюнкций, заданных строками 1,1 3 и 4 матрицы В. Реализуя эту часть отдельно на некоторой элементарной матричной схеме, мы понижаем тем самым ранг каждой из упомянутых дизъюнкций на 2, поскольку дизъюнкция b \/ e\J g заменяется на одну промежуточную переменную (обозначим последнюю через %). Далее к выбранным столбцам 6, е и g можно добавить лишь один, так чтобы общее их число не превышало четырех. Этот новый выбор делается так, чтобы на образовавшемся базисе столбцов можно было найти еще пару единичных миноров, по возможности крупных. В данном случае выбирается столбец с, а затем миноры (2, 6, 10, И) х (с, g) и (5, 6) х (с, е).
306 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Так в первый ярус синтезируемой сети вводится элементарная матричная схема, реализующая функциональ-. ное отношение ъх = BiXx между векторами хх = (Ь, с, е9 g) и ъг = (zx, z,t z3), где Ь с е g [1 0 1 11 1 0 1 0 1 2. 0 1 1 0J з Полезно учесть реализованные полученным частичным решением элементы исходной матрицы В, чтобы сосредоточить внимание на остающихся. Переведем соответствующие элементы матрицы на положение неопределенных: В = а 0 0 0 0 1 0 1 0 1 1 0 1 ъ — 0 — — 0 0 0 0 0 0 0 0 с 0 — 0 1 — — 0 1 0 — — 0 4 0 0 1 0 1 0 1 0 1 1 0 0 е — 0 — —> — — 0 1 1 0 0 0 / 0 1 0 0 0 1 0 0 0 0 0 0 g — — — — 0 — 0 0 0 — — 0 h 0 0 0 1 0 0 0 1 0 0 1 0 i 1 1 1 0 0 0 1 1 0 0 0 0 i 1 0 0 0 1 0 0 0 1 1 0 0 к 0 0 0 0 0 0 1 1 1 0 0 1 I 0 1 0 1 0 0 0 0 0 0 1 0 m 0" 0 0 0 0 0 1 0 0 0 0 1 1 2 s 4 6 e 7 8 9 10 11 12 Второй комплект из трех единичных миноров открывается минором (5, 9, 10) х (а, <2, /'), затем к нему присоединяются миноры (3, 7) х (d, i) и (1) X (г, /). Они определяют в совокупности структуру второй элементарной схемы, реализующей отношение z2 = B)[x2 между векторами х2 = (a, d, t, ]) и z2 = (z4, z5, *e), где В. [1 1 0 1] 4 0 1 1 О б, 0 0 1 lj в Далее процесс развивается аналогично и приводит к включению в первый ярус синтезируемой сети еще двух элементарных матричных схем, описываемых следующим
24. ДЕКОМПОЗИЦИОННЫЕ МЕТОДЫ СИНТЕЗА 307 образом: z8 = #^х3, х8 = (а, е, к, m), z8 = (z7, z8), S3 = 10 11] 0 1 1 0 I Z4 = ^>4 ^4> х4 = (с, А,-I, Z), с h г I Z4 = (29, 2ю, Zu), в, [1 1 О 1"| 1110 0 0 1 1J В результате на первом ярусе сети оказываются реализованными одиннадцать элементарных дизъюнкций, значения которых представляются промежуточными переменными zx, z2, . . ., zn. Исходные элементарные дизъюнкции, представленные в матрице В, выражаются через них, а также через двенадцатую — дизъюнкцию первого ранга / — посредством следующей дизъюнктивной матрицы, столбцы которой соответствуют промежуточным переменным: 123 466789 10 11 12 '10000100000 0' 010000000011 100010000000 100000001000 001100000000 011000000001 000010100000 000000010100 000100010000 0 10100000000 0 10000001000 000000100000 1 2 3 4 б в 7 8 9 10 11 12 Ранги строк этой матрицы не превышают трех, поэтому можно перейти к синтезу второго яруса сети, применив с этой целью метод параллельной декомпозиции. Задача сводится теперь к разбиению множества строк построенной матрицы на минимальное число групп, каждая из которых должна удовлетворять следующим требованиям: а) число строк в группе ограничено тремя,
308 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ б) число столбцов, в которых по крайней мере одна из строк группы имеет значение 1, ограничено четырьмя. Заметим, что строка 12, содержащая лишь одну единицу, может при этом не приниматься во внимание, поскольку соответствующая ей функция исходной системы уже реализована — промежуточной переменной z7. При решении этой новой задачи можно применять различные подходы, описанные ранее, например основанные на использовании динамического дерева поиска, полный обход которого приводит к точному решению, а сокращенный — к некоторому приближению. В данном случае. применимо следующее рассуждение. Будем говорить, что две булевы строки пересекаются на компонентах, где обе они имеют значение 1. Исходя из общих соображений, разумно предположить, что чем сильнее пересекаются некоторые строки, тем целесообразнее включить их в одну группу, если только они совместимы. Например, в данной матрице сильнее всего пересекаются строки 2 и 6, а именно на двух компонентах 2 и 12. Очевидна их совместимость — общее число столбцов, где эти строки имеют значение 1, равно четырем. Правда, добавить к ним третью строку уже не удастся. Выполнив эту операцию — образование группы (2, 6),— перейдем к рассмотрению остатка матрицы 123456789 10 '100001000 0 1000100000 1000000010 0 011000000 0000101000 0000000101 0001000100 0101000000 0100000010 Этот остаток замечателен тем, что все его строки содержат ровно по две единицы. Это позволяет придать задаче теоретико-графовый характер, построив неориентированный граф, вершины которого соответствуют столбцам рассматриваемой матрицы, а ребра, соединяющие некоторые вершины,— строкам, имеющим значение 1 в соответствующих столбцах (рис. 71). Решение задачи
24, ДЕКОМПОЗИЦИОННЫЕ МЕТОДЫ СИНТЕЗА 309 сводится к покрытию множества ребер данного графа минимальным числом подграфов, каждый из которых содержит не более четырех вершин и трех ребер. В данном случае решение представляется очевидным и показано на рисунке штриховыми линиями, выделяющими искомые подграфы. Интерпретируя полученное на графе решение, мы находим соответствующие группы строк (1, 3, 7), (4, 10, 11), (5, 8, 9), образующие совместно с полученной ранее ^ -^^ группой (2, 6) основу для решения задачи синтеза второго яруса логической сети. В соответствии с этой основой второй ярус сети будет содержать четыре элементарные матричные схемы, описываемые уравнениями у* = BY ъи где i = 5, 6, 7, 8 (продолжаем нумерацию вводимых элементарных схем, используя номера от 5 до 8). В этих уравнениях z5 = (*ъ *б» *в, *?), У5 = (Уг, Уз, */?), 15 6 7 о 1 ,'7Т^ч * id) з\\ 1 Й)] \ уС^1 \ Ю7 У \ ч-/ ^ ч, ,-" ОУ tf / 4 Vs ' / w ®/ / 2^ w/ m8 / l vy s 4^ ^^.^ Рис. 71. Граф, эквивалентный булевой матрице, строки которой содержат по две единицы. Вь = [1 0 1 01 1 . 110 0 3; 0 1 0 1J 7 ze = («1, z2, z4, Z9), 1 2 1 0 0 Уе = (»4, Ую, Ун). 4 9 /Л = [1 0 0 1"| 4 0 110 1°; 0 1 0 1J и z7 = (*з, z4, z8, *10), у7 = (г/5, 1/8, г/э), 3 4 8 10 В7: [1 1 0 01 5 0 0 1 1 8; 0 1 1 0J э z8 = (z2, z3, *п, z12), у8 = (у2. z/6), 2 3 11 12 2 б ' д i 1 0 1 11 2 ^8~ U 1 0 1 I в
310 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Так находится окончательное решение, определяющее структуру сети, изображенной на рис. 72. Заметим, что Рис. 72. Сеть, синтезированная методом матричной факторизации. с целью упрощения рисунка выполнены некоторые перестановки как над выходными полюсами схем первого яруса, так и над входными полюсами схем второго. 25. Синтез одноярусных сетей из ПЛМ Методы стандартной декомпозиции. Будем рассматривать теперь задачу синтеза комбинационных сетей не из элементарных матричных схем, а из реальных программируемых логических матриц, структура которых описывается булевыми и троичными матрицами ограниченных размеров. Положим, что максимальные размеры булевой матрицы В равны (s x г), а троичной матрицы Т — (г X t). Параметры этих ограничений можно показать непосредственно в уравнении ПЛМ, определяющим функциональное отношение между входным и выходным информационным векторами х и у:
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЙМ 341 Допустим, что синтезируемая сеть должна реализовать некоторое функциональное отношение, заданное также в виде матричного уравнения у = BvTAx, однако размеры входящих в это уравнение матриц В и Т, равные соответственно (т х I) и (I X п), могут превышать параметры реальных ПЛМ. Можно представить себе соответствующую «большую» ПЛМ, описываемую уравнением У = (m)B(i)T(n)x, (25.1) и непосредственно реализующую заданное отношение, но поскольку такая ПЛМ в общем случае нереальна, возникает задача ее декомпозиции на реальные ПЛМ ограниченных размеров. Начнем исследование этой задачи с простейших ситуаций. Если m ^ s, I ^ г и п ^ t, решение оказывается тривиальным — в этом случае понадобится лишь одна ПЛМ, у которой будут задействованы п входных, /промежуточных и m выходных полюсов. Довольно простые стандартные решения могут быть предложены и для тех случаев, когда п <^ t. Если в уравнении (25.1) нарушается ограничение на число выходных переменных, т. е. если I ^ г и п <; t, но m ^> 5, то синтез сети может проводиться методом стандартной декомпозиции по выходным переменным. При этом вектор у разбивается на части, длина которых ограничена параметром s, а матрица В разбивается на соответствующие строчные миноры: У = (У1 У2, . . ., У*)» В = [Вь В2, . . ., Вк], где /с=]—[—; ближайшее к — сверху целое число. Сеть строится из параллельно включаемых ПЛМ, реализующих указанные части по отдельности: yi = £V'/V «=1,2,...,*. На рис. 73 приведен пример такого решения для случая к = 2. Если нарушено ограничение на число промежуточных переменных (1^> г при т <^ s и п <^ t), то решение может быть получено методом стандартной декомпозиции по
312 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ промежуточным переменным. Этот метод связан с разбиением матриц В и Т на миноры, соответственно столбцовые и строчные, размеры которых ограничены параметром г: В = (#!, S2, . . ., Bq), Т = [Ти Т%, . . ., Тп q*, I где q=] — [. Структура сети определяется при этом уравнениями у = Ух V у2 V • • • V у«> у, = BYTfx, 7 = 1,2,.. ., д. Известно, что операция дизъюнкции над выходными переменными ПЛМ может быть иногда технически реализована непосредственным соединением соответствующих полюсов, если только схема не ветвится в этих точках, а) U» т в. т "а" -| " А % в) Рис. 73. Стандартная декомпозиция по выходным переменным: а) исходная «большая» ПЛМ, б) эквивалентная ей сеть из реальных ПЛМ. т. е. какая-либо из этих переменных не входит в несколько различных дизъюнкций. На чертеже такое соединение принято обозначать жирной точкой, в которой сходятся проводники, несущие значения соответствующих булевых переменных. Если в такой точке сходятся две жирные линии, представляющие некоторые два набора «двоичных» проводников (оба набора должны при этом содержать одинаковое число проводников), то она представляет схемную реализацию операции дизъюнкции над соответствующими булевыми векторами — проводники соединяются попарно. В методе стандартной декомпозиции по промежуточным переменным используется имен-
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 313 но этот способ реализации элементарной дизъюнкции У = Yi V Уг V • • • V Уд- На рис. 74 приведена иллюстрация к описанному методу (при q = 3). Если же нарушаются оба ограничения, когда / |> г иж>8и лишь га ^ i, то можно рекомендовать комбинированный метод стандартной декомпозиции ПЛМ одновременно по промежуточным и выходным переменным, *Н Ъ в, т2 \ т3 в2 \ в3 Г*У т3 1^1* а) В) Рис. 74. Стандартная декомпозиция по промежуточным переменным: а) исходная «большая» ПЛМ, б) эквивалентная ей сеть из реальных ПЛМ. представляющий собой комбинацию двух предыдущих методов. При этом методе разложению подвергаются вектор у и обе матрицы В и Т: У = (Ун Уг, . . ., У*)> где к=]—[ и каждый вектор yt содержит не более s компонент, Т = \ТЪ Т2, . . ., Tq), где q =] — [ и каждый минор Tj содержит не более г строк, В = [(#1д, #1,2, • • • , #1, q), (#2,1? #2,2> • • • > #2, q), • • • • • • > №г,1> ^М> • • • » #*,«)]• Структура сети, синтезированной по этому методу, будет описываться уравнениями Уг = Уг, 1 V У*. 2 V • • • V У«, 9» v. ._ />У .^Д Л, ; — ■'■■'г, ;■* ; А7 i = 1, 2, . . ., к, / = 1, 2, . . ., д.
314 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Иллюстрирующий пример показан на рис.75. Сокращение числа ПЛМ. При стандартной декомпозиции число ПЛМ в сети определяется однозначно оно оказывается равным k-q, где к= — , a q = — . Между тем число ПЛМ иногда можно сократить, и тем сильнее, чем меньше единиц содержится в матрице В. Для этого выходные переменные надо группировать ' 1 '2 BU \ВК2 в2,1 \В2,г т,А Bl °2,3 Уг Яг а) в,,, CF^Tli Bl,Z Кг У» Bh Ui 82,3 Уг,2 .«?,з; 4 б) У2 У Рис. 75. Стандартная декомпозиция по промежуточным и выходным переменным: а) разбиение структурных матриц исходной «большой» ПЛМ, б) синтезированная сеть из реальных ПЛМ. не в порядке их номеров, а так, чтобы соответствующие этим группам строчные миноры матрицы В содержали единицы по возможности в меньшем числе столбцов. Дело в том, что при схемной реализации строчного минора можно ограничиться рассмотрением только таких столбцов, и число ПЛМ в соответствующем ряду сети будет равно уже не д, а — , где и — число ненулевых столбцов в строчном миноре.
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 345 Задача эта весьма напоминает рассмотренную еще на стр. 92—96 задачу разбиения системы функций и отличается от нее следующими дополнительными условиями: во-первых, число строк, включаемых в один минор матрицы S, ограничивается заданным параметром s, во-вторых, качество каждого минора определяется не величиной и, а величиной — . Задача оказывается довольно сложной, и можно предложить для ее решения различные методы, как точные, так и приближенные. Рассмотрим здесь один из приближенных методов, достаточно простой для реализации. Будем конструировать строчные миноры последовательно, начиная каждый раз с включения в очередной минор некоторой максимальной (по числу единиц) строки из числа пока нераспределенных по минорам и добавляя затем последовательно строки, максимально пересекающиеся с покомпонентной дизъюнкцией уже включенных в минор строк. При этом общее число строк в миноре доводится до s (конечно, для последнего из формируемых миноров может быть сделано исключение — берется остаток). Кроме того, могут учитываться и некоторые дополнительные соображения, связанные со спецификой оценки качества минора. Пусть у = 2?vrAx, где 12 3 4 5 6 8 9 10 11 12 13 14 15 в = '10000001010010 0' 000100000001010 110010000100100 000010110001100 100000011000101 011001010000100 000100000011010 10 0 010101001001 000100000011000 1 2 3 4 5 » в 7 8 9 а матрица Т имеет вид, приведенный на стр. 316. Положим, что параметры реальной ПЛМ суть следующие: s = 3, г = 4, t = 4. В то же время в данном примере = 9, I = 15 и п = 4. Поскольку к== -^- =3, a q — \-т-\ =4, прямое применение метода стандартной де- m
316 гл. 6. Многоярусные комбинационные сети Т = 1 — 1 — — 0 0 1 — — 0 1 — — 1 2 — — 1 — 0 0 1 0 — 1 — 0 1 — 3 1 0 — 1 — — 1 0 1 — — 0 — 4 1 ■ — 1 0 — 1 — — 0 — 1 1 — 0 1 2 3 4 5 в 7 8 9 10 11 12 13 14 15 композиции по промежуточным и выходным переменным привело бы к схеме, составленной из к- q = 12ПЛМ. Посмотрим, насколько удастся ее сократить, следуя предложенным правилам выбора миноров. Первый строчный минор конструируется из максимальной строки 8, имеющей максимальное пересечение с ней строки 4 и строки 5, не содержащей единиц в каких- либо новых столбцах. Удалив из этого минора нулевые столбцы, получим 1 5 7 8 9 12 13 15 "01110110" Вх = | 1 0 0 1 1 0 1 1110 110 G id ОТ4 1 б. 1.J8 Построение второго минора начинается с выбора строки 3 и приводит к следующему результату: 1 2 3 Б 6 8 10 13 [1 0 0 0 0 1 1 1~] 1 110 10 0 113. 0 1 1 0 1 1 0 lj б Третий минор образуется из остальных строк: 4 11 12 14 [1 0 1 11 2 1 1 1 1 7. 1 1 1 0J -J
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 317 Очевидно, что последний можно реализовать на одной ПЛМ заданных размеров, а каждый из первых двух — на двух ПЛМ. Для этого надо разложить их на четырехстолбцовые миноры, причем возможна дополнительная оптимизация, заключающаяся в сокращении площади элементарных схем на первых ярусах ПЛМ. Эта задача решается путем рассмотрения соответствующего строчного минора матрицы Т. Данный минор разбивается на строчные миноры с числом строк не более г (в нашем случае — с четырьмя строками), с минимизацией числа литералов в каждом из них, т. е. суммы чисел столбцов, содержащих единицы, и столбцов, содержащих нули. Напомним, что аналогичная задача была рассмотрена в предыдущей главе. Например, минору Вх соответствует минор Tt = *М = 1 1 1 1 2 1 — 3 1 — 4 1 "I 1 0 J — — 0 0 0 - 1 1 - 0 1 — - 0 1 - 1 — — — 1 — — — 1 -1 — 1 — — 1 1 о J у строчных м 1 8 12 У 15 ^1,2 = 1 5 7 8 9 i 12 ;3 15 ИНО] 1 гО 0 |_— зов 2 0 0 0 1 — — 1 . 5 7 9 > 13 с пятью и четырьмя литералами соответственно. Этим разложением определяются и. миноры 8 12 15 13 ГО 1 1 01 4 Г1 1 0 114 Ям= 1 1 0 lK Bh2= 0 0 11* [_i о 1 lj 8 [i i I oj 8 Аналогичный анализ минора В2 приводит к следующему
318 ГЛ. 6, МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ результату:] 1 2 0 0 1 0 3 — — — — 4 1 _ 1 б 6 8 |l3 1 __ 1 I 3 f ^2,2 — 1 2 3 10 5 в 8 13 [1 О О Л * ГО 0 1 Л 1 1 1 0 1 hf Да2= 1 О О 13. о 1 1 oj в Lo 1 1 ij в На этом синтез завершается. Полученная сеть изображена на рис. 76. Как видно, число ПЛМ удалось сократить с двенадцати до пяти. Декомпозиция ПЛМ с короткими термами. Труднее синтезировать сеть, реализующую отношение У = (т)В (1)Г (п)* с большим значением параметра п — числа входных переменных. Этот случай, когда п^> t, целесообразно разделить на два варианта: при первом из них ранги всех элементарных конъюнкций, представленных в матрице Т, т. е. термы реализуемой системы булевых функций, ограничены параметром t, при втором это ограничение нарушается. В первом варианте возможно синтезировать сеть из одного яруса параллельно включенных ПЛМ, во втором варианте это оказывается невозможным. Рассмотрим пока решение задачи синтеза сети в первом варианте. Начнем декомпозицию заданной «большой» ПЛМ с матрицы Т. Разобьем ее на строчные миноры Т±, Т2, . . . . . ., Тк размером не более чем в г строк, причем такие, чтобы число столбцов, содержащих значения 0 и 1, не превышало t. Будем при этом стремиться минимизировать значение параметра к. Из компонент вектора х, соответствующих указанным столбцам, сформируем векторы хх, х2, . . ., xfc. Полученное разбиение на множестве строк матрицы Т однозначно определит соответствующее разбиение на множестве столбцов матрицы В — она окажется разбитой на столбцовые миноры Вх, Вг, . . ., Вк.
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 319 Теперь можно заменить исходное уравнение функциональной связи эквивалентной ему системой y = yiVyiV--:Vyb yi = iWxi, i=l,2,...,ft, в которой каждый входной вектор х^ содержит не более t компонент. Этим самым задача сведена к уже рассмотренной — остается провести декомпозицию полученных уравнений по промежуточным и выходным переменным. X 123 4 Рис. 76. Сеть, минимизированная по числу ПЛМ. Реализация системы слабо определенных булевых функций. Продолжим рассмотрение случая большого числа переменных, однако положим, что на этот раз функциональное отношение между булевыми векторами х и у задается не составным операто-
320 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ ром BVTA, а входной информационной матрицей X, задающей своими столбцами некоторые входные наборы, и выходной матрицей У, содержащей в качестве своих столбцов соответствующие выходные наборы. При этом число строк в матрице X превышает значение параметра t — числа входных полюсов в реальной ПЛМ. Такая пара матриц задает в общем случае некоторую систему частичных булевых функций, как правило, слабо определенных, и при реализации эти функции будут как-то доопределяться. Очевидно, что способ доопределения функций целесообразно подчинить задаче минимизации числа ПЛМ в синтезируемой сети, реализующей заданное функциональное отношение. Доопределение булевых функций связано с расширением области их задания, и наиболее простой способ такого расширения заключается в замене первоначальных значений (0 или 1) некоторых элементов матрицы X на «—». Эта операция может интерпретироваться как замена соответствующих рассматриваемым столбцам элементов булева пространства значений входного вектора х на некоторые содержащие их интервалы, на каждом из которых значения функций будут пострянны. Очевидно, что эта замена допустима, если в результате ее каждой паре ортогональных столбцов матрицы Y будет соответствовать пара также взаимно ортогональных интервалов. Данный способ обобщается на основе смены интерпретации матрицы У, строки которой рассматриваются теперь как дизъюнктивные нормальные формы, образованные из элементарных конъюнкций, представленных некоторыми столбцами преобразованной матрицы X, а именно теми, которые отмечены единицами в рассматриваемой строке матрицы У. При этом прежний запрет на пересечение интервалов, представляемых столбцами матрицы X, смягчается: каждой паре ортогональных столбцов матрицы Y должны соответствовать интервалы, не пересекающиеся на породивших их входных наборах, но они могут пересекаться на других элементах пространства значений входных переменных. Очевидно, что это условие будет всегда выполняться, если любой входной набор, представленный в исходной матрице X, будет принадлежать одному и только одному из интервалов, заданных столбцами матрицы X после ее преобразования. Это упрощенное условие исполь-
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 321 зуется в излагаемом ниже методе реализации системы слабо определенных булевых функций сетью из реальных ПЛМ. В некоторых случаях оказывается возможным присвоить значение «—» всем элементам некоторой строки матрицы X, устранив таким образом в реализации зависимость от соответствующей входной переменной. Иногда можно проделать такую операцию над некоторой совокупностью строк, и в наиболее благоприятной ситуации число остальных строк, т. е. число нефиктивных аргументов в реализации, уже не будет превышать значения параметра t. В таком случае задача решается просто, поскольку она сводится к уже знакомой нам задаче синтеза сети с ограниченным числом входных переменных. Этот путь связан с минимизацией числа входных переменных, которая может проводиться описанным ранее (стр. 137) методом нахождения минимального диагностического теста, в данном случае — минимального строчного минора матрицы X, все столбцы которого должны быть попарно различны. В нетривиальных ситуациях снизить число входных переменных до t не удается. Однако может представиться возможность найти решение задачи синтеза в классе параллельных композиций сетей с ограниченным (параметром t) числом входных полюсов. Рассмотрим соответствующий метод синтеза, демонстрируемый на следующем примере. Пусть t = 4, 1 '0 0 0 0 1 1 1 0 0 J I rl 0 0 Li 2 3 1 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 2 3 0 0 0 1 1 0 0 1 4 0 1 0 1 1 1 1 1 0 1 4 1 1 1 0 5 0 0 0 0 1 1 0 0 0 0 5 1 0 0 0 6 0 0 1 0 0 1 0 0 1 1 6 0 1 0 0 7 1 0 1 0 0 0 1 1 1 0 7 0 0 0 1 8 0 0 0 1 1 1 1 0 0 1 8 1 0 1 0 9 0 0 1 0 1 1 0 0 1 1 9 1 1 0 0 10 0 1 0 1 1 0 1 0 0 1 10 0 1 1 0 11 0 0 1 0 1 1 0 0 0 1 11 1 0 1 1 12 1 1 0 1 0 0 0 1 1 0 12 0 0 1 1 13 .14 0 (Г 0 1 0 0 0 1 1 1 \ 1 0 1 0 0 0 0 1 1_ 13 14 1 0- 1 1 0 1 1 1- о ь с d е 1 f 8 h г 3 1 1 1 2 1 3 ' J 4 \\ А. Д. Закрсвский
322 гл. 6. многоярусные комбинационные сети Метод заключается в поочередном рассмотрении столбцов матрицы X и выяснении возможностей подбора содержащих их интервалов, не затрагивающих другие столбцы. Эта частная задача решается путем построения матрицы различий между очередным столбцом и остальными и последующего выделения ее нижней границы — множества столбцов, не поглощающих другие. Например, столбцу 1 будет соответствовать следующая матрица его различий с другими столбцами: 3 4 б б 7 8 9 10 11 12 13 14 10001000010 0' 010000010101 100110101000 010001010101 1001 10000100 100010010100 101100101110 010010000100 100110100100 001010000100 Нижняя граница множества столбцов этой матрицы образует трехстолбцовый минор 0i = 7 "1 0 1 0 1 i 1 0 1 1 1 8 0 0 0 1 0 0 0 0 0 0 13 0" 0 0 0 0 0 1 0 0 о 1 Очевидно, что имеет смысл ограничиться рассмотрением максимальных из допустимых интервалов. Им соответствуют кратчайшие строчные покрытия данного минора, представляемые столбцами булевой матрицы
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 323 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0" 0 0 1 0 0 1 0 0 1 а ь с d е f g h г о Отсюда нетрудно перейти к векторному представлению искомых интервалов, для чего достаточно зафиксировать значения рассматриваемого столбца 1 матрицы X в компонентах, соответствующих элементам кратчайших покрытий, и заменить значения остальных компонент на «—»: и — 0 1 0 0 \ 0 1 1 0 1 \ 0 1 0 0 1 0 0 1 1 ъ с d е f g h г J Аналогично находятся матрицы D2, D3, . . ., Z)14, представляющие нижние границы матриц различий для остальных столбцов матрицы X: D,= 4 "1 0 1 1 1 1 0 0 1 1 7 10 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 12 0" 0 1 1 0 0 1 0 0 0 , D3 = 6 "1 0 0 0 0 1 0 0 0 0 7 10 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 1 0 12 0" 1 1 1 0 0 0 1 0 1 D.= |"1 0 1 1 1 1 0 0 1 I-1 1 0" 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 11*
324 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Db = 12 13 1 О' 1 О 0 о 1 О 1 О 1 О о о о о 1 14 #6 3 Г1 О О О О 1 О О О О 9 (Г О О О 1 О О О О О | в 11 D. О О О 1 О О О 1 О О О О' 1 О О О О о' О О О Dt = ГО О О О 1 О О О О О О О О О О О О О 1 О 01 D 13 9 13 "О О О о о о о о 1 о 1 5 'о о о о о о о о о о 0 о 1 О О ООО 0 0 0 О 1 О 0 0 0 0 0 0 о 0 1 0 0" 0 1 0 0 0 0 0 0 0 #12 D 14 , D7 #10 = 2 3 4 "001' 0 10' 1 1 0 ( 110 1 0 0 11 0 0 11 1 0 1 ( 0 10 1 0 0 11 0 1 1 С 4 8 == "0 С 0 1 0 С 0 С 0 ( 0 ( 0 С 1 ( 0 ( 0 ( = 2 5 '0 1 1 0 0 1 0 0 0 1 0 1 0 1 .0 1 0 1 0 0 2 3 12 "1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1 0 1 Ъ 10 L Г L 0 ) 0 1 0 1 1 1 0 ) 1 1 [ 1 ) 1_ 1 а ь с d е /> 8 h г j 10 ) 0" 0 ) 0 ) 0 ) 0 ) 1 ) 0 ) 0 ) 0 ) 0 1 а ь с d е / • е h г 3 8 г 0 1 1 1 1 0 1 1 1_ 14 0": 0 0 0 0 1 0 0 0 0 | 1 а ь с d е ■ ' g h i 5 а Ь с d е g h i j
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 325 Далее задача сводится к поиску минимальной системы допустимых покрытий для всех этих матриц. Точнее говоря, теперь требуется построить минимальную совокупность вектор-столбцов (десятикомпонентных, но не более чем с четырьмя единицами каждый), причем такую, что в ней для каждой из матриц Dx, D2, . . ., Du найдется столбец, представляющий собой строчное покрытие этой матрицы. Данную задачу можно редуцировать, если некоторые из матриц находятся в отношении мажорирования по покрытиям, будем говорить, что матрица Dt мажорирует по покрытиям матрицу Dj, если любое покрытие матрицы Dt оказывается одновременно покрытием матрицы Dj. Мажорируемые матрицы можно исключить из дальнейшего рассмотрения. Легко убедиться, что в данном случае матрица D9 мажорирует по покрытиям матрицу D2: единственное покрытие матрицы Ds — совокупность строк (b, d) — является покрытием матрицы D2. Анализируя и остальные матрицы, находим также, что матрица Dn мажорирует по покрытиям матрицу Dl2, а матрица Z)14 — матрицы £>3, Я4, #7 и D10. В результате проведенного редуцирования остается беспокоиться о нахождении покрытий для восьми оставшихся матриц. Пять из них имеют лишь по одному безызбыточному покрытию, представляемому соответствующим столбцом матрицы 11 0 0 1 0 0 0 0 0 1 0 13 0 0 1 0 0 0 1 0 0 1 14 0" 1 0 0 0 1 0 1 0 0 о ь с а е f • S h i J (номера столбцов совпадают с номерами матриц Du покрытиями которых они являются), и это существенно об- 8 "0 1 0 1 0 0 0 0 0 0 {> 0 0 0 0 1 0 0 0 1 0
326 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ легчает дальнейшее решение задачи. Теперь ее можно сформулировать как поиск минимальной системы вектор- столбцов с четырьмя единицами, среди которых для каждого столбца матрицы С найдется поглощающий его столбец, а для каждой из трех оставшихся матриц Dt = "1 0 1 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 °1 0 0 0 0 0 1 0 0 0 #5 = Г1 0 1 0 1 1 1 1 1 о 1 1 0 1 1 1 0 1 1 0 01 0 0 0 0 0 0 0 0 1 1 De = "1 0 0 0 0 1 0 0 0 0 0" 0 0 0 1 0 0 0 1 0 0 найдется столбец-покрытие. Ценой небольшого перебора находится точное решение этой задачи, представляемое матрицей 12 3 г° 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0" 1 0 1 о 1 0 1 0 0 Первый столбец этой матрицы служит покрытием для матриц Dx, Db и Z>13, второй — для матриц Z?e, #9, &п и Z>12, третий — для матриц D2, D3, Z>4, Z>7, Ds, D10 и Du. Так определяются три минора матрицы X: Xi = 1 б 13 ГО 0 Он 0 0 0 10 0 Li 0 i_ с d g » i х2 = 6 9 11 12 1 1 10- 0 110 1110 _1 1 0 1_ с е / г
25. СИНТЕЗ ОДНОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 327 Хя = 2 3 4 7 8 10 14 10 10 0 11- 0 0 10 111 0 0 10 10 1 10 110 0 0. дающие основу для построения реализующей сети из че- тырехвходовых ПЛМ. Не входящие в эти миноры элементы матрицы X приобретают значение «—», что приводит к получению следующей матрицы X*, задающей элементарные конъюнкции для системы ДНФ, реализующей исходные слабо определенные булевы функции: 10 11 12 13 14 Х* = 1 0 1 0 0 1 -001 0 0 — — 1 0 1 -00 — — — 1 0 1 - 0 1 1 - — 1 1 — — 1 0 1 — — 1 — 1 1 0 - - — 10 1 — — 10— 0 — — — 1 - — 1 — О - — о 1 Различные ДНФ этой системы будут представляться различными строками прежней матрицы 1 2 3 4 6 6 7 8 9 10 11 12 13 14 Г1 0 0 1 1 0 0 1 1 0 1 0 1 Он 1 001101001100112 OlOlOOOlOlllOlj3' .1 0 1 0 0 0 1 0 0 0 1 1 1 1_| 4 Y = интерпретация которой соответственно меняется: У\ = cdgj V bdfh V cdgj V bdfh V cefi V сер V ~c<igh Уг = Ы]Ъ V bdfh V cefi V cefi \/ bdJTiy cdgj V bdfh, Уз = bdjh \/ bdfh V bdfh V bdjt V cefi V cefi V bdfh, yi = cdgj V ЩЪ V Ufh V cefi V cefi V cdgj V bdfh. Если число столбцов в некотором из полученных миноров превышает г — число промежуточных полюсов в реальной ПЛМ, то такой минор может быть расщеплен на несколько, с числом столбцов в каждом не свыше г.
328 ГЛ. 6* МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Допустим, например, что реальная ПЛМ обладает параметрами s = г = t = 4. В этом случае решение зада- b с d e f g h I j Гис. 77. Пример синтезированной сети, реализующей систему слабо определенных булевых функций. чи синтеза находится посредством расщепления последнего из полученных миноров на два, которые обозначим через Х3 и Х4: Хя 2 3 4 7 10 10 0 0 10 0 0 10 .10 11. х*. 8 гО 1 1 1_о 10 1 1 0 0 14 1п 1 1 oj Синтезированная сеть (рис. 77) будет представлять собой параллельную композицию четырех ПЛМ с заданными параметрами, у которых структурные троичные матрицы
20. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 329 первого яруса находятся путем транспонирования полученных миноров матрицы X, а булевы структурные матрицы второго яруса — путем выделения соответствующих миноров из матрицы Y: '-[! г2 = т,=\ Tt = с d f* Г0 0 1 0 0 0 Lo о о с е f 1 0 1 1 1 1 1 1 1 .0 0 0 Ь d f 1 0 0 0 0 0 1 1 1 0 0 0 Ь d f 0 1 1 1 1 0 1 1 1 ; 1 0 1 "I 1 6 1 t 1 ,s г 1"| 1 0 lj 6 9 11 > 12 h n2 0 h 1 b> i_b h 0"] 8 0 io, Oj 14 7?,-= 1 rl С 0 Ll 6 До = "0 1 0 _0 2 Sn = 0 0 1 _0 8 #4 = 1 0 1 .0 5 1 0 0 0 9 1 1 0 0 3 0 1 0 1 10 0 1 1 0 13 1 1 0 1 -1 1 1 2 1 3' J 4 11 12 1 0" 0 0 1 1 1 1 1 1 2 3 > 4 4 7 1 0 , 1 0 1 0 0 1J 1 2 3 '» 4 14 От 1 1 1J 1 2 3 • 4 26. Синтез многоярусных сетей из ПЛМ "^ Не всегда можно обойтись одноярусными сетями из ПЛМ. Например, иногда по техническим причинам не допускается реализация дизъюнкций выходных переменных непосредственным соединением соответствующих выходных полюсов. В этом случае приходится вводить в сеть дополнительный ярус из ПЛМ, реализующих эти дизъюнкции (рис. 78). Можно, однако, заметить, что такое применение ПЛМ малоэффективно — в них практически используется лишь второй, дизъюнктивный ярус. Более сложные задачи возникают при рассмотрении таких систем булевых функций, при реализации которых уже нельзя ограничиться элементарными конъюнкциями ранга не свыше t. Здесь в любом случае требуется искать решение в классе многоярусных сетей. Рассмотрим несколько методов синтеза применительно к этой ситуации.
330 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Декомпозиция ПЛМ, реализующей булевы функции поэлементно. Вернемся к рассмотрению прежней задачи: задана ПЛМ, описываемая уравнением y = (m)B(Z)?7(n)X, и требуется построить для нее эквивалентную сеть из ПЛМ с соответствующими параметрами (s, г, t). Однако на этот раз т ^ s и I <J г, но п^> t. Допустим также, что s > ] log2 г [ и t > 5, например, t = 2s — это условие важно при построении сходящихся сетей с древообразной структурой (в таких сетях выходные полюсы ПЛМ не могут ветвиться, соединяясь сразу с несколькими входными полюсами других ПЛМ). Для начала рассмотрим простейший случай, допустив, что матрица Т не содержит элементов со значением «—», что можно трактовать как поэлементную реализацию [булевых функций: каждая строка матрицы Т соответствует некоторому элементу булева пространства входных переменных. В этом случае, что очень важно для последующих рассуждений, любые две строки будут взаимно ортогональны или же будут совпадать. Разобьем множество компонент входного вектора х на две части, представив вектор х как конкатенацию векторов хх и х2, и разобьем аналогичным образом множество столбцов в матрице Т: х = (хх, х2), Т = (Тг, Тг). Построим для матрицы Тг кодирующую булеву матрицу Ф (^i)» равную по числу строк матрице Тг и содержащую X Г 1 о • 7 ** т 9 о—. J о-г Ао • 2 L /п • / о • 0 о • Jo f ha % *iQ t 1 ' ) -с t «2 + 4 У Ряс. 78. Реализация на ПЛМ операции векторной дизъюнкции у = х V z-
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 331 в качестве своих строк двоичные коды соответствующих строк матрицы Тг: одинаковым строкам матрицы Тг будут соответствовать одинаковые строки в матрице г|э (Тг), различным — различные. При этом число столбцов в кодирующей матрице г|э (Тг) должно быть минимально. Очевидно, что оно не будет выше s, поскольку матрица Тг содержит I строк, !^ги ] log2 г [ ^ s. Аналогично для матрицы Т2 найдем кодирующую матрицу г|) (Т2). Построим двухъярусную сеть из трех ПЛМ, описываемую системой уравнений *i = (4>(7i)T)VriA*i. «,==(* (r,)'p)v Г^х,. Нетрудно показать, что эта сеть функционально эквивалентна исходной ПЛМ. Действительно, значение 1 на некотором выходном полюсе исходной ПЛМ может появиться лишь в том случае, когда входной набор — значение вектора х — совпадет с некоторой строкой матрицы Т. Но в этом случае аналогичное событие наступит в обеих ПЛМ первого яруса построенной сети: значения векторов х± и х2 совпадут с соответствующими строками матриц Тг и Т2. А поскольку конкатенация одноименных столбцов дизъюнктивных матриц ПЛМ первого яруса равна соответствующей строке конъюнктивной матрицы ПЛМ второго яруса — они получаются из тех же кодирующих матриц,— это приведет к появлению на выходах ПЛМ первого яруса таких значений промежуточных (для сети) переменных zx и z2, которые в совокупности инициируют появление единицы на соответствующем промежуточном полюсе ПЛМ второго яруса. В результате это приведет к тому, что выходной вектор у примет в сети то же значение, что и в исходной ПЛМ. Если число столбцов в каждой из матриц Тг и Т2 не будет превышать t, то данная декомпозиция представит решение нашей задачи. Пусть, например, требуется построить сеть из ПЛМ с параметрами s = 3, г = 7, t = 6, функционально эквивалентную программируемой логической матрице с двенадцатью входными полюсами, описываемой уравнением
332 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ у = #vr*x, Где т = 1 2 3 4 5 в 7 8 9 10 11 12 п1 0010000101 1-| 1 011001110001 010111001010 10 110 10 0 10 11 110011001001 001010100110 101101101000J7 12 3 4 5 6 7 В- Г1 0 1 1 0 0 П 1 О 1 0 1 1 0 0 2, Ll 1 О О О 1 1J з Положим х = (хх, х2), х2 — (х7, #8» • ' •» #12) и ^ 12 3 4 5 6 1 0 0 1 0 0_, Тг = 0 110 0 1 0 10 111 10 110 1 110 0 11 0 0 10 10 -10 110 1- » где Xi — (#1, #2> • • •» Хв = (7\, 7'2), где 7 8 9 10 11 12 0 0 1 0 1 1-, 1 ^2 = 110 0 0 1 0 0 10 10 0 0 10 11 0 0 10 0 1 10 0 110 -10 10 0 0- 2 3 4 5 6 7 Легко строятся кодирующие матрицы для Тг и Т2. Порядок выбора конкретных кодовых комбинаций не имеет при этом какого-либо значения, лишь бы различные строки кодируемых матриц оказались закодированными различными комбинациями, а одинаковые — одинаковыми. 4>(7i) = 0 1° 1 0 1 1 L0 0 1 0 1 0 1 1 1 0 0 1 1 0 1- №)= 0 0 11 0 0 1 Li 0 1 0 0 1 0 1 1 о] 0 1 1 1 0- Число столбцов в матрицах 7\ и Т2 укладывается в заданные рамки, поэтому эти матрицы представляют решение. Используя кодирующие матрицы г|) (Тг) и г|) (Т2) для определения структуры дизъюнктивных компонент
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 333 двух ПЛМ первого яруса и конъюнктивной компоненты ПЛМ второго яруса, получаем искомую сеть (рис. 79). Если же число столбцов в каком-либо из полученных миноров будет превышать t, то описанная операция разложения входных векторов и соответствующих миноров матрицы Т будет повторяйся до тех пор,* пока требуемое х 5*- 6*~ 4-4 t.lltlttl 11 ф 4 4 —h-ф- 7*- 8*- S*- 10*- 11*- 12*- ГттттТ -о2 Рис. 79. Сеть, реализующая булевы функции, заданные поэлементно. ограничение не будет выполняться. В итоге получается древообразная сеть из реальных ПЛМ, функционально эквивалентная исходной ПЛМ. Если t = 2s и, как и прежде, m <; s и I <; г, то при этом будет использовано ]п/3[ — 1 реальных ПЛМ. Форма дерева может при этом варьироваться, как это показано на рис. 80 (с точностью до распределения миноров матрицы Т по реальным ПЛМ).
334 ГЛ4 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Декомпозиция ПЛМ, реализующей булевы функции на ортогональных интервалах. Допустим теперь, что в исходном уравнении у = В^Т^х матрица Т содержит элементы со х,-^ хг-* X,-* х,-** *5-** х6-** х7-* Tf ч Ч т! Ti ТеА г7л Bv —у *1 х2 Ъ *ч х5 а) \~Tf_ ч » ПГ\ fgj л. —*» > (> YW \Т """"""1 ~F\ в) ЦТ I .It. L A. L .Li. 1 .it. 1 3 X, ■ St' 6) Рис. 80. Декомпозиция ПЛМ с большим числом входных переменных, реализующей поэлементно заданные булевы функции: а) разбиение матрицы Т исходной ПЛМ на миноры, б) синтезированная сеть с минимальной глубиной, в) синтезированная сеть с регулярной последовательной структурой. значением «—», но любая пара строк этой матрицы остается взаимно ортогональной. Более того, предположим, что отношение ортогональности будет выполняться и для строк столбцовых миноров, на которые мы разбиваем матрицу Т по описанному выше методу. Пусть исключение составляют лишь такие пары строк, которые оказываются равными.
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 335 Если это условие будет выполнено, то изложенный выше метод декомпозиции ПЛМ остается полностью в силе. Обоснование его проводится аналогично случаю ПЛМ, реализующей булевы функции поэлементно. Пусть, например, Т = 1 1 0 — 0 — 1 2 3 - 0 _ _ 1 1 - 0 0 1 — 0 4 0 1 — 0 — 1 5 — 1 0 — — — в — 0 — 1 1 — 7 1 0 — 0 0 1 8 0 — 0 1 — — 9 10 — — 1 1 - 0 1 0 - 1 - 0 11 1 — 0 — 1 1 12 1 0 1 0 [0 1 1 1 0 0] 1 1 1 0 0 0 1 2 1 0 0 0 1 lj з Оказывается, что если матрицу Т разбить на два равновеликих минора Тх и Т2, включив в первый из них первые шесть столбцов, а во второй — остальные шесть, то строки каждого из этих миноров будут взаимно ортогональны. Используя для этих миноров одну и ту же кодирующую матрицу г|)(7\) = г|)(Г2) = лолучим логическую сеть (рис. 81), функционально эквивалентную исходной ПЛМ. Если же сформулированное условие ортогональности строк не выполняется, то можно расщеплять строки рассматриваемых миноров так, чтобы все продукты расщепления были взаимно ортогональны, а общее число различных продуктов было по возможности минимально. Такая операция позволяет свести решаемую задачу к уже изученной ситуации. В то же время выполнение этой операции можно облегчить соответствующим выбором миноров в матрице Т. "0 0 1 0 1 L1 0 1 0 1 0 1 1] 0 0 1 1 oj
ЗЗб ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Рис. 81. Сеть, реализующая булевы функции is* артогокальных интервалах. Описанный метод декомпозиции ПЛМ назовем методом ортогонализации интервалов и проиллюстрируем следующим примером: Г = в = 1 1 — 1 0 а 1 0 0 2 3 0 - 1 0 — 0 1 - bed 1 0 01 1 1 1 1 0 1 4 0 — 0 1 1 2 ф 3 ;> — 1 — 1 <> 0 0 — 0 7 1 — — 1 Я — 0 — 0 У — 0 0 0 10 1 — 1 1 11 1 1 0 — 12 0 "| 0 1 —_ а Ъ С 7 d
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 337 Анализируя матрицу Т, построим следующую матрицу различий, показывающую для каждой пары строк из Г, по каким компонентам они ортогональны (например, первая строка этой матрицы показывает, что строки а и Ь ортогональны лишь по второй компоненте): 1 2 3 4 5 в 7 8 9 10 11 12 010 0 0000000 0' 000000000011 000000000011 110100000000 000000000000 100100000000 (а, Ь) (о, с) (Ь, с) (a,d)« (М) (с, d) Очевидно, что, разбивая матрицу Т на два столбцовых минора, целесообразно обеспечить по возможности максимум числа пар ортогональных строк в каждом миноре. Отсюда следует, например, что столбцы 1 и 4 надо включить в различные миноры, равно как и столбцы 11 и 12. Распределение остальных столбцов по минорам стоит проводить так, чтобы в те пары строк, которые не будут ортогональны, попало поменьше столбцов, где одна из строк будет иметь значение 0 или 1, а другая — значение «—». Дело в том, что чем больше таких столбцов окажется в миноре, тем на большее число взаимно ортогональных строк придется расщеплять рассматриваемые неортогональные строки. Строго говоря, для двух неортогональных строк число продуктов расщепления оказывается равным к + 1, где к — число столбцов указанного типа, однако при соответствующей операции над минором в целом некоторые продукты расщепления различных пар строк могут совпадать, что позволяет несколько сокращать общее их количество. Учет этих соображений приводит в данном случае к тому, что матрица Т расщепляется на следующие два минора: Т,=-- 1 2 3 7 8 11 Г1 0 — 1 — 1 - 1 0 - 0 1 1 — 0 — — 0 0 1—10 — ъ С J d
338 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ п= 4 5 6 0 10 12 ■0-0-10 — 10 0—0 О — — о 1 1 Л 1 0 0 1 - Рассматривая первый из них, замечаем, что отношение ортогональности не выполняется лишь для пары строк (Ь, d). Интерпретируя эти строки & и d как интервалы булева пространства, мы находим интервал-пересечение Ь f] d, а затем разлагаем на интервалы остатки Ь\ d и d \ Ь исходных интервалов Ъ и d: — 0 0 1 0 0 0 1 1 1 1 1 1 1 0 — 0 0 0 1 0 — 1 1 0 1 1 0 0 0 0 0 0 0 1 — 1 1 1 0 ь d bf]d J b\d \d\b Строки an с остаются без изменения, поскольку они ортогональны всем остальным строкам минора Тг и, следовательно, продуктам их расщепления. Таким образом, минор Т1 преобразуется к виду Г? = 1 2 1 0 1 - 0 1 1 1 0 1 0 1 Lo 1 3 — 0 0 0 0 1 0 7 1 — 1 — 0 1 1 8 — — 0 0 0 0 0 11 1 1 0 1 1 1 — 0 - 2 3 4 б в 7 abed 10 0 0 0 0 10 0 10 1 0 10 0 1 0 10 0 0 0 0 1 -0 0 0 1- (булева матрица справа показывает, на какие строки минора Т* расщепляются строки минора Тг). Аналогичным образом преобразуется матрица Т2, у которой ортогональной всем другим оказывается лишь строка с. Расщепление остальных строк приводит к
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 339 следующему результату: 4 б в е -0 — — 0 г*= 0 10 0 0 0 0 — 0 10 1 110 0 - 1 0 0 -110 0 10 12 1 1 1 1 0 1 0 1 0 1 0 0 0 1 1- 2 3 4 б в 7 а 0 1 1 1 0 0 -0 bed 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 Теперь можно закодировать полученные взаимно ортогональные строки двоичным кодом, использовав для этой цели, например, стандартную матрицу двоичного кодирования натуральных чисел (от 1 до 7) <? = 1 1 0 1 0 1 0 л 2 0 1 1 0 0 1 1 3 °1 0 0 1 1 1 1- Этим самым полностью определяется структура двух ПЛМ первого яруса синтезируемой сети: z2 = (<?T)v(7t)Ax2, где х1 = \х1-> ХЪ X3i Х1ч Х%ч XlTJi Х2 = \Х^ ХЫ ХЪ-> x9i X\Q, x\Vi Zl = (zl, Z2, 23), z2 = (Z4, Z6, Z6). Итак, значение вектора х = (x1? х2) принадлежит некоторой строке-интервалу матрицы Г, если и только если значения векторов хг и х2 будут принадлежать каким-либо из строк матриц Т\ и Т*, полученных в результате разложения соответствующих строк миноров Тг и Г2. Например, значение вектора х принадлежит строке а матрицы Г, если и только если значение вектора хг будет принадлежать строке 1 матрицы Т*> а значение вектора
340 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ х2 — одной из строк 2, 3 или 4 матрицы Т%. Алгебраически это выражается следующей эквивалентностью: Д (Х±ХьХъХ$Х\ъХ 12 \J X±Xb%QXwXi2 N/ X^X^XqX^XiqX^). Синтезированная структура первого яруса трансформирует это условие в следующее: первый промежуточный полюс исходной ПЛМ получает значение 1 тогда и только тогда, когда вектор z1 в синтезированной структуре примет значение 1 0 0, а вектор z2 — одно из значений 0 1 0, 110 или 0 0 1. Иначе говоря, ХгХъХьХвХчХюХцХи = ZxZ2z3 Д (z4Z5Ze V Z4Z5Z6 V *4*6Ze) = = Ziz2z3 Д (z5zQ \/ zaz5Zq) = ZiZ2z3Z5zQ \/ ZiZ2Z3Z4Z5Z6. Так находятся первые две строки матрицы 12 3 4 5 в 0 0 - 1 (Л I Го = I 1 0 0 0 о 1 I 2 Г1 0 0 - 1 (Л р3 = 1 0 0 0 0 1 и соответствующие им столбцы матрицы 1 2 . . . В: Г1 1 ... I 1 = 0 0 ... * L0 0 ... J з для третьей ПЛМ, включаемой в синтезируемую сеть и образующей ее второй ярус. Полная структура этой ПЛМ, описываемой уравнением }vTb y = 2?BVZs(*i,z2), находится после аналогичного анализа всех остальных строк матрицы Т и соответствующих им строк матриц Т\ и Г*-' Тл = 1 1 1 1 1 — — 0 1 2 0 0 1 1 0 0 1 1 1 3 0 0 0 0 1 1 0 — 1 4 — 0 0 1 0 1 1 1 1 5 1 0 1 0 1 0 0 — 6 о - — — 1 2 3 4 5 6 7 8 9
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 341 1 2 1 1 0 0 0 0 3 4 5 6 7 11110 11111 11110 8 9 0 01 1 1 1 1 1 2 3 В* = Синтезированная сеть, реализующая заданное исходными матрицами Т и В функциональное отношение между векторами х и у, изображена на рис. 82. X 1 / <м—4 4 1 < 3^l\l 8nrnf //oli Т1Т' IfftF г 4° т. 1 Н~~ Ч • 4 4 1 ^°~1 т ( ч т 1 6 о t — 1' ^oi1 1 -L ч 11 /2« j 1 - ПЧЧ4" w 1 н——— [444 — т — 4 4 14 4 1 — \ 4 Г j— , , , ,' i— 4 14 г!——— i 4 4 4— М } Т— 4 4 4 — т — ——гт— Гу-Хх LS-X_X—__ z 1 '.ill" 1 г ji j I I I —i—— т т j Ч ФФ м —° 1 1—— i 4 Ч—т т Т т —° т ———t— s 'I 11 Г г—о—|—4 4 < 6 Ч Т Ф Tt Ч 4 I——— i№ г—Ft—т—Р —1 т т т— > Ф 1 1—— > 4 1 1 4 14 4 4 м—1——— ММ—— f f 1 1 ' ^р > J Рис. 82. Сеть, синтезированная методом ортогонализации строк матрицы Т. Метод тождественных отображений впространстве промежуточных переменных. Рассмотренный метод декомпозиции ПЛМ, основанный на предварительной ортогонализации реализуемых на первом ярусе элементарных конъюнкций, не
342 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ претендует на высокую эффективность — структура полученной сети может оказаться излишне сложной. Значительно более компактные решения могут быть получены с помощью излагаемого ниже декомпозиционного метода, который назовем методом тождественных отображений в пространстве промежуточных переменных. Знакомство с этим методом удобнее начать с рассмотрения относительно простой ситуации, когда требуется декомпозировать ПЛМ, у которой лишь число входных полюсов превышает допустимое, причем не более чем в два раза. Заменим] входной вектор х конкатенацией (хх, х2), а матрицу Т — соответствующей конкатенацией (7\, Т2). Другими словами, заменим уравнение у = В^Т^х рассматриваемой ПЛМ на эквивалентную ему систему y = Svv, у = (Г1,Г2)л(х1,х2), в которой размеры всех векторов и матриц укладываются в допустимые рамки (рис. 83). -»-Д 1 [W а ^г х2 Ку ~?] ~i id И а) 6) •9 Щп Рис. 84. Типичная двухъярусная сеть из трех ПЛМ. Рис. 83. Расщепление матрицы Т исходной ПЛМ на миноры: а) исходная схема; б) схема с расщеплением. Будем искать решение задачи декомпозиции в классе схем со структурой, показанной на рис. 84. Такие схемы описываются системой уравнений y = tfvv, V=(tfl,tf,)A(*l»*2)»
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 343 и отличаются друг от друга лишь выбором структурных матриц. Отождествим матрицы 2?, Т1 и Г2, входящие в эту систему, с матрицами исходной ПЛМ, которую предстоит декомпозировать. Очевидно, что остальные матрицы Ulr U2, Сх и С2 должны быть выбраны таким образом, чтобы длина вектора (zx, z2) не превышала р — лишь в этом случае удастся построить реализующую сеть из ПЛМ стандартных размеров. Необходимое и достаточное условие функциональной эквивалентности схемы данного типа и исходной ПЛМ выводится из достаточно очевидного тождества v = (77i,r2)A(xi,x2) = v1/\v2, где v2 = Г2х2, и выражается системой уравнений у1 = ^1дС1уГ1дх1 = 7'1лх], У 2 == U2 ^2 ' 2 ^2 == J- 2 Х2» Уравнения одинаковы, поэтому ограничимся анализом одного из них. Анализируемое уравнение кажется довольно простым. Действительно, оно удовлетворяется таким выбором составного оператора t/fCf, при котором последний реализует тождественное преобразование вектора \г в себя. Очевидно, что такое преобразование всегда возможно. Например, существует тривиальное решение '10 0 ... 0" 0 10 ... 0 10 0 1 ... О1 Сг = 0 0 0 1 иг = А — — — 1 — — — 1 1 Важно, однако, найти хорошее решение, при котором число строк в матрице Сг, равное числу столбцов в матрице Uv будет достаточно мало. При поиске такого решения разумно ограничиться рассмотрением возможных значений вектора Vi, т. е. таких,
344 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ которые могут появиться на выходе элементарной конъюнктивной матричной схемы, описываемой оператором Тг. Тождественность преобразования должна быть обеспе" чена лишь для этих значений. Представив эти значения столбцами булевой матрицы Fx, сформулируем интересующую нас задачу как решение матричного уравнения v, = utcyVi, в котором матрица Vx задана, а матрицы Сх и Ux требуется найти, минимизировав при этом число строк в первой из них (оно же равно числу столбцов во второй). Например, если мы вернемся к заданной выше конкретной матрице Т и так же, как и ранее, выделим из нее минор Тг = то анализ этого минора приведет нас к следующей матрице возможных значений булева вектора vx = (a, Ь, с, d), удовлетворяющих уравнению vx = Т^хх при некоторых значениях входного вектора хг = (хг, х2, х3, х7, х8, хп): -010000- 0 0 10 0 1 0 0 0 10 0 Lo о о о 1 i_ 1 1 — 1 0 2 0 1 — 1 3 — 0 0 — 7 1 — — 1 8 — 0 — 0 11 1 - 1 0 —_ а Ъ С > d Vi = Построение этой матрицы может вестись путем последовательного выявления в матрице Тг совокупностей взаимно неортогональных строк и соответствующей проверки каждой из них, на деталях которой не будем здесь останавливаться. Ограничимся демонстрацией следующего примера: существование значения 0 10 1 вектора vx выводится из того факта, что интервалы-строки b и d матрицы Тх оказываются неортогональны, а набор 0 10 10 1, на котором они пересекаются, не принадлежит ни одной из остальных строк матрицы Тг. Заменим уравнение Vx = UiCiV1 с заданной матрицей Vx эквивалентной системой из двух следующих
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 345 уравнении Ух - UtW» Wx - C(VX с промежуточной матрицей Wv Очевидно, что оба уравнения должны представлять обратимые, т. е. кодирующие преобразования. Иначе говоря, различным столбцам матрицы Vx должны соответствовать различные столбцы матрицы Wx, а различным столбцам матрицы Wx — различные столбцы матрицы Vv Отсюда вытекают два требования к искомому решению. Во-первых, столбцы матрицы Сг, которыми кодируются строки матрицы V±, должны быть выбраны таким образом, чтобы их дизъюнкции, определяемые различными столбцами матрицы Vx, были также различны. Напомним, что этому требованию удовлетворяет тривиальное решение Сх = Е (единичная матрица), но оно нас не устраивает, поскольку не приводит к какому-либо выигрышу. Во-вторых, строки матрицы Ul должны быть выбраны таким образом, чтобы оператор C/f обеспечивал обратное преобразование матрицы Wx в матрицу Vv Соответствующее условие можно сформулировать следующим образом: строка ut матрицы Ux должна представлять собой интервал, которому принадлежат все такие и только такие столбцы промежуточной матрицы Wx, которые соответствуют столбцам матрицы Vt1 где i-я компонента имеет значение 1. Например, оба эти требования удовлетворяются, если положить 1 0 0] 0 10, U1 = 0 0 1 Сг = 1 1 0 — 1 0 0 - 1 0 0 1 поскольку оператор С^ обеспечивает кодирующее преобразование матрицы Vx: [01000 (Г| 0 0 10 0 1 0 0 0 10 0 0 0 0 0 11. = wx СМ = 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 I 0 0 0 1 0 0 0 1 1 0 1
346 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ и в то же время выполняется второе условие, проверяемое при рассмотрении по очереди строк матрицы Vx и соответствующих им совокупностей столбцов из матрицы Wv Например, строке 2 матрицы Vx, обладающей единицами в компонентах 3 и 6, соответствует совокупность из двух столбцов 3 и 6 матрицы Wx со значениями 1 0 0 и 1 0 1, причем они содержатся в интервале 10 — (второй строке матрицы U±) и этот интервал не содержит каких-либо других столбцов из матрицы Wv Оператор U1 обеспечивает в связи с этим обратное преобразование £/iVi = [0 1 1 0 0 11 0 10 10 0 0 0 0 0 1 lj = "010000- 0 0 10 0 1 0 0 0 10 0 .000011. = vx. Найти оптимальное решение рассматриваемой задачи в общем случае нелегко. Тем не менее можно предложить достаточно простой и в то же время применимый во многих практических ситуациях метод, основанный на последовательном нахождении сначала матрицы Съ а затем — матрицы Uv Поиск матрицы Съ перекодирующей исходную матрицу V± в матрицу W± с минимальным числом строк, целесообразно проводить на основе последовательного дизъюнктивного преобразования матрицы Vv Эта операция определяется как композиция элементарных операций типа введения в матрицу новых строк, представляющих собой покомпонентные дизъюнкции некоторых из имеющихся там, а также типа удаления некоторых строк. При этом будем требовать, чтобы на любом этапе преобразования различные столбцы исходной матрицы оставались также различными. Будем стремиться минимизировать число строк преобразуемой матрицы. При наступлении некоторой тупиковой ситуации полученная матрица может быть принята за промежуточную матрицу Wv Одновременно находится и матрица Су ее строки соответствуют строкам
26, СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 347 матрицы W± и показывают, из каких строк исходной матрицы Уг они образованы. Например, применяя дизъюнктивное преобразование к матрице "010000- 0 0 10 0 1 0 0 0 10 0 _0 0 0 0 1 1_ Уг = а b С > d находим соответствующую ей матрицу W± с минимальным числом строк: [0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 Г 0 0 1 1 а\/Ъ ovc d Справа показано, что строки этой матрицы образованы соответственно совокупностями (a, ft), (а, с) и (d) матрицы Vv Представляя эти совокупности булевыми векторами, получаем соответствующие строки искомой структурной матрицы Сг: Ci = и и с и Г1 1 О 01 10 10 |_0 0 0 lj Теперь осталось найти матрицу Uv В некоторых случаях, например в рассматриваемом, строки этой матрицы можно получить следующей процедурой. По очереди рассматриваются строки матрицы Vx, для каждой из них выбирается совокупность столбцов, имеющих в данной строке значение 1, затем выбирается совокупность соответствующих им столбцов из матрицы Wx и строится минимальный поглощающий интервал для нее. Если этот интервал не содержит других столбцов из W±, то он может быть взят в качестве соответствующей строки матрицы Uv В противном случае потребуется соответствующая корректировка метода, что будет сделано ниже. В данном случае первая строка матрицы Vx содержит лишь одну единицу, а именно во втором столбце, поэтому первая строка матрицы U± получает значение 1 1 0 от второго столбца матрицы Wx. Вторая строка из V± со-
348 гл. 6. многоярусные комбинационные сети держит две единицы, поэтому из матрицы Wx извлекаются два соответствующих столбца, со значениями 1 0 0 и 10 1. Минимальный поглощающий интервал для них, представляемый вектором 10—, задает значение второй строки матрицы Ux. Аналогично определяются значения остальных строк матрицы Ur, в результате чего получаем tfi = 1 1 0 1 0 - 0 1 0 .- 0 1 Полученная матрица удовлетворяет сформулированным выше требованиям. Аналогичному рассмотрению подвергается второй минор исходной матрицы Т: 4 0 — 0 1 5 — 1 — 1 6 0 0 — 0 9 — 0 0 0 10 1 — 1 1 12 о - 0 1 —... а ъ с d Для него находится матрица возможных значений вектора V2, удовлетворяющих уравнению v2 = 7^х2: 0 10 0 0 10- 0 0 10 0 1 1 0 0 0 10 0 0 _0 0 0 0 1 0 1„ V а ь с » d после чего решается уравнение V2 U$CXV2. Матрица V2 преобразуется дизъюнктивно в матрицу 0" 10 10 10 10 0 0 10 0 11 0 0 0 110 1 ау с ъ с V d а правила этого преобразования фиксируются в матрице Го = 1 0 1 01 0 10 0 , , 0 0 1 1J
26, СЙЙТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ЙЛМ 349 Затем находится матрица и* = 1 1 J на чем синтез сети из программируемых логических матриц с ограниченным числом входных полюсов завершается. X 1 / О 1 1 "> а . 1 т 7 о • 1 7 в • X Л О 1 1 Паш Ш 1 // ° т у ' n I со tt u I 1 7 1 * Т1 7 —4—1— Т ч— Т 1 • ' L Y Ч—1_ 1 ■ , ' 11 1 То . 1 « £* - . о °~t —1 9 О г ' Т 11 и 1 Т /° о . ' 1 т ■ ( u I , ■ ' 11 1 т 1—т ГНг 1 7 г\——° SP ... • 2 Рис. 85. Сеть, синтезированная методом тождественных отображений в пространстве промежуточных переменных. Полученное решение представлено на рис. 85. Сравнив его с решением, полученным ранее методом ортогонализа- ции интервалов (рис. 82), можно убедиться в большей эффективности нового метода.
350 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ Корректировка метода. Допустим теперь, что сформулированное выше условие, проверяемое при построении матрицы Ut, не выполняется. Может оказаться, что некоторые из минимальных поглощающих интервалов для выбираемых на втором этапе совокупностей столбцов матрицы Wt содержат еще какие-то столбцы этой же матрицы. В этом случае непосредственное применение описанной процедуры образования соответствующих строк матрицы Ut привело бы к ошибкам. Избежать их можно, воспользовавшись следующим способом синтеза ПЛМ второго яруса — своего рода обобщением предыдущего. Анализируя очередную строку матрицы Vt и соответствующее ей подмножество столбцов матрицы Wt, найдем минимальную совокупность интервалов, содержащих сообща эти столбцы и не содержащих других столбцов из Wt. В частности, эта совокупность может состоять из одного интервала, и именно такой случай рассматривался перед этим. Представим найденную совокупность интервалов соответствующей строчной секцией матрицы С/?. Так последовательно формируется как матрица Ux, так и матрица U2 — допустим пока, что их только две. Общая дизъюнктивная матрица U для ПЛМ второго яруса получалась ранее конкатенацией матриц Ux и U2: U = (иг, t/2). Эта конкатенация реализовывала операцию \г Д v2, однако для секционированных матриц такая реализация непригодна. Она представляет собой лишь частный случай посекционного перемножения матриц иг и £/£, при котором каждая пара одноименных секций порождает соответствующую секцию матрицы, представляющей их логическое произведение и находимой по правилам прямого произведения: рассматриваются всевозможные пары строк, одна из которых принадлежит первой из одноименных секций, а другая — второй, и находятся их конкатенации. Синхронному преобразованию подвергается теперь дизъюнктивная матрица В, которая раньше оставалась неизменной. Ее столбцы расщепляются и дублируются так, что каждой секции матрицы U будет соответствовать серия одинаковых столбцов матрицы В. Обозначим новую матрицу через В*.
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 351 Детали данного способа проследим на конкретном примере. Пусть некоторая ПЛМ, число входных полюсов у которой превышает допустимое, описывается уравнением у = В^Т^х с матрицей В = г а Ь с d e f g 10 0 110 0' 0 10 0 0 10 0 1110 0 1 .10 10 0 10, и с матрицей Г, относительно которой известно, что она разбивается на пару матриц Тг и Т2 допустимых размеров, каждая из которых может быть реализована на одной реальной ПЛМ: Т = (7\, Т2). Допустим, что, анализируя матрицы Тх и Т2, мы нашли множества возможных значений промежуточных векторов vx и v2 и представили их столбцами следующих мат риц: 123456789 10 11 12 ,100000000100 Уг = Fo = 1 1 0 010000000010 001000001110 000100010001 000010001001 000001000001 0 0 0 0 0 0 1 10 0 0 0-1* .1 0000000101 0_, 01000001001 0010000000 0 0 0 10 0 0 0 00001000010 00000100000 10 0 0 о 1 Ц) 0000011010 0- Осуществляя дизъюнктивное преобразование этих матриц, найдем соответствующие множества значений дополнительных промежуточных векторов wx, w3. Эти значения
352 ГЛ. С. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ представляются столицами следующих матриц: 1 2 3 4 5 G 7 8 У 10 11 12 -OOlOOOillllO" 1 1 0 1 0 0 0 1 0 111 10 0 0 10 11110 1 „О 1 0 0 0 1 1 1 0 0 1 1J -100001001011 0 10 0 10 0 10 111 0 0 1110 0 0 1110 .000101111101 \Уг = W* = Одновременно получим матрицы (\ = a b с d e f g ooioooi- 110 10 0 0 10 0 0 10 1 .010001 1 ■ с* = abed е f g 1 0 0 0 0 10 0 10 0 10 0 О 0 1110 0 .0 0 0 1 0 1 1_ На этом синтез двух ПЛМ первого яруса можно считать завершенным и приступить к формированию конъюнктивных матриц U\ и С/* второго яруса. Начнем с матрицы U*. Рассматривая строку а матрицы Fj, видим, что она содержит единицы в компонентах 1 и 10. Выбрав соответствующие столбцы из матрицы W11 находим для них минимальный поглощающий интервал — 110. Поскольку он не содержит иных столбцов из W1, принимаем его в качестве значения первой строки матрицы U*. Аналогично находится вторая строка, оказывающаяся равной — 1 0 1. Однако при формировании следующей строки оказывается, что минимальный поглощающий интервал 1 — — — для очередной совокупности столбцов (3, 9, 10, 11) матрицы W.x содержит, кроме них, также столбцы 7 и 8. Поэтому этот интервал заменяется на пару: 1 — — 0 и 1 — 0—. Совокупность данных интервалов удовлетворяет сформулированным выше требованиям: совместно они содержат столбцы 3, 9, 10 и 11 и не содержат ни одного другого столбца матрицы Wx. Таким образом, вместо очередной третьей строки мы вводим в матрицу U* секцию из двух строк. Аналогично формируется четвертая секция, пятая и тг д.
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 353 Описанная процедура приводит к получению следующих секционированных матриц: Ut = '— — 1 1 — — — 0 — 0 1 1 1 — — 1 1 0 — 0 — — 1 0 — 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 1 1 а ь с d 1 е f g ul = 1 1 0 1 — 1 — 0 1 0 — — — 1 1 0 1 0 1 — — 1 1 — 0 — 1 1 1 1 0 0 1 — 0 — — 0 — 1 — 1 1 1 а ь с d е f g а их посекционное перемножение — к искомой матрице U (справа показаны соответствующие столбцы новой дизъюнктивной матрицы В*, для удобства транспонированной), 1 - U = ~- 1 - 1 - 1 - 1 1 - 1 — 1 - 1 - - 1 - 1 - О о - - о 0 — 1 - 1 - о о 1 о 1 1 о 1 1 1 1 о о о о о 1 1 о 1 1 о 1 о 1 о о 1 1 о £* = "1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1" 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 Итерационные методы декомпозиции. Если число входных переменных у ПЛМ значительно превышает допустимое, возникает необходимость в применении итерационных методов декомпозиции, приводящих к получению многоярусных сетей из ПЛМ. 12 А. Д. Закрсвсний
354 гл. 6. многоярусные комбинационные сети В основу таких методов можно положить описанную выше операцию тождественного отображения в пространстве промежуточных переменных. Процесс синтеза будет в этом случае заключаться в последовательном преобразовании сети из ПЛМ, которая вначале будет состоять из одной исходной большой ПЛМ, а в текущем, промежуточном состоянии будет образована из совокупности ПЛМ, не все из которых будут входить в рамки заданных ограничений. Каждый шаг итерации заключается в выборе некоторой из таких ПЛМ, отщеплении из ее конъюнктивной матрицы Tt некоторого столбцового минора Tj, нахождении соответствующей ему матрицы Vj возможных значений промежуточного вектора v;- и решении матричного уравнения Vj = UfC^Vj. Если полученная при этом матрица U j будет содержать меньше строк, чем минор Tj, то структура сети преобразуется путем замены оператора Tj цепочкой операторов UfCj Tf, как это показано на рис. 86. Это приводит к сокращению числа входных полюсов в выбранной ПЛМ. Порядок выбора преобразуемой на очередном шаге ПЛМ и способ отщепления минора Tj из матрицы 7\ могут определяться по-разному, порождая различные итерационные методы, например методы декомпозиции от выхода схемы, или декомпозиции от входа. Применение любого из них обеспечивает последовательное расщепление входных векторов у ПЛМ, образующих преобразуемую сеть, и соответствующую декомпозицию отдельных ПЛМ и приводит в итоге к тому, что число входных полюсов в каждой ПЛМ уже не будет превышать допустимого. Если потребуется, данный метод может сочетаться с описанными ранее методами декомпозиции, ориентированными на устранение нарушений по числу промежуточных и выходных переменных. Ограничимся здесь рассмотрением достаточно простого примера ПЛМ, описываемой уравнением у = В^ТАх, где Т = (7\, Т2, Т3), причем матрицы Т1 и Т2 взяты из старого примера, отраженного на рис. 85, а матрица Т3 произвольная, но размера (4 X 3). Таким образом, вектор х имеет длину 15. В то же время допустим, что число входных полюсов в реальной ПЛМ ограничено шестью. Начнем синтез сети от входа, воспользовавшись найденными ранее для матриц Т^ и Т2 соответствующими
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 355 лг-ЧГ1 ги Г-У рг П ~cj ■ > ^ X 2 Г^1 Ti Bv 1) 5) S) Рис. 86. Преобразование ПЛМ с большим числом входных переменных: а) исходная ПЛМ, б) расщепление ее матрицы Т на два минора, в) построение функционально эквивалентной сети из двух ПЛМ. Г" \Щ "г/1 "Г \в* I А) *' г& сг '2 4*1 . ut s4sb Bv 5) pu 1 J>2 ? С," г/ с! ."\ и} 'iff С! Ш"-. щ .4L в*> S) Рис. 87. Пример синтеза трехъярусной сети из ПЛМ: а) расщепление матрицы Т исходной ПЛМ, б) получение ПЛМ первого яруса сети, в) построение второго и третьего ярусов. 12*
356 ГЛ. 6. МНОГОЯРУСНЫЕ КОМБИНАЦИОННЫЕ СЕТИ матрицами \\ и F2 и полученными решениями уравнений Vx = UiC^Vx и V2 = UzCXV2. Определяемое этими решениями преобразование приводит к сети, состоящей из трех ПЛМ (рис. 87, б) и описываемой системой уравнений y = 7iv(^i,^2,7,3)A(w1>w2jx3)> w1 = C1vr1Ax1, w2 = C2vr2Ax,. Однако одна из полученных ПЛМ, входящая во второй ярус сети, оказывается нестандартной, обладая девятью входными полюсами вместо шести. Поэтому декомпозиция должна быть продолжена. Образуем конкатенацию С/4 = (Ux, U2) и найдем матрицу F4 возможных значений вектора v4, которые могут быть получены на выходе конъюнктивной матричной схемы, описываемой оператором С/4: го 1 о о о о- .001001 v * — I oooioo _0 0 0 0 1 1_ Она оказывается равной полученной ранее матрице Vx. Следовательно, за решение уравнения У4 = U^C^V4 можно взять также полученное раньше решение уравнения V1 = V^CXVX\ [1 1 0 01 10 10, 0 0 0 lj ui = 1 1 0 — 1 0 1 0 0 0 1 В результате получаем сеть из четырех ПЛМ, изображенную на рис. 87, в и описываемую системой уравнений y = 5v(C71)7'3)A(w4,x3)) w4 = 6\v(C/1,C/.)A(w1,w2), W<5 = C2 J- 2^2*
26. СИНТЕЗ МНОГОЯРУСНЫХ СЕТЕЙ ИЗ ПЛМ 357 В заключение приведем рекомендации к способу выделении столбцового минора Tj из расщепляемой троичной матрицы Tt. Очевидно, что чем больше строк минора Tj будет находиться в отношении ортогональности, тем легче будет решать уравнение Vj = UfCjVj и тем глубже можно будет провести минимизацию числа строк в матрице Uj. Легко показать, например, что если минор будет содержать к строк и все они будут взаимно ортогональны, то можно найти удовлетворяющую данному уравнению матрицу Uj с ] log2 (к + 1) [строками. В этом случае ситуация вырождается до тривиальной и становится применимым изложенный выше метод декомпозиции ПЛМ, реализующей булевы функции па ортогональных интервалах. В то же время ортогональность заданных в матрице Tt строк следует расходовать экономно. Это означает, что если некоторая пара строк матрицы Т% ортогональна по нескольким компонентам, то не рекомендуется вводить все эти компоненты в один минор Tj. Разумнее распределить их по различным минорам, на которые расщепляется матрица 7\-, повышая тем самым общее число пар ортогональных строк в минорах.
ГЛАВА 7 РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ 27. Элементы теории последовательностных схем Схемы комбинационные и последователь и о с т н ы е. До сих пор мы ограничивались изучением так называемых комбинационных схем, в которых каждой комбинации значений входных переменных ставится в соответствие некоторая комбинация значений выходных переменных. Функциональные свойства комбинационных схем полностью представляются соответствующей системой булевых функций, которую можно считать логической моделью комбинационной схемы. В свою очередь можно считать, что комбинационная схема представляет собой техническую реализацию этой системы булевых функций. Любая комбинационная схема, в том числе и рассмотренная нами ПЛМ, обладает некоторой инерцией, выражающейся в том, что при подаче на вход схемы новой комбинации значений входных переменных соответствующие значения выходных переменных появляются не мгновенно, а с некоторой задержкой, причем не одновременно, а с некоторым разбросом во времени. Это явление можно рассматривать как ограничение на быстродействие схемы. Выходным набором, представляющим реакцию схемы, можно воспользоваться лишь некоторое время спустя после соответствующего входного воздействия. Если мы возьмем две комбинационные схемы и подсоединим некоторые входные полюсы одной из них к выходным полюсам другой (только к одному каждый, чтобы не замкнуть друг на друга различные выходные полюсы), то получим новую схему, которая также будет комбинационной, хотя и будет обладать большей инерцией, чем каждая из ее составляющих. Последовательно выполняя эту операцию, можно соединять между собой сколь угодно много комбинационных схем и каждый раз получать опять-таки комбинационную схему.
27, ПОСЛЕДОВАТЕЛЬНОСТНЫЕ СХЕМЫ 359 Однако при более произвольных соединениях, когда запрещаются лишь непосредственные соединения между выходными полюсами, принадлежащими одной и той же или различным схемам, мы выходим из класса комбинационных схем в более широкий класс схем, обладающих существенно новыми свойствами по сравнению с комбинационными. Схема приобретает способность к запоминанию информации, поступающей на ее вход. Формально это отличие заключается в том, что реализуемое комбинационной схемой функциональное соответствие между состояниями входных и выходных полюсов выражается отображением множества значений входного булева вектора х в множество значений выходного булева вектора у, в то время как схема более широкого класса реализует отображение множества последовательностей значений вектора х в множество последовательностей значений вектора у. При этом длина рассматриваемых последовательностей может оказаться сколь угодно большой. Такая схема называется поэтому последователъностнои. Явление инерции комбинационных схем, из которых мы строим последовательностную, играет теперь более важную роль и может привести к тому, что сконструированная схема вообще выйдет из класса логических схем с детерминированным поведением. Чтобы этого не случилось, принимают специальные меры. Дискретные устройства и автома- т ы. Как комбинационные, так и последовательностные схемы относятся к широкому классу технических систем, перерабатывающих информацию в дискретной форме и называемых поэтому дискретными устройствами. Математические модели дискретных устройств называются дискретными автоматами или просто автоматами. Будем считать, что автомат — это некоторая совокупность дискретных переменных, на которой задана система функциональных отношений, имеющих причинно-следственный характер, т. е. связанных с введением понятия времени. Дискретные переменные могут отражать своими значениями реальные события, которые происходят или должны происходить в моделируемой технической системе: подачу тока в рассматриваемую цепь, появление напряжения на некоторой паре полюсов, установку в определенное
360 ГЛ, 7* РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ положение ручки регулятора, открытие клапана и т. п. Каждое из этих событий соответствует принятию какой- либо физической переменной значения из некоторого интервала, и этому интервалу ставится в соответствие одно из значений соответствующей переменной. Кроме таких событий, называемых базисными, дискретные переменные могут отражать и более сложные события, представляющие собой комбинации и временные последовательности базисных, а также совокупности этих комбинаций и последовательностей. Дискретные переменные делятся на входные, выходные и внутренние. Совокупность входных переменных называется входом автомата, и такие переменные входят в систему функциональных отношений на правах аргументов. Выходные переменные, образующие выход автомата, являются функциями. Особую роль играют внутренние переменные, входящие в систему и как аргументы, и как функции. Текущие значения переменных-функций определяются значениями переменных-аргументов в предшествующий момент времени или — в пределе — в тот же момент времени. Именно наличие внутренних переменных в системе придает последовательностным схемам присущее им свойство памяти — связи будущего с прошедшим. 3 Время представляется обычно как ряд моментов: значений 0, 1, 2, . . ., t, t + 1, . . ., принимаемых последовательно временной переменной t. Для этих моментов задаются или определяются и значения, принимаемые входными, выходными и внутренними переменными и образующие соответствующие последовательности. В зависимости от того, какие и сколько переменных входят в рассматриваемую совокупность и как устанавливаются функциональные связи между ними, различают автоматы разных типов. Для нас будет достаточно познакомиться лишь с некоторыми из них. Начнем с абстрактного автомата, образуемого тремя многозначными переменными (и — входная, v — выходная и w — внутренняя) и двумя функциями: функцией переходов г|) и функцией выходов ф. Функция переходов определяет зависимость последующего значения w+ внутренней переменной w от текущих значений входной переменной и и внутренней переменной w, функция выходор
27. ПОСЛЕДОВАТЕЛЬНОСТНЫЕ СХЕМЫ 361 задает зависимость v от и и w: w+ =я|) (и, w), (27.1) V = ф (U, 1#). Значения переменных и, v и w называют также соответственно входным, выходным и внутренним состоянием автомата. Говоря просто о состоянии, имеют обычно в виду внутреннее состояние. Начальное состояние автомата — значение w0 переменной w в начальный момент времени t = О — иногда фиксируется, и в этом случае автомат называется инициальным. Каждой определенной последовательности и0, их, и2, . . ., щ, ut+1, . . . значений входной переменной и будут отвечать в этом случае однозначно определяемые последовательности w0, wu w2, . . ., wt, wt+1, . . ., V0i Vli V2i • • •» . vti Vt+li • • • значений переменных w и v. Описанный абстрактный автомат известен под именем автомата Мили, а его вариант, в котором v = ф (w) — под именем автомата Мура. Конечно, не следует забывать, что абстрактный автомат идеализирует реальность. Например, значение переменной v определяется в нем как функция значений и и w за тот же момент времени, что противоречит тому факту, что любое реальное устройство обладает некоторой инерцией. Однако это отклонение при решении многих практически полезных задач оказывается несущественным. Другой широко распространенный тип автомата образуется одной многозначной внутренней переменной w и многими входными и выходными булевыми переменными хг, х2,. . ., хп и уг, у2,. . ., ут. Функциональные отношения в таком автомате задаются системой уравнений w+ = -ф (хг, х2,. . ., хп; w). Уг = <Pi (хи х2, • •, zn; w), У 2 = Ф2 (*1, *2, • • ., Хп', W), (27.2) Ут = Фтп (*1, *2» • • •» хп\ w)k
362 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ более компактно представляемой в векторной форме w+ — "Ф (х> w)i у = q> (x, u>). (27.3) Сравнивая эти уравнения с (27.1), видим, что они отличаются лишь тем, что многозначные входная и выходная переменные оказались замененными на соответствующие булевы векторы, т. е. расщепленными на упорядоченные совокупности булевых переменных. Но внутренняя переменная остается одна и многозначна. Назовем эту модель автоматом с абстрактным состоянием. Ею удобно пользоваться на начальных этапах логического проектирования дискретных устройств, когда вход и выход устройства описываются как некоторые множества булевых переменных, имеющих конкретную техническую интерпретацию, в то время как множество внутренних переменных представляется пока в простейшей форме, в виде одной многозначной переменной w. Число значений переменной w полагается равным числу различных состояний автомата, при котором он может реализовать заданное функциональное отношение между входом и выходом. Если же мы заменим и внутреннюю переменную w на соответствующий булев вектор z = (%, z2, . . ., zi), то получим систему уравнений, в которой все переменные и все функции оказываются булевыми: Zl = ^1 (^1» Х2ч • • •> Xni Z\i Z2i • • •> zl)j z2 = Y2 \Xli X2t • • •> Xnt Z\i Z2i • • •» zl)i Zl = tyl \Xli X2t • • •> Xni Z1j Z2i • • •> Zl)j Vi = Ф1 0*1» x2, • • -, xn\ zi, z2, • • •, zi), (27.4) У2 — Ф2 \X\i X2i • • •» Хпч Z\i Z2t • • •» Zl)t Ут — Фтп \xii x2i • • •» xnt z\i z2i • • •» z*)' Назовем эту модель булевым автоматом. Ее также можно представить в компактной векторной форме: z+ = Ц (х, z), У = Ф (х, z). (27.5)
U7# ПОСЛЕДОВАТЕЛЬНОСТНЫЕ СХЕМЫ 363 Булев автомат в определенном смысле ближе к реальным дискретным устройствам, поскольку его переменные непосредственно реализуются физическими переменными устройства, в частности — на типичных для современной техники элементах с двумя устойчивыми состояниями. Представления автоматов. Чтобы описать конкретный автомат, надо каким-то образом задать его функции переходов и выходов. Сделать это можно по- разному. В частности, их можно представить просто в табличной форме, перечислив все комбинации значений аргументов и соответствующие им комбинации значений функций. Проиллюстрируем этот способ табл. 6, где заданы Таблица 6 и 1 а b с d е w гу+ 2 2 1 4 4 V 1 1 3 7 G и а b с d с W 2 2 2 2 1 2 U + 2 4 3 3 2 V 4 4 4 4 4 ! и а Ъ с d е w 3 3 3 3 3 W+ 1 2 2 1 1 V 3 2 2 5 3 и а b с d е w 4 4 4 4 4 W+ 4 3 3 1 2 t и 5 5 G G 2 функции -фиф, которые связывают переменные и, v и и? абстрактного автомата, принимающие соответственно значения из множеств {а, 6, с, d, е}, {1, 2, 3, 4, 5, 6, 7} и {1, 2, 3, 4}. Компактной формой табличного представления можно считать матричную, в которой функции ур и ф задаются соответственно матрицей переходов V и матрицей выходов Ф: Т = Абстрактный автомат можно представить и в виде ориентированного графа, называемого графом поведения автомата. Так, на рис. 88 приведен граф поведения, описывающий этот же самый абстрактный автомат. Его вершины изображают состояния автомата, а дуги, отмечен- а Ь с d e Г2 2 1 4 4-| 2 4 3 3 2 12 2 11 U 3 3 1 2J 1 2 3 > 4 Ф = а Ь с d e Г1 1 3 7 6П 4 4 4 4 4 13 2 2 5 3 L5 5 G G 2_ 1 2 3 1 4
364 ГЛ, 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Рис. 88. Граф поведения автомата. ные значениями переменных и и v,— переходы между состояниями. Подобным же образом могут представляться и автоматы с абстрактным состоянием, входные и выходные состояния у которых задаются значениями векторов х и у. Однако, если только значения параметров пит (длины векторов х и у) не слишком малы, то эти векторы будут иметь много значений (соответственно 2П и 2т), и представление автомата становится громоздкими неудобным.^В то же время во многих практических ситуациях функции а|) и ф можно представлять достаточно компактно, задавая их не на элементах пространства входных переменных, а на его интервалах, т. е. пользуясь дизъюнктивными нормальными формами. К такому виду легко приводится, например, описание поведения моделируемого дискретного устройства посредством микропрограммы. Не входя здесь в рассмотрение исходных форм задания микропрограммы (сними мы познакомимся ниже), покажем пример, в котором микропрограмма уже приведена к принятой в настоящей книге матричной форме (табл. 7). Заметим, что при таком приведении оказывается, что для каждого значения переменной w соответствующее множество интервалов пространства входных переменных образует разбиение — интервалы взаимно не пересекаются, а их объединение совпадает с данным пространством. Нетрудно подсчитать, что при представлении этого же автомата на элементах таблица заняла бы 27-4 = 512 строк. Допустим теперь, что мы заменили в рассматриваемом примере многозначную внутреннюю переменную w на булев вектор z = (z1? я2, z3), поставив в соответствие значениям 1, 2, 3 и 4 переменной w значения 1 0 0, 0 1 О, О 0 1 и 1 0 1 вектора z. Тогда получим булев автомат, представленный табл. 8. Очевидно, что эта таблица задает
27. ПОСЛЕДОВАТЕЛЬНОСТНЫЕ СХЕМЫ 3G5 Таблица 7 X _ 1 1 _ о 1 0-01 1 _ 0 1 0 0 1 1 W 1 1 2 2 2 3 3 3 3 4 4 W+ 3 4 1 2 1 2 1 4 2 3 2 У 0 110 0 0 10 0 1 0 0 110 10 0 10 0 0 0 0 1 10 0 0 0 0 10 0 1 0 0 10 0 10 0 0 0 10 0 10 0 0 10 0 | Таблица 8 Z 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 10 1 1 1 0 1 Z+ 0 0 1 10 1 10 0 0 10 10 0 0 10 10 0 10 1 0 10 I 0 0 1 I 0 1 0 - 1 1 - - _ о 1 0-01 1 - 0 1 О О о 1 0 110 0 0 10 0 1 0 0 110 10 0 10 0 0 0 0 1 10 0 0 0 0 10 0 1 0 0 10 0 10 0 0 0 10 0 10 0 0 10 0 в дизъюнктивной нормальной форме систему булевых функций, отображающих множество всевозможных значений вектора (х, z) в множество значений вектора (z+, у). Достаточно очевиден и переход от такой таблицы к применяемой" нами матричной форме представления системы булевых функций. Напомним, что эта форма состоит из матрицы значений аргументов и матрицы соответствующих значений функций. В данном случае первая из матриц образуется столбцовой конкатенацией матриц Z и X, представляющих своими столбцами значения векторов z и х, а вторая — столбцовой конкатенацией матриц Z+ и Y, задающих аналогичным
366 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ образом соответствующие значения векторов z+ и у (для единообразия значения векторов z и z+ вынесены на первое] место). В данном случае получаем следующую пару матриц: [Z, X] = [Z+, У] = 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 — 1 — 0 1 0 1 0 0 0 0 1 0 1 0 — — 0 0 1 1 0 0 1 0 1 ' 0 1 1 — —_ On 1 0 0 0 1 0 0- Zi Z-i 23 Xi Хз У ХА хь х^ х-г 2,+ Z2+ 2.+ Vi Ui • Уз У< Уъ Такая форма легко и непосредственно получается из секвенциального описания автомата, рассматриваемого ниже. Отношение реализации. Это отношение является важнейшим в теории автоматов и практике логического проектирования дискретных устройств. Уже говорилось, что каждый автомат является математической моделью некоторого реального или возможного дискретного устройства, а каждое дискретное устройство, со своей стороны, является технической реализацией некоторого автомата. Определим теперь понятие отношения реализации более точно, распространив его и на тот случай, когда производится сравнение между собой двух автоматов. В этом случае будем говорит:* о формальной реализации. Будем различать три типа формальной реализации: реализацию доопределением, реализацию кодированием и реализацию расширением.
27. ПОСЛЕДОВАТЕЛЬНОСТНЫЕ СХЕМЫ 367 Реализация доопределением возможна для частичных автоматов, функции которых определены, как говорят, не всюду. Будем говорить, что автомат А реализует автомат В, если поведение автомата А совпадает с поведением автомата В на области определения последнего. Например, если некоторый автомат описывается одной неполностью определенной булевой функцией, то при любом ее доопределении получается автомат, реализующий исходный. С реализацией кодированием мы также уже практически познакомились. Если в формальную систему, которая рассматривается как автомат, входит некоторая многозначная переменная, то, заменив ее на булев вектор, так чтобы различным значения переменной соответствовали различные значения вектора, получим новую систему, рассматриваемую как автомат, реализующий исходный. Наконец, реализация расширением связана с введением в формальную систему дополнительных переменных при сохранении старых. При этом все функциональные связи между исходными переменными сохраняются, но форма представления некоторых из них меняется: функции заменяются композициями других, обычно более простых функций, одни из которых соответствуют дополнительным переменным, другие — исходным переменным, выраженным с помощью дополнительных. Расширенная таким образом система функциональных отношений будет представлять автомат, реализующий исходный. Реализация расширением играет особо важную роль при синтезе дискретных устройств. Последовательно расширяя формальную систему, представляющую исходный автомат, мы декомпозируем образующие ее функции, конструируя в конечном счете такую композицию, реализующую исходную систему, которая будет состоять из некоторых «элементарных» функций, являющихся операторами используемых при синтезе технических элементов. Введенные при этом дополнительные переменные будут соответствовать промежуточным полюсам схемы, через которые переносится информация, протекающая от входа устройства к его выходу. В неявном виде релизация расширением используется и при поиске подходящих в каком-то смысле алгебраиче-
368 ГЛ. 7, РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ ских форм заданных булевых функций. Например, минимизация булевой функции в классе дизъюнктивных нормальных форм (точнее, поиск кратчайшей ДНФ) может рассматриваться как нахождение такого расширения заданной системы (одной булевой функции, представленной таблицей значений), при котором вводится минимальное число дополнительных переменных, каждая из которых описывается некоторой элементарной конъюнкцией аргументов исходной функции так, чтобы последняя представлялась как дизъюнкция этих дополнительных переменных. Решив эту задачу, мы можем интерпретировать полученный результат как структурную формулу и перейти на ее основе к технической реализации заданного автомата, например, используя ПЛМ, у которой состояния промежуточных полюсов будут описываться введенными дополнительными переменными. 28. Секвенциальные автоматы Системы секвенций. Предлагаемая вниманию читателя модель, называемая секвенциальным автоматом, удобна при решении задач анализа и синтеза дискретных управляющих устройств с большим числом переменных. В этом случае традиционные функциональные модели, связанные с рассмотрением множеств входных, выходных и внутренних состояний, оказываются явно непригодными, поскольку эти множества могут содержать много элементов, перечислить которые практически невозможно. Предлагаемая модель опирается непосредственно на базисные булевы переменные ег, е2>- • •> eh, отображающие своими значениями состояния основных функциональных элементов моделируемой технической системы — ее датчиков и исполнительных механизмов. Модель представляет собой алгоритм управления, задающий причинно-следственные связи между событиями, которые могут происходить в системе. На форму представления событий и связей между ними налагаются определенные ограничения. Событие может заключаться в том, что некоторая переменная е% примет значение 1 или 0. Такое событие обозначается через е$ или ёь и называется базисным. Комбинация нескольких базисных событий выражается
28. СЕКВЕНЦИАЛЬНЫЕ АВТОМАТЫ 369 соответствующей элементарной конъюнкцией (например, ег ёъ е7 е6) и называется простым событием. Если в этой комбинации представлены значения всех переменных ег, е21. . ., ehl т. е. если элементарная конъюнкция оказывается полной, то событие называется элементарным. Событие может быть сложным, и в этом случае оно представляется произвольной булевой функцией базисных переменных: событие имеет место, если соответствующая функция принимает значение 1. Очевидно, что любое сложное событие может быть представлено некоторой дизъюнктивной нормальной формой, т. е. в виде дизъюнкции нескольких простых событий. Именно рассмотрение сложных событий и задание причинно-следственных связей между ними обеспечивает определенные преимущества секвенциального автомата перед другими функциональными моделями дискретных устройств. Секвенциальный автомат — это некоторая система S, представляющая собой неупорядоченное множество выражений st типа fi \— ки называемых секвенциями. Через fi обозначается булева функция переменных ег, е21. . . . .., ehl а через kt — элементарная конъюнкция некоторых из этих переменных. При этом считается, что функция ft не равна тождественно нулю, а ранг элементарной конъюнкции к] (число символов в ней) не менее 1. Секвенция ft \— kt задает непосредственное следование двух событий: событие ft должно сопровождаться событием kt. Это означает, что если в некоторый момент временипеременные^, еъ . . ., eh принимают значения, обращающие функцию fi в единицу, то непосредственно вслед за этим должна принять значение 1 элементарная конъюнкция kt и, следовательно, однозначно определятся значения всех переменных, входящих в состав этой конъюнкции. Секвенциальный автомат является удобным средством описания функциональных свойств дискретных управляющих устройств различного назначения при их проектировании. Каждую из секвенций можно рассматривать как определенное требование, предъявляемое к способу функционирования технической системы со стороны проектировщика. Система S в целом представляет совокупность таких требований. Множество всех переменных е11 е2>- • •> ен удобно разбить на три класса, включив в первый из них такие пе-
370 ГЛ. 7S РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ ременные, которые попадают лишь в левые части секвенций рассматриваемой системы 5, во второй — переменные, фигурирующие как в левых, так и в правых частях, и в третий — переменные, встречающиеся лишь в правых частях. Естественно назвать эти переменные соответственно входными, внутренними и выходными и обозначить их через хх, х21. . ., хп\ zu z2l. . ., %х и уи у2,. . ., ут. В технических системах входные переменные обычно представляют состояния разнообразных датчиков и органов управления, с которых снимается информация, входная для дискретного управляющего устройства, реализующего заданный алгоритм управления. Внутренние переменные соответствуют исполнительным механизмам (катушкам реле, клапанам, переключателям и т. п.) с двумя устойчивыми состояниями, в которых они могут задерживаться сколь угодно долго. Совокупность этих механизмов представляет собой своеобразную «память» системы. Они также снабжаются соответствующими датчиками, снимаемые с которых сигналы поступают в цепи обратной связи и воздействуют на ход дальнейших событий. Выходные переменные ставятся в соответствие выходным элементам системы, не способным, как правило, запоминать приходящие к ним сигналы. Принимаемые ими значения в текущий момент времени никак не влияют на последующие значения. В частности, если внутренние переменные отсутствуют (I = 0), то рассматриваемая техническая дискретная система будет лишена памяти. В этом случае система секвенций будет описывать комбинационную схему. Очевидно, что есть смысл рассматривать лишь такие системы секвенций, в которых отсутствуют противоречивые требования, заключающиеся в том, что некоторая переменная должна будет, согласно одной секвенции, принять значение 1, а согласно другой — значение 0. Для этого необходимо, чтобы для любых секвенций st и Sj выполнялось условие (к, д *, = о) =ф (/, л U = 0). где =Ф — символ формальной импликации: при всех значениях аргументов, обращающих левую часть выражения в тождество, правая часть также должна становиться
28. СЕКВЕНЦИАЛЬНЫЕ АВТОМАТЫ 371 тождеством. Ниже будем предполагать, что это условие выполняется всегда. К системе S могут предъявляться и некоторые дополнительные требования, связанные, например, с устранением опасных состязаний, возникающих при одновременном изменении значений нескольких переменных. Эти требования будут рассмотрены ниже. Если требование, представленное секвенцией s(, является расширением требования, представленного секвенцией sj (т. е. последнее автоматически удовлетворяется при удовлетворении первого), будем говорить, что секвенция st реализует секвенцию Sj. Отношение реализации транзитивно: если st реализует sj и Sj реализует sk, то st реализует sk. Легко показать, что секвенция st реализует секвенцию Sj, если и только если fj^fi и kt =$>kj. Например, секвенция *1 V Ч («1 V *2) I- ЧУхУь реализует секвенцию *i V zi (*i V ад) Ь УгУ*> а последняя — секвенцию *i (Si V ад) Ь Уг- Две секвенции st и sj назовем эквивалентными, если каждая из них реализует другую. Очевидно, что при ЭТОМ /; = fj И kt = kj, Т. в. St = Sj. Итак, в каждой секвенции st событие ft выступает как причина, а событие kt — как следствие. Если при этом оба события являются простыми, то секвенцию st будем называть простой. Если же функция ft принимает значение 1 ровно на одном наборе значений переменных хг, д;2,. . ., хп, zx, z2,. . . ., i\ (т. е. событие ft является элементарным в пространстве аргументов — входных и внутренних переменных системы S) и если событие kt является базисным (т. е. представляется выражением типа Zj, Zj, у^илпу)), то секвенцию$г-гбудем называть элементарной. Название элементарной секвенции оправдывается следующим ее свойством: если элементарная секвенция s,-
372 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ реализует секвенцию sj, то последняя эквивалентна ей и также является элементарной. Отношения между секвенциальными автоматами. Будем рассматривать секвенциальные автоматы как неупорядоченные множества без повторений. Обозначим верхним индексом э элементарные секвенциальные автоматы, как будем называть автоматы, представляемые системами элементарных секвенций. Элементарные секвенциальные автоматы S\ и S) эквивалентны, если и только если S* = Sj, т. е. соответствующие множества равны. Автомат S\ реализует автомат i5j, если и только если S) cz S\. Автомат St (в общем случае не элементарный) реализует автомат Sj, если и и только если каждый элемент множества Sj реализуется некоторым элементом множества St. Автомат £j реализует автомат St, если все элементарные секвенции, реализуемые элементами множества 5Ь принадлежат множеству Sj. Автоматы St и 5^ эквивалентны, если и только если St реализует S] и S3j реализует St. Отсюда следует, что для каждого секвенциального автомата St существует единственный эквивалентный ему элементарный секвенциальный автомат £?. Автоматы St и Sj эквивалентны, если и только если S* = S). Автомат St реализует автомат 5у, если и только если 5| сг Элементарный секвенциальный автомат можно рассматривать как каноническую форму произвольного секвенциального автомата (напомним, что форму называют канонической, если представления в ней различных, но эквивалентных объектов совпадают). Эта форма может быть получена путем объединения множеств элементарных секвенций, получаемых в результате разложения отдельных секвенций ft |— kt множества S по правилам: а) секвенция ftl V fi2 (— kt эквивалентна паре секвенций (ftl \- kb fi2 \- kt); б) секвенция ft (— knki2 эквивалентна паре секвенций {ft Ь" к1Ъ / h *f2), позволяющим послсдователыто расщеплять секвенции
28. СЕКВЕНЦИАЛЬНЫЕ АВТОМАТЫ 373 преобразуемой системы, пока они не станут все элементарными. Множество элементарных секвенций можно получить и быстрее, если иметь в виду, что они образуются всевозможными парами, первый элемент которых выбирается из множества членов совершенной дизъюнктивной нормальной формы функции /ь а второй — среди сомножителей элементарной конъюнкции kt. Элементарный секвенциальный автомат оказывается удобной формой для теоретических построений, определения смысла вводимых отношений между секвенциальными автоматами. Однако для практических применений, связанных с рассмотрением реальных технических систем, эта форма слишком громоздка. В связи с этим представляют интерес следующие две формы секвенциальных автоматов. Одна из них задается множеством секвенций, левыми частями которых служат элементарные события в пространстве входных и внутренних переменных, причем все эти события различны. Это множество назовем точечным секвенциальным автоматом и будем обозначать его с помощью верхнего индекса т. Другая форма задается множеством секвенций с различными правыми частями, которыми служат базисные события в пространстве внутренних и выходных переменных. Это множество назовем функциональным секвенциальным автоматом и будем обозначать его с помощью верхнего индекса ф. Каждая из внутренних и выходных переменных определяется в нем как частичная булева функция, задаваемая парой полностью определенных: одна из них задает единичные значения, другая — нулевые. Очевидно, что эти две функции должны быть ортогональны. Точечный секвенциальный автомат ST может быть получен из элементарного автомата S9 путем разбиения последнего на группы элементарных секвенций с общей левой частью и замены каждой из этих групп одной секвенцией с той же левой частью. Правая часть данной секвенции определяется как конъюнкция правых частей секвенций соответствующей группы. Автомат ST можно получить также путем разложения секвенций произвольного автомата S посредством дизъюнктивного расщепления их левых частей.
374 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Функциональный секвенциальный автомат 5* может быть получен из элементарного автомата S9 путем группирования элементарных секвенций по правым частям и последующей замены групп секвенциями, левая часть которых представляется дизъюнкцией левых частей секвенций соответствующей группы. Нетрудно получить автомат 5* и из произвольного автомата S, разлагая секвенции последнего путем конъюнктивного расщепления правых частей. Подобно элементарному, точечный и функциональный секвенциальные автоматы являются каноническими. Действительно, обозначая через SJ и st точечный и функциональный автоматы, эквивалентные некоторому секвенциальному автомату Sh можно утверждать, что если два автомата St и Sj эквивалентны, то S] = 5J и Sf = Sf, если же St и Sj не эквивалентны, то SJ Ф S] и St ф Sf. Точечный и, тем более, функциональный автомат являются более компактными формами, чем элементарный секвенциальный автомат, однако и они могут оказаться излишне громоздкими. Более практичен в этом отношении простой секвенциальный автомат, как будем называть систему простых секвенций. Эта форма особенно удобна для наших целей, поскольку она имеет простое матричное представление. Автомат описывается при этом парой троичных матриц-конкатенаций: матрица [Z, X] задает своими столбцами простые события-причины ft, а матрица [Z+, Y] — простые события-следствия kt. Верхний индекс + означает, как и ранее, что в отмеченной матрице представлены последующие значения рассматриваемых переменных. Например, в данном матричном представлении система простых секвенций ^1 \— 22*/2*/4, ^l^s |— гзУгУз, X2Xtf\Z2 [— ZiZ2yQlj\, %3%3 I— ^1^5э x±X2z3 \- Ч*ШгУ*
28. СЕКВЕНЦИАЛЬНЫЕ АВТОМАТЫ 375 выглядит следующим образом: 1 _ о — —1 — О 1 - - - 1 - О О 1 - - 1 - 1 - О - 1 О -J — 10 —-| — О — 1 0 - - 1 1 — — 0 • - 1 — - 0—1 1 - о - -J Сформулированное выше условие непротиворечивости системы S принимает теперь следующий вид: ортогональ ным столбцам матрицы [Z+, Y] должны соответствовать ортогональные столбцы матрицы [Z, X]. Легко проверить, что в заданной паре матриц эти условия выполняются. Рассматривая некоторый конкретный секвенциальный автомат £, разумно задаться вопросом о его полноте. Очевидно, что последняя будет обеспечена, если V/i ~ 1 и каждая элементарная конъюнкция kt содержит символы всех внутренних и выходных переменных. Это условие достаточно, но не является необходимым. При рассмотрении более общего случая требуется уточнить интерпретацию множества секвенций S. Ниже предлагаются два способа такого уточнения. Назовем инерционным секвенциальным автоматом систему секвенций, интерпретируемую следующим образом: если во всех элементарных конъюнкциях kh соответствующих функциям fu принимающим в текущий момент времени значение 1, отсутствует символ некоторой внутренней переменной, то считается, что эта переменная сохраняет свое значение, а если отсутствует символ выходной переменной, то считается, что она принимает значение 0. Очевидно, что функциональные свойства такого автомата определены тем самым полностью. V'" 1 " 1 \Ъ\ Y] = 1 1
376 ГЛ. 7, РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Частичным секвенциальным автоматом назовем систему S, интерпретируемую следующим образом: если во всех элементарных конъюнкциях kt, соответствующих функциям fi, принимающим в текущий момент времени значение 1, отсутствует символ некоторой внутренней или выходной переменной, то последующее значение этой переменной считается неопределенным. Какое бы значение ни приняла эта переменная, представленную системой связь событий будем считать реализованной. В соответствии с этой интерпретацией будем считать, что система S задает функциональные свойства рассматриваемой технической системы лишь частично, и их можно произвольно доопределять при построении устройства, реализующего алгоритм управления, заданный системой S. Реализация секвенциальных автоматов на ПЛМ. Секвенциальный автомат достаточно легко реализуется на ПЛМ изученного нами типа. Проще всего это осуществляется, когда заданная система секвенций S интерпретируется как инерционный автомат. Эта модель хорошо отражает свойства таких технических систем, в которых значения внутренних булевых переменных zt представляются состояниями отдельных механизмов, входящих в состав системы. Физическая природа этих механизмов может быть весьма разнообразна: механизмы могут оказаться электрическими, гидравлическими,механическими,пневматическими и т. д., однако ведут себя они одинаково, что позволяет включить их в один класс. В электронном исполнении такие механизмы известны под названием триггеров, однако общего названия для них не существует — по крайней мере автору не удалось найти его в литературе. Будем пока называть их биаками. Определим биак как элементарный механизм произвольной физической природы, обладающий двумя устойчивыми внутренними состояниями (обозначим их через 1 и 0) и тремя двоичными полюсами — двумя входными и одним выходным, с которого и снимается значение булевой переменной zt (таким образом, выходное состояние биака всегда совпадает с его внутренним состоянием). Состояния входных полюсов будем представлять булевыми переменными у\ и <у?» называя их переменными возбуждения биака.
28. СЕКВЕНЦИАЛЬНЫЕ АВТОМАТЫ 377 Функционирует биак следующим образом: если обе переменные у} и -у? получают значение 0, то состояние биака остается прежним; если у] = 1 и -у? = О, то биак переходит в состояние 1; если у\ = О и -у? = 1, то биак переходит в состояние 0; одновременное принятие переменными у\ и 7? значения 1 считается недопустимым. Различные технические реализации описанной модели отличаются друг от друга лишь выбором конкретных физических переменных для представления значений логических пе- f 10 « V- ременных zu yi и у\ да инерцией ме- " ханизма, определяющей скорость % перехода биака из одного состояния в другое. Рис. 89. Биак# Графическое изображение биака, которым будем пользоваться в дальнейшем, показано на рис. 89. Реализация инерционных секвенциальных автоматов основывается на определении переменных возбуждения биака у\ и -у? как некоторых булевых функций входных и внутренних переменных системы S. Эти функции, называемые соответственно функциями возбуждения единичного и нулевого входных полюсов биака и обозначаемые через ty\ и Ф?' определяют условия перехода биака в состояния 1 и 0. В том случае, если автомат задан в матричной форме, парой матриц [Z, X] и [Z+, У], функции г|)* и я|э? легко находятся по этим матрицам и выражаются в дизъюнктивной нормальной форме, удобной для реализации на ПЛМ. Более того, соответствующая интерпретация этих матриц приводит к непосредственной реализации заданного автомата на одной ПЛМ размером (р, q, г), если только число входных и внутренних переменных автомата не превышает /?, число выходных переменных, сложенное с удвоенным числом внутренних, не превышает р, а число секвенций в системе S не превышает q. Покажем, как это делается, на знакомом примере секвенциального автомата, заданного парой матриц ш
378 ГЛ, 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ [Z,X] = 0 — — 1 — — - о о [Z+,Y] = — 1 0 - — — 1 - - 0 1 1 1 0 — — 0 0 — 1 0 —. 1 1 1 — — О -0-11 1 о — Только сейчас этот автомат считается инерционным. Схематически он изображен на рис. 90, где вопросительным знаком отмечен прямоугольник, занимающий место комбинационной схемы, которую и надо реализовать на ПЛМ. Структура искомой ПЛМ определяется непосредственно матрицами [Z, X] и [Z+, У] и показана на рис. 91. Обратим внимание читателя на то, что троичная матрица Y заменяется булевой — вместо значений «—» всюду проставляется 0, в полном соответствии с определением понятия инерционного автомата, Может случиться, что размеры реальной ПЛМ будут недостаточны для того, чтобы на ней можно было реализовать заданный секвенциальный автомат. В этом случае можно построить сначала условно «большую» ПЛМ, а затем расщепить ее, применяя изложенные выше декомпозиционные методы синтеза сетей из ПЛМ. Можно попытаться также выполнить над исходными матрицами [Z, X] и [Z+, У] некоторые оптимизирующие преобразования, стремясь вогнать эти матрицы в рамки ограничений, при которых возможна непосредственная реализация автомата на одной ПЛМ. Допустим теперь, что внутренние переменные системы секвенций S, как и прежде, описывают состояния биаков, но сама система S интерпретируется как частичный автомат. В этом случае построение управляющего устройства можно разбить на два этапа, на первом из которых на-
8, СЕКВЕНЦИАЛЬНЫЕ АВТОМАТЫ 370 ходится некоторый инерционный автомат, реализующий заданный частичный, а на втором решается задача технической реализации полученного инерционного автомата, например на основе описанного выше метода. При этом среди множества различных инерционных автоматов, Рис. 90. Инерционный секвенциальный автомат. Z-o- х2° 4-Ф- -о у; -о У! Рис. 91. Реализация комбинационной части инерционного секвенциального автомата на ПЛМ. реализующих исходный, целесообразно выбирать простейший, оптимизируя таким образом находимое решение задачи в целом. Возможен и другой подход, применимый к синтезу устройств управления такими техническими дискретными системами, в которых вместо биаков используются дву- полюсники, реализующие функции задержки значения одной двоичной переменной. Поведение такого элемента, изображенного на рис. 92, описывается в терминах двоичной переменной z\, поступающей на вход элемента, и двоичной переменной zh снимаемой с его выхода: значение переменной z\ передается переменной zu или, другими словами, переменная z\ задает следующее во времени
380 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ значение переменной zt. Такие элементы принято называть элементами задержки. В технической системе, реализующей частичный автомат S, каждая переменная zt определяется как булева функция i\-)t от входных и внутренних переменных системы. Очевидно, что эта функция долж- + |—| на удовлетворять условию 21 ~* Г"^ Z/ ^ <л(ч - $. Рис. 92. Элемент ПРИ выполнении этого усло- задержки. вия будут выполняться и все предписанные функциями tyl и г|){ правила присвоения значений внутренним переменным zt. Действительно, если i|?i = 1, то переменная zt получит значение 1, если же \|)? = 1, то zt получит значение 0. Легко убедиться и в том, что невыполнение любого из входящих в условие неравенств приведет к нарушению этих правил присвоения. В рамках сформулированного условия и должен производиться поиск функций i|)j, наиболее просто реализуемых на ПЛМ. Оптимизирующие преобразования. Допустим, что мы имеем дело с некоторым простым секвенциальным автоматом, и этот автомат задан в матричной форме, троичными матрицами [Z, X] и [Z+, У], которые обозначим для простоты через Р и R. Каждая секвенция Si представляется при этом парой троичных вектор-столбцов р* и гг: рг \— г* (векторы интерпретируются как элементарные конъюнкции). Можно указать на следующие элементарные эквивалентные преобразования системы S, вытекающие из отмеченных выше свойств системы и приводящие к сокращению числа секвенций, т. е. числа столбцов в матрицах Р и R. Операция склеивания секвенций: если рг = р7, то пара секвенций рг (— г* и р7 |— г7 заменяется одной секвенцией р* |— гг Д т;, если же г* = г\ а вектор-столбцы рг и р7 являются соседями, то пара секвенций st и Sj заменяется на одну секвенцию р* V р7 |— гг. Например, пара секвенций 1_10 1 | 0 11-1 1_10 1 |— 10 — 1 1 1
28. СЕКВЕНЦИАЛЬНЫЕ АВТОМАТЫ 381 заменяется секвенцией 1 — 10 11-10-111-1, а пара секвенций 0-11-0-1 10-10 , 0-10-0-1 10-10 заменяется секвенцией 0-1 0-| 10 -10 . Операция поглощения секвенций: если pj => рг, т. е. если р* Д pJ = р\ и если гг =^> т\ то секвенция Sj может быть выброшена из системы. Например, если в систему S входят секвенции _0-1 [—01 — 11 — 10, _ 0 - 1 1 0 — | 1 1 О, то последняя из них является излишней, и удалив ее, получим систему, эквивалентную исходной. Условия применимости этих операций выполняются не всегда» В общем случае, стремясь к минимальной матричной форме заданной системы секвенций, приходится решать задачу совместной минимизации системы булевых функций в классе ДНФ. При этом, хотя инерционный автомат является сам по себе полностью определенным, описывающие его функции возбуждения биаков оказываются частичными, что представляет дополнительные возможности упрощения системы. Представим инерционный секвенциальный автомат как функциональный автомат, в форме £*: /•2 Ь" Z2i U Н 2*2, 1\ I— «it fi J— *ь /i+i I— yi» /?+ihi/b . ••••••••• / l+m | У mi fl+m\—J/m*
382 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Очевидно, что условие непротиворечивости системы S в данной форме будет представлено тождеством f\Aft = 0 (i = 1, 2,. ..,1 + т). Согласно определению инерционного секвенциального автомата последние т пар секвенций упрощаются путем удаления из системы вторых элементов пар, т. е. выражений fl+i \— г/;, где i = 1, 2, . . ., т. Что касается первых I пар, то левые части образующих их секвенций могут интерпретироваться как функции возбуждения входных полюсов соответствующих биаков. Важно заметить, что выбор этих функций неоднозначен. Общее решение представляется следующим утверждением. Все автоматы, получаемые из инерционного секвенциального автомата £Ф заменой функций f\ и /? (i = 1, 2, . . ., I) соответственно на любые функции ^\ и я|)?, удовлетворяющие условиям взаимно эквивалентны. Конкретный выбор может подчиняться задаче реализации системы 5* наиболее простой комбинационной схемой, на выходных полюсах которой будут представлены функции возбуждения биаков. В частности, при выборе конкретных функций ty\ и я|)? можно стремиться к уменьшению числа аргументов в этих функциях. Пусть некоторая функция / представлена формулой, в которой, в частности, фигурирует символ переменной х. Подставляя всюду в формуле вместо этого символа константу 1, получим формулу, представляющую функцию, которую обозначим через / : х. Подстановка вместо х значения 0 приводит соответственно к функции / : X. Следующее утверждение позволяет в некоторых случаях сокращать число аргументов в функциях возбуждения биаков. Если некоторые функции f\ и /? инерционного функционального секвенциального автомата 5* удовлетворяют условию (Л : lt) Д (/? : *) = О,
28. СЕКВЕНЦИАЛЬНЫЕ АВТОМАТЫ 383 то замена их соответственно на f\ : zt и /? :zt приводит к получению автомата, эквивалентного исходному. При реализации секвенциальных автоматов сетью из ПЛМ особый интерес представляет задача минимизации числа секвенций в системе £, поскольку эту задачу можно интерпретировать как задачу минимизации числа промежуточных полюсов в ПЛМ последнего яруса сети. Посмотрим, к чему сводится нахождение точного решения этой задачи для инерционного и для частичного секвенциальных автоматов. Обозначим через S~ ортогональный секвенциальный автомат, эквивалентный исходному автомату S и получаемый из ST путем слияния (взятия дизъюнкции левых частей) секвенций с одинаковыми правыми частями. Все функции fa, служащие левыми частями секвенций автомата £", оказываются взаимно ортогональными, т. е. конъюнкция любых двух из них тождественно равна нулю. Автомат S~ можно получить и непосредственно из исходного автомата S путем его ортогонализации, при которой строится булево пространство значений функций ft и удаляются его пустые элементы. Результат такого построения однозначен — ортогональный автомат каноничен. Совокупность правых частей секвенций автомата S~ удобно изобразить в виде троичной матрицы К~, способ построения которой можно понять из рассмотрения следующего примера: L 2 3 4 6 6 7 1 2 3 4 5 Первый столбец матрицы представляет элементарную конъюнкцию zxz2z^ (изг секвенции fx |— ^2z4), второй — ZxZzZb И Т. Д. Минор матрицы К~, все столбцы которого равны и содержат лишь нули и единицы, назовем правильным. Совокупность правильных миноров матрицы К~ назовем ее правильным минорным покрытием, если каждый эле- 1 0 1 — 1 — 2 1 — 1 — 1 3 — 1 0 0 — 4 — 1 0 0 1 6 0 1 0 0 — 6 0 — — 1 — 7 1 1 — 1 0 1 _
384 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ мент матрицы К~ со значением 0 или 1 принадлежит по крайней мере одному из этих миноров. Покрытие, составленное из минимального числа миноров, назовем кратчайшим. Минимизация инерционного секвенциального автомата сводится к нахождению кратчайшего правильного минорного покрытия матрицы К~. Например, можно указать на следующее кратчайшее правильное минорное покрытие рассмотренной троичной матрицы: (1, 2) х (1, 5) —минор, образуемый пересечением строк с номерами 1 и 2 со столбцами с номерами 1 и 5,(2, 3, 4) х (3, 4, 5), (1, 4) х (1,6), (1, 3, 5) х х(2, 7), (4, 5) х (4,7). Представляя каждый из этих пяти миноров соответствующей секвенцией, получим секвенциальный автомат $*, эквивалентный исходному и являющийся при этом минимальным (по числу секвенций). Его матрица К~ получает следующее значение: 12 3 4 6 Го? — о 1 _]i 1 1 _ - - И _ 0 - 1 — 3 . — О 1 — О И [_— — — 1 1J s Функции /* определяются при этом как дизъюнкции левых частей секвенций, представленных столбцами соответствующих миноров: и т. д. Будем говорить, что троичная матрица К~ является доопределением матрицы К], если она может быть получена из последней сменой значений некоторых элементов с «—» на 0 или 1. Минимизация частичного секвенциального автомата сводится к нахождению кратчайшего среди правильных минорных > покрытий всевозможных доопределений матрицы К~. Эта комбинаторная задача довольно сложна. Процесс ее крещения можно существенно упростить, если отка-
29. УСТОЙЧИВОСТЬ ПОВЕДЕНИЯ АВТОМАТОВ 385 заться от гарантий оптимальности получаемых решений и ограничиться рассмотрением столбцовых миноров (в образовании которых участвуют все строки матрицы). В таком случае задача сводится к разбиению матрицы К~ на минимальное число столбцовых миноров, составленных из взаимно неортогональных столбцов. Очевидно, что эту задачу можно сформулировать как задачу о нахождении минимальной правильной раскраски неориентированного графа, вершины которого поставлены во взаимно однозначное соответствие со столбцами матрицы К~, а ребра отмечают пары взаимно ортогональных столбцов. Применение данного метода к приведенной выше конкретной матрице К~ приводит к ее разбиению на три столбцовых! минора, образованных группами столбцов (1, 6), (2, 7) и (3, 4, 5), и получению следующей матрицы, представляющей один из минимальных автоматов, реализующих исходный: 12 3 [О 1 0] 1 1 — 1 2 — 1 0 3 . 1 0 0 * L— 1 1J б Функции /* определяются при этом следующим образом: /t=/rv/e, П = П\/ПУП- 29. Устойчивость поведения автоматов Состязания между булевыми переменными. Мы уже говорили о том, что любой технический элемент, входящий в состав дискретного устройства, обладает некоторой инерцией, выражающейся соответствующим временем задержки переключения элемента. Это приводит к тому, что при технической реализации заданной системы булевых функций некоторой комбинационной схемой каждая из выходных переменных 13 А. Д. Закрсвский
386 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ yt получает своё новое значение лишь некоторое время %i спустя, после того, как на входных полюсах схемы установятся значения всех аргументов. Значения параметра ть как правило, различны для разных yt. Более того, они могут оказаться нестабильными и меняться с течением времени и в зависимости от обстоятельств, полный учет которых практически невозможен. В наиболее тяжелых случаях ничего не остается делать, как считать все xt случайными величинами, подчиняющимися лишь одному условию 0 < xt < т, где т — некоторая константа, заведомо превышающая значение любого из параметров тг-. Именно такую ситуацию и будем иметь в виду. При таких условиях возникают своего рода состязания между выходными переменными, исход которых будет выражаться порядком, в котором переменные примут свои очередные значения. Для комбинационной схемы это явление не представляет особой опасности, поскольку можно выждать промежуток времени т после подачи очередного набора значений входных переменных и лишь после этого «снять» соответствующие значения выходных переменных — к этому времени переходные процессы в схеме затухнут и правильность установившихся значений выходных переменных будет гарантирована. Однако состязания могут оказаться опасными, если они происходят в последовательностной схеме и если в них принимают участие внутренние переменные. Действительно, эти переменные входят в систему и как функции, и как аргументы. Принимая новые значения, они сразу же изменяют условия определения очередных значений переменных-функций, и события могут разворачиваться по-разному при различных порядках смены значений внутренних переменных. Рассмотрим для примера систему секвенций ^1 |— 21*2*3* Х\ |— ZiZ%, XtfiZ-i |— Z3 и допустим, что в исходный момент времени переменная хх имеет значение 0, а затем получает значение 1. Очевидно, что внутренние переменные zv z2 и z3 сначала также будут
29. УСТОЙЧИВОСТЬ ПОВЕДЕНИЯ АВТОМАТОВ 387 иметь значение 0, а потом переменные zx и z2 примут значение 1. Что касается переменной zs, то она примет значение 1 в том случае, когда переменная я2 «опередит» переменную ях, в результате чего наступит событие x^z^ играющее роль причины в третьей секвенции. Точнее говоря, z3 примет значение 1, если указанное событие продержится достаточно долго, чтобы сработали те цепи в дискретном, устройстве, которые реализуют третью секвенцию. Если же это условие не будет выполнено, т. е. если состязания выиграет переменная zx или, по крайней мере, она не сильно отстанет от я2, то значение переменной zB останется нулевым. Это — пример опасных состязаний, приводящих к потере детерминизма, или устойчивости, в поведении технического устройства. При реализации системы секвенций приходится беспокоиться о том, чтобы избежать появления таких состязаний в устройстве и обеспечить таким образом устойчивость поведения устройства. Эта задача может решаться по-разному. Существует универсальный подход к ее решению, известный под названием синхронной реализации автомата. Суть этого подхода заключается в использовании синхронизирующей последовательности сигналов, задающей дискретное время t, пробегающее ряд значений 1, 2, 3,. . ., t, t -+- 1,. . . В каждый из этих моментов времени производится вычисление последующего значения внутреннего вектора z по формуле z+ = \|j (x, z), и к следующему моменту времени это значение оказывается переданным переменной z, попадая, таким образом, в аргументы функции переходов я|). Достаточно просто и в то же время надежно этот механизм может быть выполнен по двухтактной схеме, в которой все элементы, являющиеся носителями значений внутренних переменных, дублируются: их двойники представляют значения переменных zt, получающих, таким образом, автономную реализацию. Новые состояния этих элементов определяются в режиме чередования. В четные моменты времени производится вычисление функции i|) (x, z), присвоение вычисленного значения вектору z+ и фиксирование его на элементах-двойниках. В нечетные моменты это значение передается вектору z и фиксируется на основных элементах. 13*
388 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Технически указанные абстрактные моменты времени реализуются некоторыми промежутками времени, в течение которых и выполняются описанные операции. Если размер их равен т и т ^> xt для любой внутренней переменной zt, то состязания между последними становятся неопасными. Реализованный таким образом автомат называется синхронным. Следует заметить, что синхронная реализация обладает одним существенным недостатком: она связана с понижением быстродействия автомата. В тех случаях, когда быстродействием пренебрегать не приходится, используется асинхронная реализация — синтезируется асинхронный автомат. При этом полагается, что время течет непрерывно. В асинхронном автомате допускаются состязания между внутренними переменными, но принимаются меры к тому, чтобы они не были опасными. Задача ставится следующим образом. Задана матрица переходов между абстрактными состояниями, и требуется закодировать последние значениями булева вектора z, между компонентами которого и будут происходить состязания при переходах из одного состояния в другое. При этом требуется гарантировать устойчивость каждого предусмотренного в матрице W перехода при условии, что соотношение времен задержек цепей, вычисляющих значения различных компонет вектора z, произвольно. Эта задача известна под названием задачи противогоночно- го кодирования состояний автомата или размещения состояний автомата в булевом пространстве значений вектора z. Рассмотрим вкратце два метода ее решения: метод соседнего кодирования и метод прямых переходов. Метод соседнего кодирования. Этот метод основывается на использовании элементарных переходов между значениями вектора z, при которых изменяется значение лишь одной компоненты — переход совершается, таким образом, между соседними значениями вектора z. Очевидно, что элементарный переход устойчив, поскольку состязания могут иметь место лишь тогда, когда одновременно должны измениться значения по крайней мере двух компонент. Если удастся разместить состояния автомата так, что каждый из заданных в матрице Ч? переходов между #б-
29, УСТОЙЧИВОСТЬ ПОВЕДЕНИЯ АВТОМАТОВ 389 страктными состояниями будет реализован элементарным переходом между значениями вектора z, то тем самым рассматриваемая задача будет решена полностью. Однако соответствующее размещение состояний можно найти далеко не всегда — оно оказывается невозможным, если в графе переходов существует цикл нечетной длины. Поэтому решение задачи методом соседнего кодирования в общем случае связано с введением дополнительных состояний, кроме тех, которые фигурируют в матрице *Р". Эти состояния оказываются промежуточными при реализации некоторых переходов, заменяемых по данному методу цепочками элементарных переходов между значениями вектора z. Рассмотрим пример конкретной матрицы переходов ¥ асинхронного автомата. Как принято, все переходы, показанные в такой матрице, ведут непосредственно в устойчивые состояния, выход из которых возможен лишь при изменении значения входного вектора. Пусть заданная матрица будет частична, т. е. значения некоторых ее элементов будут неопределенными, Т = ь 5 6 5 5 6 5 В этой матрице представлены, например, переходы 3—> 4, 4 —> 6 и 6 —> 3, образующие цикл длиной 3. Очевидно, что нельзя реализовать все их непосредственно как элементарные переходы. Однако достаточно ввести еще одно состояние, после чего все заданные в матрице W переходы можно будет реализовать цепочками элементарных переходов. Решение представляется кодирующей матрицей 12346678 [О 1 0 1 0 1 О Л 1 01001110», 0 0 1 1 0 1 1 0J з
390 ГЛ. 1t РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ столбцы которой задают значения булева вектора z, служащие кодами абстрактных внутренних состояний, и следующей модификацией матрицы1?, в которой изменению подверглись элементы o|)J, грз, tyt, i|>4 и ^e: эти изменения отражают замену соответствующих непосредственных переходов на эквивалентные им цепочки элементарных переходов между соседними состояниями. В матрицу добавлена также дополнительная строка, соответствующая восьмому состоянию: а г1 2 1 8 2 7 7 L2 b 5 6 7 3 5 6 5 — с 1 2 4 4 1 2 — — d 5 — 3 — 5 7 3 — е 8 -, 2 — 6 — 6 6 2 - 1 2 3 5 . в 7 8 Нетрудно проверить, что все показанные в матрице W* переходы оказываются при данном кодировании элементарными. Критерий отсутствия опасных состязаний при прямых переходах. Допустим теперь, что указанные в матрице ¥ переходы реализуются непосредственно, т. е. все компоненты вектора z, которые должны изменить свои значения, будут делать это одновременно, хотя и с разной скоростью. Какие требования должны предъявляться к кодирующей матрице Q, чтобы возникающие при этом состязания не были опасными? Обозначим через z (i) и z (/) коды состояний i и / и рассмотрим переход между ними. Множество состояний, в которые автомат может попасть в результате состязаний, когда еще не все компоненты, которые должны изменить свое значение, успеют сделать это, образует интервал в пространстве значений вектора z, и этот интервал представляется троичным вектором z (£, ;), компоненты которого принимают значения одноименных компонент векторов z(i) и z (/), если те совпадают между собой, и принимают значение «—» в противном случае.
29. УСТОЙЧИВОСТЬ ПОВЕДЕНИЯ АВТОМАТОВ 391 Например, если z(i) = 10 0 110 0 10 1, z (;) = 1 0 1 0 1 0 0 0 1 1, то z(i,/) = 10 10 0 1. Рассмотрим теперь два перехода i ->• j и к ->- Z, где j ф /, причем эти переходы реализуются при одном и том же входном состоянии. Если интервалы z (i, j) и z (к, I) будут пересекаться, то это будет означать, что существует некоторое состояние, которое может быть достигнуто автоматом в результате состязаний как при первом, так и при втором переходе. Попав в это состояние, автомат потеряет информацию о том, в какое же из состояний у или I он должен перейти. Отсюда следует требование ортогональности интервалов z (i, j) и z (к, I). Учитывая способ получения указанных интервалов из кодов состояний, между которыми совершаются переходы, переформулируем данное требование применительно к кодирующей матрице Q. Для каждой пары переходов i~+ j и к-> Z, соответствующих одному и тому же входному состоянию и таких, что / Ф Z, в кодирующей матрице Q должна найтись строка, в которой] i-я и /-я компоненты будут иметь одно из значений 1 или 0, а А-я и Z-я компоненты — другое. Это требование удобно представить троичным вектором, в котором i-я и /-я компоненты получают значение 1, а к-я и 1-я компоненты — значение 0 (возможно и обратное — приписывание значения 0 компонентам i и /, а значения 1 — компонентам к и I). Например, в первом столбце матрицы переходов а 1 2 1 2 2 7 7 b с 5 1 6 2 - 4 5 . 4 5**1 6 2 5 — d 5 — 3 — 5 3 3 е 2 -1 2 ' — 6 — 6 6 J 1 2 3 4 5 в 7 соответствующем входному состоянию а, представлены переходы 1 -> 1, 2-^2, 3->1, 4->-2, 5-^2, 6-* 7 и
392 ГЛ. 7, РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ 7 ->• 7. Выбирая среди них пары, отличающиеся состоянием, в которое автомат переходит, оформим соответствующие требования к кодирующей матрице в виде вектор-строк, образующих следующую троичную матрицу: 2 3 4 5 6 7 О О О О 1 - - - - О 1 0 — — — О 1 — 0 — — — О — — — — — — — 1 1 0 0 0 — 0 0 .— о о о о о 0 0 0 0 — 1 — Совокупность этих требований обладает некоторой избыточностью, поскольку некоторые из ее строк находятся в отношении импликации. Будем говорить, что троичный вектор и имплицирует вектор v (u => v), если последний получается из первого путем замены значений некоторых компонент с 0 или 1 на «—» и, возможно, инверсирова- ния полученного результата. Так, например, вектор Ю 10 1 — имплицирует как вектор 10 0 , так и вектор _1 0 1 . Очевидно, что требование, представленное при этом вектором v, будет автоматически удовлетворяться при удовлетворении требования, заданного вектором и. Следовательно, оно излишне. Удаляя имплицируемые строки, получим значительно более компактную матрицу, представляющую совокуп-
г1\ УСТОЙЧИВОСТЬ ПОВЕДЕНИЯ АВТОМАТОВ 393 ность требований, извлекаемых из рассмотрения первого столбца матрицы переходов ¥: 12 3 4 5 6 7 1 О 1 О 1 - — 1 — 1 1 0 — — - 1 — 0 — — 1 - - О О — 1 - О О - - 1 О О Аналогичный анализ остальных столбцов матрицы W и формулировка соответствующих требований с последующим устранением избыточности приводят к минимальной матрице условий Я, строки которой для удобства пронумерованы: 12 3 4 5 6 7 R = "1 0 1 0 1 — 1 1 1 1 1 0 1 —- 1 — 1 — — 1 — 1 — 1 — 1 — 1 1 1 1 — — — 0 0 0 0 — — — — 0 — — 0 — — 0 — — 0 0 — 1 — — 0 — — — 1 1 1 1 — 0 0 — 1 — — 0 0 0 0 — 0 — 1 1 1 0 0 —" — 0 — 0 — — — 0 — — 0 0 0 . 1 2 3 4 б в 7 8 9 10 11 12 13 14 Нахождение минимальной кодирующей матрицы. Будем говорить, что троичная матрица U имплицирует матрицу V, если для каждой строки матрицы V в матрице U найдется имплицирующая ее строка. В этой терминологии решаемая нами задача нахождения кодирующей матрицы Q получает простую формулировку: оказывается, что матрица Q должна имплицировать матрицу условий R, соответствующую заданной матрице переходов Ч*". Потребуем, чтобы при этом матрица Q была минимальна по числу строк. Поиск минимальной кодирующей матрицы может вестись на основе различных методов. Ограничимся знакомством с некоторыми из них.
394 ГЛ. 1. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Получение точного решения задачи обеспечивается уже изложенным в настоящей книге способом построения множества всех максимальных совместимых совокупностей и нахождения кратчайшего покрытия ими исходного множества, за которое в данном случае принимается множество строк матрицы R. При этом совокупность строк считается совместимой, если существует вектор, имплицирующий каждую строку этой совокупности. Например, совместимую совокупность образуют первые три строки матрицы Л, поскольку существует вектор 10 10 0 0 0, имплицирующий каждую из этих строк. В то же время это максимальная совместимая совокупность, так как добавление в нее любой из остальных строк матрицы R приводит к утрате свойства совместимости. Множество всех максимальных совместимых совокупностей представляется в рассматриваемом примере булевой матрицей 12 3 4 5 в 7 8 9 10 11 12 13 14 + 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 00000001001100 00000001000011 0 0000000100011 + а одно из кратчайших покрытий этой матрицы — ее отмеченными строками. Искомая кодирующая матрица Q находится путем совмещения строк матрицы R .внутри соответствующих совместимых совокупностей: (1, 2, 3), (1,
29. УСТОЙЧИВОСТЬ ПОВЕДЕНИЯ АВТОМАТОВ 395 2, 13,14), (4, 5, 7, 8, 9, 14) и (6, 10, 11, 12) - для каждой из них находится имплицирующий вектор. В результате получаем 1 2 3 4 5 6 7 10 10 0 0 0" 10 10 0 11 110 0 10 0 10 1110 1. <?= В качестве приближенного метода может быть рекомендовано последовательное конструирование строк кодирующей матрицы Q путем перебора подряд строк из R и присоединения их к очередной совместимой совокупности, если это оказывается возможным. Этот метод характеризуется простотой и высоким быстродействием, а качество выдаваемых им решений оказывается во многих случаях вполне удовлетворительным. В рассматриваемом примере, следуя этому методу, совмещаем сначала строки 1,2 и 3 и получаем для них имплицирующий вектор 10 10 0 0 0, потом перебираем остальные строки и в результате совмещения строк 4, 5, 7, 8, 9 и 14 находим вектор 110 0 10 0, затем находим аналогичным образом совместимое множество {6, 10, И, 12} и строим имплицирующий его вектор 10 1110 1, после чего остается лишь одна строка 13. Так для матрицы R находится имплицирующая ее матрица -1 0 1 0 0 0 01 110 0 10 0 10 1110 1 L— 1 — 1 — 0 0_ Чтобы получить кодирующую матрицу Q, достаточно заменить произвольным образом значения «—» на 0 или 1. Решение, как видно, в данном случае будет минимальным. Для ускорения процесса решения можно рекомендовать еще один способ, при котором матрица условий строится не на основе рассмотрения пар переходов, а рассмотрения пар так называемых ЛГ-множеств, получаемых путем разбиения для каждого входного состояния множества внутренних состояний на классы, характеристикой которых служит состояние, в которое совершается переход из рассматриваемого состояния.
396 ГЛ, 7S РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Например, для входного состояния а множество внутренних состояний будет разбито в рассматриваемом примере на подмножества {1, 3}, {2, 4, 5} и {6, 7}. Формулируемые условия заключаются в различении этих подмножеств, что приводит к введению в матрицу условий следующих трех строк: 10 10 0 , 1 _ 1 0 0, - 1 - 1 1 0 0. Так по этому методу получаем сначала матрицу Л*, которая, имплицируя матрицу Д, оказывается заметно короче ее, Д* = 1 2 1 0 1 — - 1 1 0 1 — - 1 1 — 1 1 3 1 1 — — 0 0 0 — 4 0 — 1 1 0 0 — 0 5 0 — 1 1 1 — 1 — в — 0 0 0 — 1 0 0 7 1 0 0 1 — — 0 0 - 2 3 4 5 в 7 8 Затем, попарно совместив строки 1 и 2, 3 и 7, 4 и 6, 5 и 8 матрицы Д*, получим имплицирующую ее матрицу 12 3 4 5 6 7 Г1 0 1 0 0 0 0 110 110 0 10 1110 1 Ll 1 0 0 1 0 0J которую можно принять в качестве кодирующей матрицы Q. Она оказывается минимальной. Конечно, в общем случае рассмотренные приближенные методы не гарантируют минимальности кодирующей матрицы Q. В данном случае нам просто повезло. Критерий устойчивости для секвенциальных автоматов. Для секвенциальных автоматов критерий устойчивости поведения формулируется иначе. Если автомат задан в виде системы секвенций, то условия, гарантирующие реализацию заданных
29, УСТОЙЧИВОСТЬ ПОВЕДЕНИЯ АВТОМАТОВ 397 переходов между внутренними состояниями, заменяются условиями, обеспечивающими выполнение отдельных секвенций. Пусть некоторый секвенциальный автомат, заданный в форме функционального автомата £Ф, реализован асинхронно. Покажем, что его поведение будет устойчиво, если функции возбуждения его биаков будут находиться в определенных отношениях друг с другом. Прежде всего сформулируем свойство устойчивости на содержательном уровне. Пусть в некоторой ситуации должны изменить свои значения две переменные zt и Zj. Допустим, что этот процесс заканчивается неодновременно и любая из переменных может оказаться первой. Потребуем, однако, чтобы смена ее значения не приводила к исчезновению причины изменения значения другой переменной. Лишь в этом случае будет реализована каждая из соответствующих этим переменным секвенций. Пусть, например, в исходной ситуации обе переменные zt и Zj имеют значение 0~и первой из них^примет'значение 1 переменная Zj. Обозначим через М\ характеристическое множество функции ty\ и разобьем его на четыре подмножества М\ (0, 0), М\ (0, 1), М\ (1,0) и М\ (1,1), показав в скобках значения, принимаемые на этих подмножествах соответственно переменными Zi и Zj (например, М\ (1, 0) образуется теми элементами множества М\, в которых zt = 1 и Zj = 0). Аналогично введем в рассмотрение множества М°и М) и М] и каждое из них также разобъем на четыре подмножества. Интересующая нас исходная ситуация представляется некоторым элементом из пересечения множеств М\ (0, 0) и М) (0,0), поскольку обе переменные zt и Zj должны сменить свои значения с 0 на 1. Если первой это сделает переменная Zj, то изменение ситуации выразится заменой исходного элемента на соседний ему по переменной Zj. Чтобы и в этой новой ситуации переменная z% была вынуждена изменить свое значение на 1, необходимо, чтобы новый элемент также принадлежал множеству М\. Другими словами, должно выполняться условие: множество М\ (0,1) должно содержать все элементы, соседние с элементами множества Щ (О* 0) П Щ 0» 0) по переменной Zj.
398 ГЛ, 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Аналогичное условие должно выполняться в том случае, когда первой значение 1 примет переменная zt. Придадим этим условиям алгебраическую форму: (*i : Mj)A(*J : ZiZj)^№i = Mj). (*i : Mj)A(*} : Mj)=»(*} •• ад). Так же анализируется поведение системы в других исходных ситуациях, в которых хотя бы одна из переменных zt и Zj обладает значением 1. В результате получаются следующие отношения: (*? : Mj)A(1>i : *i**)=»ft? : 2i«j), (*? : Mj)A(*J : М*)-КФ/ • W, (Ф? : Mj)A(*? : *A')=H^ • Mj), M* = 2i*j)AM>? = ад)=Н^ : «Л), (яр? : *iZj)AM>i '• ад)=^(^ : яг*^)э (*? = *i*j)A(*i° : *Л)-КФ? : *Л)- Выполнение этих отношений гарантирует безопасность состязаний между внутренними переменными zt и Zj. Анализ ситуаций, в которых более чем две внутренние переменные меняют свои значения, не приводит к чему- либо новому. Если будет обеспечена безопасность состязаний между любыми двумя внутренними переменными, то тем самым будет гарантирована устойчивость поведения секвенциального автомата в целом. 30. Реализация состояний и переходов на ПЛМ Реализация внутренних состояний. Элементарные механизмы, рассмотренные выше,— биаки — могут быть физически реализованы как электронные элементы, и в этом случае они называются триггерами. Как правило, триггер имеет, кроме основного, еще дополнительный выходной полюс, с которого снимается инверсное значение булевой переменной zt, представляющей состояние триггера. Графически будем обозначать триггер подобно биаку, так, как это показано на рис. 93.
30. РЕАЛИЗАЦИЯ СОСТОЯНИЙ И ПЕРЕХОДОВ НА ПЛМ 309 Обычно триггеры используются для представления внутренних булевых переменных, если значения этих переменных требуется фиксировать на какие-то промежутки времени. Внутреннее состояние автомата представляется в этом случае соответствующей комбинацией состояний триггеров, вводимых в структуру автомата. Триггеры могут исполняться непосредственно в программируемых логических матрицах, в виде транзисторных схем с цепями обратной связи. Соответствующий пример приведен на рис. 94, а на рис. 95 дано упрощенное изображение этой же схемы. В этом случае, кроме трех Рис. 93. Триггер. 1. . 4 1 —1—4- 4 1 *г/°!| t ii з»в1. м " Т Т ПтТ ГГт ш *-мт ... 1 ч—1—4 гтт] ill III IT III III A 1 1 ъЛ*А ,' 4-Ф4-ЧЗ—' ■<W>H> о У, 1 А 1 п (1 тп—"* Z 1 2-1 Н4 $г2 Рис. 94. ПЛМ с памятью на триггерах. / 3 Рис. 95. Упрощенное изображение ПЛМ с памятью. параметров р, q и г, ПЛМ характеризуется также четвертым параметром s, указывающим на число триггеров в ПЛМ. ПЛМ такого рода будем называть ПЛМ с памятью. ПЛМ с памятью являются удобным средством технической реализации автоматов различного рода. При их проектировании могут эффективно использоваться рассмотренные выше модели и методы. Например, если реализации на ПЛМ подлежит некоторый автомат с абстрактным состоянием, то при синтезе удобно использовать модель секвенциального инерционного автомата. В этом случав
400 ГЛ. 7* РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ синтез можно свести к противогоночному кодированию внутренних состояний заданного автомата и последующему определению функций возбуждения триггеров, при котором обеспечивается устойчивость всех запланированных переходов. Рассмотрим конкретный пример, концентрируя внимание на реализации переходов между внутренними состояниями автомата. Пусть abed e т = Ранее для этой матрицы нами уже была найдена кодирующая матрица Q, обеспечивающая безопасность состязаний между внутренними переменными, происходящих при любых переходах: 3 4 6 6 7 1 2 1 2 2 7 7 5 6 — 5 5 6 5 1 2 4 4 1 2 — 5 — 3 — 5 3 3 2 2 — 6 ■ — С С 1 2 3 4 5 в 7 Q = 1 2 1 0 1 0 0 0 01 1 1 1 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0. ?2 ~з 24 Воспользуемся этим результатом. Допустим также, что входные состояния реализуются следующими наборами значений входных булевых переменных: bed "0010 0 10 1 0 0 1 и, и с и с [0 0 1 0 П * 0 10 10**. 1 0 0 1 1J х, Построим инерционный секвенциальный автомат, реализующий заданную матрицу переходов. Поскольку автомат инерционен, то достаточно будет рассмотреть действительные переходы i ->• /, в которых исходное состояние i не совпадает с конечным состоянием /, и для каждого из них составить соответствующую простую секвенцию. Обе части этой секвенции удобно получить непосредственно в форме троичных векторов.
30. РЕАЛИЗАЦИЯ СОСТОЯНИЙ И ПЕРЕХОДОВ НА ПЛМ 401 Левый вектор (причина) образуется конкатенацией троичного вектора, представляющего минимальный поглощающий интервал для элементов z (i) и z (/) пространства значений вектора z, с булевым вектором х (к) — кодом входного состояния к, при котором определен данный переход. Очевидно, что в каком бы порядке ни получали свои новые значения внутренние переменные при рассматриваемом переходе и в какое бы промежуточное состояние ни попал автомат в результате этого, он не сможет выйти за пределы указанного интервала, и, следовательно, условия реализации секвенции будут неизменно выполняться, пока автомат не придет в запланированное для данного перехода внутреннее состояние /. Компоненты правого вектора (следствия) ставятся в соответствие внутренним переменным (и, вообще говоря, выходным переменным, однако последние не играют какой-либо роли в рассматриваемом механизме смены внутренних состояний и поэтому опускаются в данном примере). Значения 0 или 1 в этом векторе имеют лишь те компоненты, соответствующие которым внутренние переменные получают это значение в результате перехода i ->• /, имея в исходном состоянии i противоположное значение. Формально этот вектор можно представить как вектор-интервал, являющийся минимальным поглощающим интервалом для элементов z (/) и z (i) — «антипода» элемента z (i). Таким образом, искомая простая секвенция в векторном представлении получается по формуле (z(£)*z(/), x(k))\-i(i)*z(j), где * — символ операции получения минимального поглощающего интервала. Рассмотрим в качестве примера переход из состояния 3 в состояние 1 при входном состоянии а. Выбирая из кодирующих матриц коды этих состояний и выявляя те внутренние переменные, которые должны изменить свое значение в результате перехода, составим первую секвенцию 1 — 1 — 001.J 1 — 1, имея в виду, что первые четыре компоненты левого вектора принадлежат вектору z, а остальные — вектору х.
402 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Алгебраически эта же секвенция представляется формулой Аналогично находятся секвенции для всех остальных действительных переходов, представленных в первом столбце матрицы Y, во втором и т. д. Представляя эти секвенции соответствующими вектор-столбцами, выразим результат матрицей [Z, X], содержащей вектор-причины, и матрицей 2+, составленной из вектор-следствий 3 4 6 6 7 9 10 11 12 13 14 15 16 17 [Z,X] = z+ = 1000-000 0 00 — 110 1 — 1 1—1001—0 1 10111101—1 10 1 0 1-100 100 00000000111000111 00001111000111000 11110 0 0 0 0 0 0 111111 г о о 1 —о 1 1 о 1 1 0 — 1 1 — 1 0 — — 00 1 1 -0 0 0 Li 1 о 1 1 1 1\ 1г и Xi X* Xt Zi+ «4+ Попытаемся упростить полученную систему. Анализируя секвенции попарно, мы находим, что секвенция s2 имплицирует секвенцию s3, в результате чего последняя может быть выброшена из системы. Подобным образом учитываются также импликации «84^ s13 ^ su и su =*• =* si,. Кроме того, секвенции s5 и si2 склеиваются и заменяются полученным продуктом. В результате проведенного упрощения получаем 'l 00—00 0 О]2» — 1 0 1 — 1 — 1 1 — г» 1 101110 *• [Z, Х]=| 0 1 0 1 -0 1 0*, 0 00000111011*1 0 00111000100** 1 11— 00000111*»
30. РЕАЛИЗАЦИЯ СОСТОЯНИЙ И ПЕРЕХОДОВ НА ПЛМ 403 По полученным матрицам можно легко построить реализующую заданный автомат ПЛМ с памятью. Первая матрица определяет структуру первого яруса ПЛМ, а вторая, задающая функции возбуждения триггеров, оп- ределяет]*соответственно структуру второго яруса. При *Г,он т г п <|>-4—ш^ Ж' Рис. 96. ПЛМ, реализующая заданную матрицу переходов. этом единицы матрицы £+ учитываются при построении цепей возбуждения единичных входов триггеров, а нули — при построении цепей возбуждения нулевых входов. Иначе говоря, троичная матрица £+ заменяется булевой матрицей В = Синтезированная таким образом ПЛМ показана на рис. 96. г° 0 i 0 0 0 1 L0 0 0 G 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 O-i 0 0 1 0 1 0 oJ Vi1 Vi° Y21 V2° v.1 v* Y<1 Y4°
404 ГЛ, 7, РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Реализация микропрограммных автоматов. Программируемые логические матрицы оказываются удобным средством и при реализации микропрограммных автоматов, как называются автоматы, поведение которых определяется микропрограммами. Понятие микропрограммы появилось в связи с развитием формальных методов логического проектирования блоков управления в вычислительных устройствах, реализующих заданные алгоритмы. Вычисления осуществляются на некотором наборе схем, выполняющих операции, рассматриваемые как базисные для алгоритма, определяющего лишь порядок их выполнения. Микропрограмма— это особая форма алгоритма, согласно которой вычисления сводятся к выполнению последовательности микроопераций, каждая из которых состоит из некоторой совокупности базисных операций, выполняемых одновременно. Выбор очередной микрооперации зависит от выполнения ряда условий, проверяемых по ходу вычислений. Микропрограмма может задаваться символически, в виде некоторой системы формул, либо графически, посредством так называемой граф-схемы алгоритма. В том и другом случаях микропрограмма описывает связь между булевыми переменными хь х21 . . ., хп1 значениями которых отражаются результаты проверки соответствующих условий в процессе выполнения программы, и булевыми переменными уь у21 . . ., ут, поставленными в соответствие с базисными операциями: считается, что операция совершается, когда соответствующая переменная принимает значение 1. Назовем переменные xt входными, а переменные у7- — выходными. Группируя их, образуем входной булев вектор х и выходной булев вектор у. Пример графического изображения микропрограммы показан на рис. 97. Микрооперации представлены там прямоугольниками, внутри которых перечислены выходные переменные, принимающие значение 1, а логические условия представлены ромбиками, в которых проставлены символы соответствующих входных переменных. Процесс реализации микропрограммы может мыслиться как движение некоторой воображаемой фазовой точки по граф- схеме, при котором точка может переходить от одного прямоугольника или ромбика к другому по соединяющим их дугам, в направлении, показанном стрелкой. Выбор
30. РЕАЛИЗАЦИЯ СОСТОЯНИЙ И ПЕРЕХОДОВ НА ПЛМ 405 направления в точках ветвления (ромбиках) определяется текущим значением соответствующей входной переменной xt: если xt = 1, то фазовая точка выходит из ромбика по дуге, отмеченной цифрой 1, если же xt = 0, то движение происходит по дуге, отмеченной цифрой 0. Движение /У9/ Рис. 97. Граф-схема алгоритма. начинается из начальной точки (символ Н) и завершается при достижении конечной (символ К). Последовательность пройденных при этом прямоугольников и соответствующих им значений выходного вектора у интерпретируется как конкретная реализация микропрограммы. Например, если окажется, что значения всех входных переменных в моменты прохождения фазовой точки через ромбики будут равны нулю, то конкретная реализация данной микропрограммы будет выражена следующей последовательностью микроопераций: (Узу Vi), (Ун Уа), {У* Уз, У?), (Уъ Ув, Ув).
406 ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ Эту же реализацию можно показать и как соответствующую последовательность значений выходного вектора у: 0 0 10 0 0 10 0, 10 0 10 0 0 0 0, 0 110 0 0 10 0, 1 0 0 0 0 1 0 1 0. Следует однако заметить, что значения входных переменных в общем случае нельзя считать заданными априори. Они меняются в процессе выполнения микропрограммы, в частности в результате выполнения микроопераций. Формально возможны и такие ситуации, когда процесс реализации не завершается — фазовая точка так и не сможет дойти до конечной точки /С, сколько бы времени ни продолжалось выполнение микропрограммы. Микропрограмму можно реализовать автоматом с абстрактным состоянием, отождествив его входной и выходной векторы с аналогичными векторами микропрограммы. Именно такой автомат и называется микропрограммным. Чтобы построить микропрограммный автомат по заданной микропрограмме, необходимо, прежде всего, ввести в рассмотрение внутренние состояния. Это делается довольно просто путем выявления в граф-схеме дуг, выходящих из прямоугольников. Внутренние состояния микропрограммного автомата ставятся в соответствие этим дугам. Если какие-либо из дуг сходятся в одной точке, то соответствующие состояния объединяются. Вводятся также состояния, соответствующие начальной и конечной точкам граф-схемы. Так, для рассматриваемого примера вводится семь состояний, соответствующих жирным точкам на схеме (рис. 97), номера которых примем за символы состояний. Далее, для каждого из введенных состояний определяется реакция автомата на входное воздействие, выражающаяся в принятии очередного значения выходным вектором у и в переходе в следующее состояние. Например, в исходном состоянии 1 выходной вектор у принимает значение 001000100и автомат переходит в состояние 2, вне зависимости от того, какими значениями обладают входные переменные. В состоянии 2 поведение автомата дифференцировано: если хх = 0, то у принимает значение
3 . РЕАЛИЗАЦИЯ СОСТОЯНИЙ II ПЕРЕХОДОВ НА ПЛМ 407 100100000и автомат переходит в состояние 3; если хг = 1 и х2 = 1, то у принимает значение 000000100 и автомат переходит в состояние 7, и т. д. Введем одно важное допущение: положим, что значения входных переменных могут изменяться лишь при выполнении микроопераций, т. е. когда реализуются некоторые базисные операции. Во время проверки логических условий они фиксированы. Это позволяет заменить проверку значений входных переменных, образующих некоторую последовательность, проверкой значений соответствующих элементарных конъюнкций. После этого легко перейти к уже знакомой нам табличной форме представления автомата с абстрактным состоянием. Такая форма, полученная для рассматриваемой микропрограммы, дана на табл. 9. Таблица 9 X 1 1 1 0 1 0 0 — — — — — — — — — — 1 0 - 1 о — 1 — 0 — — — — — 1 — 0 -1—1 -1—0 - 0 1 — — — 0 XV • 1 2 2 2 2 3 1 3 4 4 * 5 6 ' 6 1 6 Ш+" 1 2 7 3 3 3 5 4 4 i 6 6 2 7 з ** У 001000100 000000100 000000000 001000010 10 0 10 0 0 0 0 0 0 10 10 0 0 0 000000000 010000101 0 0 0 0 0 0 110 0 110 0 0 10 0 0 0 0 0 0 10 0 1 0 0 0 110 0 0 0 000000000 10 0 0 0 10 10 | Обратим внимание на строки со значением входного вектора х — в соответствующих состояниях автомат ведет себя однозначным образом, не обращая внимания на значения входных переменных, не оказывающих на него какого-либо влияния. Значением 0 0... 0 выходного вектора у представляется «пустая» микрооперация, при выполнении которой не реализуется ни одна из базисных операций. Заметим также, что построенный микропрограммный автомат оказывается автоматом «разового» действия, по-
408 ГЛ, 7, РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ скольку, попав в заключительное состояние 7, он уже не сможет из него выйти. Чтобы устранить этот недостаток, достаточно добавить в таблицу еще одну строку, в соответствии с которой автомат будет переводиться в исходное состояние 1: х = — — — — — — , ш = 7, м>+ = 1, у = 00000000 0. Чтобы перейти теперь к секвенциальному автомату, осталось закодировать значения внутренней переменной w. Задача противогоночного кодирования при этом обычно не ставится, поскольку автомат реализуется как синхронный. Каждая из вводимых внутренних булевых переменных z% реализуется при этом на паре триггеров, один из которых удерживает текущее значение переменной, а на другой заносится вычисляемое в данном такте последующее значение zt. Работа микропрограммного автомата синхронизируется с помощью дополнительной булевой переменной, сигнализирующей об окончании выполнения очередной микрооперации. Действительно, функционирование микропрограммного автомата заключается в управлении устройствами выполнения отдельных базисных операций посредством присвоения определенных значений выходным логическим переменным у$. При реализации очередной микрооперации выполнение всех входящих в ее состав базисных операций инициируется одновременно, но завершаются они с некоторым разбросом во времени. После окончания выполнения последней из них микропрограммный автомат получает соответствующий сигнал, например, в форме единичного значения дополнительной булевой переменной. Именно этот сигнал и является синхронизирующим для автомата. Кодирование состояний микропрограммного автомата. При кодировании внутренних состояний можно стремиться упростить синтезируемую в конечном счете структуру схемы, реализующей заданный микропрограммой алгоритм управления. В частности, возможности такого упрощения возрастают, если получаемая после кодирования матрица Z+ возбуждения триггеров оказывается достаточно «редкой», т. е. если большинство ее элементов приобретает значение «—». Такая
30. РЕАЛИЗАЦИЯ СОСТОЯНИЙ И ПЕРЕХОДОВ НА ПЛМ 409 матрица, как мы уже видели, легче поддается декомпозиции, при которой она заменяется на пару матриц с минимизированными размерами. Эта процедура может привести к заметному сокращению общей площади кристалла, на которой располагаются ПЛМ. Формальная интерпретация решаемой при этом задачи такова: внутренние состояния, представляемые значениями переменной ш, должны быть закодированы значениями булева вектора z таким образом, чтобы была минимальна сумма расстояний по всем переходам. Расстояние измеряется при этом числом компонент вектора z, изменяющих свое значение при переходе. Точное решение этой комбинаторной задачи весьма трудоемко, однако можно предложить достаточно эффективные приближенные алгоритмы, дающие практически приемлемые решения. Например, в рассматриваемом случае задача успешно решается путем последовательного размещения состояний в булевом трехмерном пространстве. При этом переходы рассматриваются в порядке убывания их кратности (например, сначала выбирается переход 2 -> 3, который имеет кратность 3, встречаясь в таблице три раза), и соответствующие им состояния размещаются по возможности в непосредственном соседстве. Таким образом получается кодирующая матрица 12 3 4 5 6 7 [10 0 0 1111* 0 0 0 10 11*. 1 1 0 0 0 0 1J и Она позволяет перейти к простой системе секвенций, реализующей заданный микропрограммный автомат, а от последней — к структурным матрицам ПЛМ: 0 0 0 0 0 0 0 1 0 0 1110 0 0 0 0 0 0 Тт = 1 1 1 1 1 0 10 10 — 1 1 0 z2 г% Xi х2 х» X* *5 Хъ
4tO ГЛ. 7. РЕАЛИЗАЦИЯ АВТОМАТОВ С ПАМЯТЬЮ "0 1 0 0 0 0 0 0 1 0 0 0 , 1 '0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0" 0 0 1 0 0 0 0 0 0 0 0 0 0 0 Yi1 Yi° V*1 Y2° V»1 Y»° Vi Vi Vi У* У» y« V? v$ }h
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Автомат 358 — абстрактный 360 — асинхронный 388 — булев 362 — дискретный 359 — инициальный 361 — комбинационный 282 —- микропрограммный 404 — Мили 361 — Мура 361 — с абстрактным состоянием 362 — секвенциальный 368 — — инерционный 375 — — минимальный 384 ортогональный 383 — — простой 374 точечный 373 — — функциональный 374 — — частичный 376 — —- элементарный 372 — синхронный 388 Антиядро 194 Аргумент булевой функции 220-221 Базис дизъюнктивный 121 Биак 376 Вектор булев 21 — — информационный 281 — превышения 227 — различий 138 Вектор-покрытие 290 Вентиль 11 Гиперкуб 184 Граф несовместимости 80 Граф поведения автомата 363 Граф-схема алгоритма 405 Дерево поиска 53 Диагностика 259 ДНФ (дизъюнктивная нормальная форма) 26 — безызбыточная 191 — сокращенная 160 Задача анализа 98 — лабиринтная 56 — моделирования 97 — о генерировании 147 — о раскраске графа 74 — синтеза 104 Законы де Моргана 35 Зона симметрии 187 Инвертор 16, 24 Интервал 23, 157, 169, 173 it-множество 395 Конденсация 80 Коэффициент ветвления вариантов 58 Литерал 226 Матрица булева 12 — кодирующая для булевой матрицы 330 — выходов 363 — информационная 32 — переходов 363
412 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Матрица превышений 227 — программируемая логическая (ПЛМ) 7, 18, 20, 399 — простых совокупностей 202 — различий 138 — структурная 13 — требований 115 — троичная 17 — — вырожденная 59 — функциональная 13 Матрица-единица 40 Метод аппроксимации отображений 292 — Блска-Порецкого 159, 165 — ветвей и границ 88 — выделения интервальных миноров 238 — декомпозиции ПЛМ итерационный 353 — Квайна—МакКласки 159 — комбинаторного поиска 56 — конденсации 79 — конкурирующих интервалов 211 — конструирования пересекающихся интервалов 255 — матричной факторизации 303 — минимального соседства 180 — минимизации булевых функций визуальный 187—189 — — ДНФ приближенный 167 — невода 91 — обхода дерева поиска 86 — ортогонализации интервалов 336 — параллельной декомпозиции 296 — последовательной раскраски графа 75 — поярусного построения 85 — соседнего кодирования 388 — стандартной декомпозиции ПЛМ 294, 311—313 — троичного моделирования 111 Микрооперация 404 Микропрограмма 404 Минор единичный 123 — парный 147 — правильный 383 Множество определяемое 129 Множество превышения 227 — причин 137 — решений выпуклое 64 — следствий (признаков) 137 — характеристическое 22 Оператор кодирующий 109 — матричный 31 — перестановочный 108 Операции булевы элементарные 24 Операция выборочной инверсии 282 — дельта 36 — доопределения троичной матрицы 384 — набла 36 — пересечения троичных векторов 103 — поглощения секвенций 381 — — троичного вектора 161 — произведения булевых матриц 33 — расщепления ситуации 58 — редуцирования 57 — склеивания секвенций 380 — упрощения троичной матрицы 191 Отношение импликации между троичными векторами 79. 392 — — матрицами 80, 393 — мажорирования 99 — — между элементами булевой матрицы 126 — — по покрытиям между булевыми матрицами 325 — между секвенциальными автоматами 372 — между секвенциями 371 — поглощения между булевыми векторами 69 между интервалами на множестве 198 — между троичными векторами 16 — превышения между булевыми векторами 227 — реализации между булевыми функциями 206 — — доопределением между автоматами 366
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 413 Отношение реализации между системами булевых функций 220 — — расширение между автоматами 366 — — формальной между автоматами 366 — смежности между троичными векторами 160 — совместимости между элементами троичной матрицы 128 — — между элементом и интервалом 211 — соседства между троичными векторами 160 — эквивалентности между булевыми матрицами 23 — — между матричными операторами 108 — — между секвенциальными автоматами 372 между секвенциями 371 — — между троичными матрицами 23 Оценка стоимости 86 Переменная абстрактного автомата 360 — булева 21 — возбуждения биака 376 —- микропрограммы 404 — секвенциального автомата 370 Пересечение булевых векторов 236 Подмножество интервалыю- поглощаемое 207, 233 Покрытие булевой матрицы простое столбцовое 64 — интервальное кратчайшее 157 — кратчайшее 67 — минорное кратчайшее 123 — — правильное 383 — — кратчайшее 384 — множества 64 — — простое 65 — троичной матрицы 290 — — — безызбыточное 290 Проверка тождества 59 Проекция интер вала 173 Пространство булево 21 Реализация асинхронная 388 — микропрограммы 404 — синхронная 387 — формальная 366 Секвенция 368 — простая 371 — элементарная 371 Сеть бёсконтурная 282 — логическая 279 Сечение логической сети входное 280—281 выходное 280—281 Синтез «от входа» 248 — «от выхода» 251 Система булевых функций 28 Ситуация 57 Событие базисное 360, 368 — простое 369 — сложное 369 — элементарное 369 Совокупность интервалов допустимая 178 — — достаточная 178 — простая 202 Состязания между выходными переменными 386 Схема безызбыточная 40 — каскадная 18 — комбинационная 358 — — матричная вентильная 13 — — транзисторная 15 — — элементарная 39 — последовательностпая 359 Таблица Квайна 163 — соседей 181 Тест 259 — безусловный 259—260 — дизъюнктивный 142 — минимальный булевой матрицы 137 — — диагностический 137 — — опознающий 260 — универсальный проверяющий 274 — условный 259 Транзистор 15 Триггер 398 Устойчивость поведения 385
414 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Факторизация 303 Формальная импликация 159, 370 Функция булева 21 — — векторная 28 — — монотонная 156 — — полностью определенная 27 — — слабо определенная 206 — — частичная (неполностью определенная) 27, 206 — — элементарная 24 — — возбуждения биака 377 — выходов 360 — переходов 360 — стоимости 85 Элемент задержки 379—^80 — интервала внутренний 171 — —- граничный 171 — — максимальный 23 — — минимальный 23 — несущественный булевой матрицы 128 — определяющий троичной матрицы 129 — — характеристического множества 173 Ядро решения 194 р-схема 15 т-схема 16
Аркадий Дмитриевич Зтревский Логический синтез каскадных схем Редактор В. А. Горбунов Техн. редактор Н. В. Но иелева Корректоры О. А. Сигал, А. Л. И патова ИЬ М 11437 Сдано в набор 09.09.80. Подписано в печать 24.08.81. T-2600S. Формат 84хЮ81/«2. Бумага тип. № 1. Обыкновенная гарнитура Высокая печать. Условн. печ. л. 21,84. Уч.-изд. л. 21,46. Тираж 3600 экз. Заказ JSft 377. Цена 3 р. 50 к. Издательство «Наука» Главная редакция физико-математической литературы 117071, Москва, В-71, Ленинский проспект, 15 2-я тип. изд-ва «Наука». J21099 Москва, Шуоинский пер., Ю