Простейшие методы синтеза схем из функциональных элементов — различия между версиями
м |
|||
Строка 1: | Строка 1: | ||
− | Приведем несколько простейших алгоритмов синтеза [[Реализация булевой функции схемой из функциональных элементов|схем]], в случае когда базис | + | {{Определение |
+ | |||
+ | |definition= Синтезом схемы из функциональных элементов называется процедура получения логической схемы, реализующей заданную логическую функцию. | ||
+ | }} | ||
+ | |||
+ | Приведем несколько простейших алгоритмов синтеза [[Реализация булевой функции схемой из функциональных элементов|схем]], реализующих произвольную функцию от <tex> n </tex> аргументов <tex> f(x_{1}, ..., x_{n}) </tex>, в случае когда базис <tex> B = \{\neg, \lor, \land\} </tex>. | ||
==Метод синтеза, основанный на [[СДНФ|совершенной ДНФ]]== | ==Метод синтеза, основанный на [[СДНФ|совершенной ДНФ]]== | ||
Строка 7: | Строка 12: | ||
|about = 1 | |about = 1 | ||
|statement = | |statement = | ||
− | Для любой | + | Для любой функции <tex> f(x_{1}, ..., x_{n}) </tex>, реализующей конъюнкцию <tex> n </tex> аргументов, <tex> size_{B}(f)\le 2n-1 </tex> |
|proof = [[Файл:Synschemes Lemma1.png|250px|thumb|right|Рис. 1]] | |proof = [[Файл:Synschemes Lemma1.png|250px|thumb|right|Рис. 1]] | ||
Построим данную схему следующим образом: возьмем <tex> n </tex> элементов отрицания, присоединенных к выходам, и цепочки из элементов конъюнкции, имеющих <tex> n </tex> "свободных" входов. | Построим данную схему следующим образом: возьмем <tex> n </tex> элементов отрицания, присоединенных к выходам, и цепочки из элементов конъюнкции, имеющих <tex> n </tex> "свободных" входов. | ||
Строка 15: | Строка 20: | ||
Очевидно, что сложность построенной схемы равна <tex> 2n-1 </tex>. | Очевидно, что сложность построенной схемы равна <tex> 2n-1 </tex>. | ||
− | Поэтому <tex> | + | Поэтому <tex> size_{B}(f)\le 2n-1 </tex>. |
Лемма доказана. | Лемма доказана. | ||
Строка 23: | Строка 28: | ||
|id = Th1 | |id = Th1 | ||
|about = 1 | |about = 1 | ||
− | |statement = | + | |statement = Для любой функции <tex> f(x_{1}, ..., x_{n}) </tex> имеет место неравенство <tex> size_{B}(f)\le n2^{n+1} </tex> |
|proof = [[Файл:Synschemes Theorem1.png|250px|thumb|right|Рис. 2]] | |proof = [[Файл:Synschemes Theorem1.png|250px|thumb|right|Рис. 2]] | ||
Пусть <tex> f(x_{1},...,x_{n}) </tex> произвольная [[Определение булевой функции|булева функция]]. Если <tex> f \ne 0 </tex>, то <tex> f </tex> может быть задана нормальной дизъюнктивной формой | Пусть <tex> f(x_{1},...,x_{n}) </tex> произвольная [[Определение булевой функции|булева функция]]. Если <tex> f \ne 0 </tex>, то <tex> f </tex> может быть задана нормальной дизъюнктивной формой | ||
Строка 35: | Строка 40: | ||
Схема <tex> S </tex> для <tex> f </tex> состоит из конъюнкций <tex> K_{j} </tex> (каждая из них в соответствии с [[#Lemma1|Леммой 1]] имеет сложность не более <tex> 2n-1 </tex>) и цепочки из <tex> s-1 </tex> элемента дизъюнкции с <tex> s </tex> свободными входами. Свободные входы этой цепочки присоединяются к выходам схем для конъюнкций <tex> K_{j} </tex>.(рис. 2) Имеем | Схема <tex> S </tex> для <tex> f </tex> состоит из конъюнкций <tex> K_{j} </tex> (каждая из них в соответствии с [[#Lemma1|Леммой 1]] имеет сложность не более <tex> 2n-1 </tex>) и цепочки из <tex> s-1 </tex> элемента дизъюнкции с <tex> s </tex> свободными входами. Свободные входы этой цепочки присоединяются к выходам схем для конъюнкций <tex> K_{j} </tex>.(рис. 2) Имеем | ||
− | ::<tex> | + | ::<tex> size_{B}(f)\le s(2n-1)+s-1 < s(2n-1)+s = 2ns \le n2^{n+1} </tex>. |
− | Если <tex> f = 0 </tex>, то схема строится в соответствии с представлением <tex> 0=x_{1}\wedge\overline{x}_{1} </tex>, то есть<tex> | + | Если <tex> f = 0 </tex>, то схема строится в соответствии с представлением <tex> 0=x_{1}\wedge\overline{x}_{1} </tex>, то есть<tex> size_{B}(0) \le 2</tex>. |
Таким образом, для любой функции <tex> f(x_{1},...,x_{n}) </tex> выполняется неравенство | Таким образом, для любой функции <tex> f(x_{1},...,x_{n}) </tex> выполняется неравенство | ||
− | ::<tex> | + | ::<tex> size_{B}(f(x_{1},...,x_{n}))\le n2^{n+1} </tex>. |
− | Поэтому <tex> | + | Поэтому <tex> size_{B}(f)\le n2^{n+1} </tex>. |
Теорема доказана. | Теорема доказана. | ||
Строка 54: | Строка 59: | ||
|id = Lemma2 | |id = Lemma2 | ||
|about = 2 | |about = 2 | ||
− | |statement = | + | |statement = Для функции <tex> K_{n} </tex>, реализующей конъюнкцию <tex> n </tex> элементов, имеет место соотношение <tex> size_{B}(K_{n}) \sim 2^n </tex> |
|proof = [[Файл:Synschemes Lemma2.png|250px|thumb|right|Рис. 3]] | |proof = [[Файл:Synschemes Lemma2.png|250px|thumb|right|Рис. 3]] | ||
Разделим цепочки конъюнкций на две части. Каждая конъюнкция <tex> x_{1}\wedge\overline{x}_{2}\wedge{x}_{3}\wedge ... \wedge{x}_{i} </tex> может быть представлена в виде конъюнкции двух конъюнкций длины <tex> k </tex> и <tex> n-k </tex>: | Разделим цепочки конъюнкций на две части. Каждая конъюнкция <tex> x_{1}\wedge\overline{x}_{2}\wedge{x}_{3}\wedge ... \wedge{x}_{i} </tex> может быть представлена в виде конъюнкции двух конъюнкций длины <tex> k </tex> и <tex> n-k </tex>: | ||
Строка 62: | Строка 67: | ||
Поэтому схема для <tex> K_{n} </tex> может быть образована из схем для <tex> K_{k}(x_{1}\wedge\overline{x}_{2}\wedge{x}_{3}\wedge ... \wedge{x}_{n}) </tex> и <tex> K_{n-k}(x_{k+1}\wedge\overline{x}_{k+2}\wedge{x}_{k+3}\wedge ... \wedge{x}_{n}) </tex> и системы из <tex> 2^n </tex> элементов конъюнкции, осуществляющих вышеприведенную операцию.(рис. 3) Следовательно, | Поэтому схема для <tex> K_{n} </tex> может быть образована из схем для <tex> K_{k}(x_{1}\wedge\overline{x}_{2}\wedge{x}_{3}\wedge ... \wedge{x}_{n}) </tex> и <tex> K_{n-k}(x_{k+1}\wedge\overline{x}_{k+2}\wedge{x}_{k+3}\wedge ... \wedge{x}_{n}) </tex> и системы из <tex> 2^n </tex> элементов конъюнкции, осуществляющих вышеприведенную операцию.(рис. 3) Следовательно, | ||
− | ::<tex> | + | ::<tex> size_{B}(K_{n}) \le size_{B}(K_{k}) + size_{B}(K_{n-k}) + 2^n </tex>. |
− | Так как по [[#Th1|Теореме 1]] <tex> | + | Так как по [[#Th1|Теореме 1]] <tex> size_{B}(K_{n}) \le k2^{k+1} </tex> , <tex> size_{B}(K_{n-k}) \le (n-k)2^{n-k+1} </tex>,то |
− | ::<tex> | + | ::<tex> size_{B}(K_{n}) \le k2^{k+1} + (n-k)2^{n-k+1} + 2^n </tex>. |
Положим <tex> k=[\frac{n}{2}]</tex>. Тогда <tex> k \le \frac{n}{2} </tex>, <tex> n-k \le \frac{n}{2}+1 </tex> и | Положим <tex> k=[\frac{n}{2}]</tex>. Тогда <tex> k \le \frac{n}{2} </tex>, <tex> n-k \le \frac{n}{2}+1 </tex> и | ||
− | ::<tex> | + | ::<tex> size_{B}(K_{n}) \le \frac{n}{2}2^{\frac{n}{2}+1} + (\frac{n}{2}+1)\frac{n}{2}2^{\frac{n}{2}+2} + 2^n =2^n+O(n2^{\frac{n}{2}})</tex>. |
− | С другой стороны, при <tex> n \ge 2 </tex> каждая конъюнкция реализуется на выходе некоторого элемента, то есть при <tex> n \ge 2 </tex> выполняется неравенство <tex> | + | С другой стороны, при <tex> n \ge 2 </tex> каждая конъюнкция реализуется на выходе некоторого элемента, то есть при <tex> n \ge 2 </tex> выполняется неравенство <tex> size_{B}(K_{n}) \ge 2^{n} </tex>. Таким образом, |
− | ::<tex> | + | ::<tex> size_{B}(K_{n}) \sim 2^n </tex>. |
Лемма доказана. | Лемма доказана. |
Версия 16:45, 10 ноября 2013
Определение: |
Синтезом схемы из функциональных элементов называется процедура получения логической схемы, реализующей заданную логическую функцию. |
Приведем несколько простейших алгоритмов синтеза схем, реализующих произвольную функцию от аргументов , в случае когда базис .
Содержание
Метод синтеза, основанный на совершенной ДНФ
Лемма (1): |
Для любой функции , реализующей конъюнкцию аргументов, |
Доказательство: |
Построим данную схему следующим образом: возьмем элементов отрицания, присоединенных к выходам, и цепочки из элементов конъюнкции, имеющих "свободных" входов.Каждый -й вход этой цепочки присоединяется к входу схемы, если -й множитель равен , или к выходу -го элемента отрицания, если -й множитель равен .(рис. 1)Очевидно, что сложность построенной схемы равна .Поэтому Лемма доказана. . |
Теорема (1): |
Для любой функции имеет место неравенство |
Доказательство: |
Пусть булева функция. Если , то может быть задана нормальной дизъюнктивной формой произвольная
где и каждая конъюнкция имеет видСхема Леммой 1 имеет сложность не более ) и цепочки из элемента дизъюнкции с свободными входами. Свободные входы этой цепочки присоединяются к выходам схем для конъюнкций .(рис. 2) Имеем для состоит из конъюнкций (каждая из них в соответствии с
Если , то схема строится в соответствии с представлением , то есть .Таким образом, для любой функции выполняется неравенство
Поэтому Теорема доказана. . |
Метод синтеза, основанный на более компактной реализации множества всех конъюнкций
Лемма (2): |
Для функции , реализующей конъюнкцию элементов, имеет место соотношение |
Доказательство: |
Разделим цепочки конъюнкций на две части. Каждая конъюнкция может быть представлена в виде конъюнкции двух конъюнкций длины и :
Поэтому схема для может быть образована из схем для и и системы из элементов конъюнкции, осуществляющих вышеприведенную операцию.(рис. 3) Следовательно,
Так как по Теореме 1 , ,то
Положим . Тогда , и
С другой стороны, при каждая конъюнкция реализуется на выходе некоторого элемента, то есть при выполняется неравенство . Таким образом,
|
Теорема (2): |
Имеет место соотношение . |
Доказательство: |
Пусть произвольная булева функция, . Заменим в схеме верхнюю часть схемы, реализующую конъюнкции , схемой, реализующей все конъюнкции из . Тогда для любой такой функции (не равной нулю) имеемТаким образом, |
Метод синтеза схем, предложенный К.Э.Шенноном
Теорема (3): |
Имеет место соотношение . |
Доказательство: |
Пусть произвольная булева функция. Рассмотрим разложение по переменным , где :. Схема для функции строится из трех подсхем: . (рис. 4)
Поэтому выполняется неравенство . Таким образом,
Положим (для упрощения дальнейших выкладок) . Тогда
Заметим, что второе слагаемое "очень быстро" растет с ростом , а первое слагаемое убывает с ростом медленней. Поэтому следует взять такое значение , при котором первое и второе слагаемые приблизительно равны, и потом немного уменьшить . Тогда второе слагаемое "сильно" уменьшится, а первое "не очень сильно" возрастет. Возьмем, например, . Тогда
то есть получили "слишком много". Возьмем на единицу меньше: . Тогда
Вспомним теперь, что должно быть целым числом, и положим . Тогда ,
При этом выборе окончательно имеем
|
Литература
- Яблонский С.В. Введение в дискретную математику. — 4-е изд. — М.: Высшая школа, 2003. — 384 с. — ISBN 5-06-004681-8