- •Проектирование автоматов
- •Проектирование автоматов
- •5.7. Упражнения 90
- •Введение
- •1. Абстрактные автоматы
- •1.1. Эквивалентность автоматов
- •1.2. Минимизация автоматов
- •1.2.1. Минимизация полностью определенного автомата
- •1.2.2. Минимизация частичного автомата
- •1.3. Композиция автоматов
- •1.3.1. Параллельное соединение
- •1.3.2. Последовательное соединение
- •1.3.3. Соединение с обратной связью
- •1.3.4. Соединение в сеть
- •1.4 Декомпозиция автомата
- •1.4.1. Задача декомпозиции
- •1.4.2. Разбиения со свойствами подстановки
- •1.4.3. Метод декомпозиции
- •1.5. Упражнения Эквивалентность автоматов
- •Минимизация полностью определённого автомата.
- •Декомпозиция автоматов
- •2. Структурные автоматы
- •2.1. Автоматная полнота и теорема в.М.Глушкова
- •2.2. Гонки в автомате
- •2.2.1. Кодирование состояний
- •2.2.2. Понятие о гонках. Противогоночное кодирование
- •2.3. Проектирование автомата
- •2.4. Упражнение Кодирование
- •Синтез автомата
- •3. Синтез схем
- •3.1. Определения
- •3.2. Функциональная полнота базиса
- •3.2.1. Классы функций
- •3.2.2. Монотонные функции
- •3.2.3. Самодвойственные функции
- •3.2.4. Линейные функции
- •3.2.5. Функции, сохраняющие константу
- •3.2.6. Функциональная полнота
- •3.3. Топологические ограничения в схемах
- •3.3.1. Плоские схемы
- •3.3.2. Ограничения на глубину связи в схеме
- •3.4. Методы синтеза схем
- •3.4.1. Метод факторизации
- •3.4.2. Метод декомпозиции
- •3.4.3. Синтез схем в классическом базисе.
- •3.4.4. Синтез схем в монофункциональном базисе.
- •3.5. Упражнения Функциональная полнота
- •Синтез схем
- •4. Эксперименты над автоматами
- •4.1. Построение диагностических деревьев
- •4.2. Диагностические и установочные эксперименты
- •4.2.1. Дерево преемников
- •4.2.2. Диагностический эксперимент
- •4.2.3. Установочный эксперимент
- •4.3. Упражнения Диагностические эксперименты
- •Установочные эксперименты
- •5. Формальные грамматики
- •5.1. Языки и порождающие их грамматики
- •5.2. Примеры фрагментов описаний в языках программирования.
- •5.3. Порождающая грамматика
- •5.4. Классы языков и грамматик
- •5.5. Язык, понимаемый устройством
- •5.6. Автоматные языки
- •5.7. Упражнения
- •Библиографический список
- •Проектирование автоматов
- •620002, Екатеринбург, Мира, 19
3.3.2. Ограничения на глубину связи в схеме
Формализуем понятие глубины связей в схемах следующим образом. Рассмотрим схемы, не имеющие обратных связей. Элементы таких схем можно однозначно разбить на группы, называемые рангами или ярусами, по следующему правилу. К нулевому ярусу (рангу) относим входные полюса схемы. Элементы, входы которых связаны только с входными полюсами, отнесем к первому ярусу. В общем, к элементу i-го яруса отнесем все элементы, входы которых связаны только с выходами элементов (i --1)-го и, может быть, элементов нижних ярусов. Если выход элемента i-го уровня связан с входом элемента j-го уровня, то длину этой связи оценим числом (i - j), названным глубиной связи. Если на схему задано ограничение на глубину связи, это означает, что рассматриваются только такие схемы, в которых глубина связи не превосходит заданной величины
Если рассматривать модель схемы, в которой функционирование происходит в дискретном времени по тактам и элементам приписаны единичные задержки, то ранг элемента определяет такт, в котором на его выходе реализуется выходной сигнал, а ограничение на глубину связей определяет максимальный разброс времени поступления дискретных сигналов на входы элементов схемы, равный (-1). Если = 1, то величина этого разброса равна нулю.
Определим, как изменятся требования к множеству функций, порождающих класс всех булевых функций, если рассматривать только такие их суперпозиции, которым соответствуют схемы с ограниченной глубиной связи, в частности схемы с глубиной, равной единице.
Вслед за Постом, определим булеву функцию как -функцию, если f(x,x,x,...x) = x, -функцию, если f(x,x,...,x)=1, - функцию, если f(x,x,...,x) = 0 и как - функцию, если f(x,x,...,x) = `x , где `x -инверсия х.
Очевидно, что если базис содержит хотя бы одну -функцию, он является функционально полным при условии, что глубина связи =1, так как из этой функции реализуется функция, равная переменной (повторитель или задержка), и, следовательно, любую связь можно свести введением этих функций к последовательности связей единичной глубины.
Теорема. Любой полный базис из более чем одной функции порождает С при = 1, за исключением случая, когда базис содержит ровно две функции : функцию нелинейную и несамодвойственную и функцию, не сохраняющую константу, причем последняя не равна константе и не есть -функция. Одноэлементный базис при условии = 1 неполон.
Следующие утверждения будут нам необходимы при доказательстве:
У1. Если функция самодвойственная, то она или - или -функция. Утверждение следует из того, что f(0,0,...,0) f(1,1,...,1).
У2. Линейная функция есть - или -функция тогда и только тогда, когда она самодвойственная, - или -функция тогда и только тогда, когда она несамодвойственная. Утверждение следует из определения линейной функции и того, что в первом случае сумма будет содержать нечетное число сомножителей, во втором случае – четное.
У3. Если - или -функция отлична от константы, то она немонотонна. Утверждение следует из того, что эта функция будет иметь одинаковые значения на нулевом и единичном наборах, которые сравнимы со всеми наборами и являются, соответственно, максимальным и минимальным.
У4. -функция является немонотонной и не сохраняет константы.
У5. Из линейной функции заменой некоторых переменных на константу 0 можно получить переменную (-функцию). Из нелинейной функции для получения -функции необходимо иметь обе константы.
Доказательство проведем в несколько этапов. Вначале покажем, что если базис содержит более двух элементов, то среди его функций обязательно есть -функция, то есть он полон при Затем более подробно разберем двухэлементные базисы, не содержащие функций. В конце доказательства рассмотрим одноэлементные базисы.
Пусть базис i | i=1,ки к > 2. Покажем, что он содержит функцию.
Разделим базисы на две группы в зависимости от того, какова в нем нелинейная функция (обозначим ее как 1):
а. 1 является самодвойственной;
б. 1 – функция несамодвойственная.
Случай а. По свойству 1 функция 1 или - или -функция. Если это- -функция, то она немонотонная, не сохраняет константы, и в базис достаточно добавить несамодвойственную функцию, то есть базис будет иметь только две функции.
Случай б. Если 1 -функция, то она по свойству У4 одна является полным базисом. Если 1 - или -функция, то по свойству У3 она немонотонна и не сохраняет одну константу. В этом случае в базис нужно добавить только функцию, не сохраняющую вторую константу.
Утверждение 1 доказано. Рассмотрим теперь базисы, содержащие ровно две функции и не содержащие -функций. Обозначим их как ={1, 2}.
Снова разделим рассмотрение на два случая: а) функция 1 –несамодвойственная и линейная, 2 - функция самодвойственная и нелинейная. Случай б) функция 1 – несамодвойственная и нелинейная, 2 - не сохраняет константу.
Случай а). По свойству У2 функция 2 является -функцией, значит на втором уровне можно получить инверсии переменных. Функция 1 является - или -функцией, значит на втором уровне можно получить одну из констант. На третьем уровне с помощью этих функций получаем переменные и обе константы (вторую – через инверсию первой). С помощью констант из линейной функции можно получить на четвертом и всех последующих уровнях -функцию (повторитель), чем и обеспечивается полнота базиса для этого случая.
Случай б.
функция 1 – несамодвойственная, нелинейная и не -функция (иначе она одна – базис). Значит это - или -функция. Если при этом 2 есть - или -функция , то на втором уровне можно получить только такие функции, которые имеют значения на нулевом наборе такие же, как и на единичном. Значит, на следующих уровнях из них не удастся получить - или -функции и полнота обеспечена не будет.
Если же функция 2 есть -функция, то на втором уровне могут быть получены инверсии переменных и константа, на третьем – переменные и обе константы, которые позволят по свойству У5 получить повторитель на всех последующих уровнях.
И, наконец, если функция 2 есть константа, то она есть на первом уровне вместе с переменными. С ее помощью из функции 1 можно получить на втором уровне инверсии переменных и обе константы, которые обеспечат полноту.
Для одноэлементного базиса, реализующего только -функцию, на первом ( и всех нечетных ) уровне можно реализовать только -функции, на втором (и всех четных) уровне реализуются только -функции. В этом базисе при никогда не реализуются и функции. Значит, полнота обеспечена быть не может.
При функциональная полнота обеспечивается для любого функционально полного в смысле Поста базиса.
Теперь понятно, почему нельзя реализовать любую функцию из элементов шефферовского типа в однородных двумерных решетках как на рис.3.4
Здесь любая схема будет иметь , и для получения схем с глубиной связи, равной двум, нужно решетку дополнить диагональными связями,
например, как это показано на рис. 3.5.