Изменения

Перейти к: навигация, поиск

Метод Лупанова синтеза схем

2 байта убрано, 19:13, 4 сентября 2022
м
rollbackEdits.php mass rollback
== Представление функции ==
[[Файл:Lupanov fig1.png|450px|thumb|right|Рис. <tex>1</tex>. Описываемая таблица истинности, разделённая на полосы]]
Поделим аргументы функции на два блока: первые <tex>k</tex> и оставшиеся <tex>(n - k)</tex>.
Для удобства дальнейших рассуждений представим булеву функцию в виде таблицы, изображённой на рис. <tex>1</tex>. Строки индексируются значениями первых <tex>k</tex> переменных, столбцы — значениями оставшихся <tex>(n - k)</tex>; таким образом, на пересечении столбца и строки находится значение функции для соответствующего набора аргументов.
== Разделение на полосы ==
== Функция для одной полосы ==
[[Файл:Lupanov_fig2.png|330px|thumb|right|Рис. <tex>2</tex>. Значения, возвращаемые функцией <tex>g_{ij}</tex>]]
Пусть для некоторого <tex>i</tex>
* <tex>\beta_{j}</tex> {{---}} произвольный столбец <tex>i</tex>-й полосы <tex>j</tex>-го сорта (точное положение столбца далее не будет иметь значения, по определению сорта)
\end{cases}</tex>
Другими словами, если строка, соответствующая аргументам функции <tex>x_1, x_2, \ldots, x_k</tex>, находится в <tex>i</tex>-й полосе, то функция возвращает значение, записанное в столбце сорта <tex>j</tex> для этой строки. Если же эта строка находится в другой полосе, то функция вернёт <tex>0</tex>. Иллюстрация принципа работы функции <tex>g_{ij}</tex> приведена на рис. <tex>2</tex>.
=== Вывод исходной функции для фиксированной части параметров ===
Поскольку изначальный столбец <tex>(\sigma_{k + 1}, \sigma_{k + 2}, \ldots, \sigma_{n})</tex> складывается из столбцов соответствующих сортов в полосах,
где <tex>j_i</tex> {{---}} номер сорта столбца полосы <tex>i</tex>, являющегося соответствующей частью столбца <tex>(\sigma_{k + 1}, \sigma_{k + 2}, \ldots, \sigma_{n})</tex>.
== Мультиплексор и дешифратор демультиплексор =={{main|Мультиплексор и демультиплексор}} Для упрощения доказательства теоремы будем использовать элементы '''''мультиплексор''''' и '''''дешифратордемультиплексор'''''.
{{
Определение|definition=
}}{{
Определение|definition=
'''ДешифраторДемультиплексор''' (или демультиплексор, ''англ.'' demultiplexer) {{---}} логический элемент, получающий на вход
* булево значение <tex>z</tex>;
* <tex>n</tex>-значное число <tex>x</tex> в двоичном представлении
}}
{|
|[[Файл:Mux_demux.png|500px|thumb|Мультиплексор слева, дешифратор демультиплексор справа]]
|}
Оба элемента представимы схемами с числом элементов <tex>O(2^n)</tex> с помощью базиса <tex>B</tex>. Доказательство этого факта у читателя будет возможность рассказать на практике.
== Доказательство ==
Для удобства поделим схему на блоки:
* '''Блок A''' {{---}} дешифратордемультиплексор, которому на вход подали <tex>1</tex> и <tex>(x_1, x_2, \ldots, x_k)</tex> в качестве двоичного представления числа.* '''Блок B''' {{---}} схемная реализация всех <tex>g_{ij}</tex>. Функцию <tex>g_{ij}</tex> можно реализовать как <tex dpi="145">\bigvee\limits_{\beta_l = 1} y_{il}</tex>, где <tex>y_{il}</tex> {{---}} выдал ли дешифратор демультиплексор <tex>1</tex> на <tex>l</tex>-м выходе <tex>i</tex>-й полосы.* '''Блок C''' {{---}} схемная реализация всех <tex>f(x_1, x_2, \ldots, x_k, \sigma_{k + 1}, \sigma_{k + 2}, \ldots, \sigma_n)</tex>. ''(здесь <tex>\sigma_i</tex> - фиксированные параметры, см. п. <tex>3.1</tex>)''
* '''Блок D''' {{---}} мультиплексор, получающий на вход все <tex>f(x_1, x_2, \ldots, x_k, \sigma_{k + 1}, \sigma_{k + 2}, \ldots, \sigma_n)</tex> и параметры функции <tex>x_{k + 1}, x_{k + 2}, \ldots, x_n</tex> в качестве двоичного представления числа. '''''Результат работы схемы''''' {{---}} вывод мультиплексора.
1632
правки

Навигация