Изменения

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

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

55 байт добавлено, 17:12, 28 декабря 2017
Нет описания правки
== Представление функции ==
[[Файл: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> складывается из столбцов соответствующих сортов в полосах,
* '''Блок 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> в качестве двоичного представления числа. '''''Результат работы схемы''''' {{---}} вывод мультиплексора.
Анонимный участник

Навигация