- •Проектирование автоматов
- •Проектирование автоматов
- •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.2.3. Самодвойственные функции
О пределение. Для функции f(x1,x2,…,xn) функция называется двойственной к ней.
О бозначим двойственную функцию как f*.
Пример. Для функции (ху) двойственной будет функция (ху) = x v y.
Можно показать, что двойственной функцией к f* будет функция f,
значит для ху двойственной будет ху.
Двойственной к х будет функция, равная х, двойственной к 0 будет 1.
Определение. Функция называется самодвойственной, если она равна своей двойственной.
Переменная x служит примером самодвойственной функции, так же как и функция инверсии переменной.
Свойства самодвойственных функций.
Таблица 3.1
х
у
f1
f2
f3
f4
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
0
1
0
1
1
1
1
0
0
<1, 2, …, n> равно 0, то значение функции на инверсном наборе <1,2, …,n> должно быть равно 1.Из первого свойства вытекает, что число различных функций от n переменных равно 2m, где m=2n-1.
Построим все функции от двух переменных. Их будет 4 в соответствии с возможными значениями на верхней половине таблицы: 00,01,10,11. Эти функции приведены в табл. 3.1. Как видно из таблицы, первые две функции совпадают с переменными, две последние – с инверсиями переменных. Отсюда следует свойство: самодвойственных функций, существенно зависящих ровно от двух переменных, нет.
СДНФ самодвойственной функции будет иметь ровно 2n-1 конъюнкций
Суперпозиция самодвойственных функций будет функциейсамодвойственной. Множество самодвойственных функций образуют класс, который принято обозначать как D. Базисом класса является функция трёх переменных {xy xz yz}.
3.2.4. Линейные функции
Рассмотрим класс функций, порождённых множеством F={xy, xy, 1}.
Из того, что x1=х, следует, что в данном базисе реализуется инверсия, которая вместе с конъюнкцией даёт возможность построить любую функцию. Значит, данный базис порождает класс всех функций – класс С.
Сравним таблицы функции сложения по модулю два и дизъюнкции (табл.3.2)
Таблица 3.2
а |
в |
ав |
ав |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
Из таблицы видно, что аb = (а b) аb.
Если а и в такие, что имеет место равенство ав = 0, то такие переменные называются ортогональными. Для ортогональных переменных ав = (ав).
Если рассматривать СДНФ любой функции, то можно показать, что в ней любая пара конъюнкций ортогональна. Это приводит к следующему алгоритму построения записи функции в рассматриваемом базисе:
записать функцию в СДНФ;
заменить в СДНФ символы дизъюнкции на символы сложения по модулю два;
заменить все инверсии по формуле х = (х1);
раскрыть скобки, пользуясь свойством дистрибуции х(yz) = xyxz;
сделать сокращения, используя свойство хх = 0, х0= х.
В результате получается запись функции в форме, которую представим в общем виде как
f=C0 C1x1 C2x2 … Cnxn C(n+1)x1x2…Cmx1x2…xn, где С0, С1, С2,…Cm принимают значения 0 или 1.
Это представление называется полиномом Жегалкина, а алгебра с сигнатурой {xy, xy, 1} – алгеброй Жегалкина.
Пример. Построим полином Жегалкина для функции импликации. По её таблице запишем СДНФ этой функции:
ав =ав ав ав, после замены дизъюнкций на сложение по модулю два имеем: ав =ав ав ав = (а1)(в1)(а1)вав = =авав1аввав = ава1.
Определение. Функция называется линейной, если её полином Жегалкина не содержит конъюнкций.
Общий вид линейной функции f = C0 C1x1 C2x2 … Cnxn.
Таким образом, число различных линейных функций от не более чем n переменных определяется формулой N = 2n+1.
Суперпозиция линейных функций есть функция линейная, следовательно, множество линейных функций образует класс линейных функций, обозначаемый как L.
Базисом класса L служит множество {xy, 1}.