Построение порождающей функции настраиваемого модуля.При построении модулей <strong>из</strong> ФЭ основным критерием является число внешних выводов, которое пр<strong>из</strong>аданных <strong>функциональных</strong> возможностях требуется миним<strong>из</strong>ировать [32].Рассмотрим следующую задачу. Пусть дан список <strong>из</strong> N булевых функций, каждая <strong>из</strong> которыхсущественно зависит от п переменных: f1( xn,..., x1), f2( xn,..., x1),..., fN( xn,..., x1). Требуется построитьбулеву функцию F( zg,..., z1), зависящую от возможно меньшего числа переменных g > n, котораяспособна в результате выполнения над ней операций настройки порождать любую <strong>из</strong> N упомянутыхфункций.Под возможно меньшим числом переменных g будем подразумевать не абсолютный минимум, аминимум, достижимый при реальном объеме перебора.Из <strong>из</strong>ложенного ранее следует, что для построения ПФ надо решить две основные задачи: а)сформировать на основании списка f1, f2,..., fNопределенный состав подфрагментов; б) разместитьподфрагменты в рациональном порядке, позволяющем выбирать и объединять их путем настройки.Решение этих задач позволяет математически обеспечить метод построения ПФ.Простейший вариант решения - использовать в качестве подфрагментов сами функцииf1, f2,..., fN. При этом порядок их расположения может быть про<strong>из</strong>вольным, а настроечное полеотделено от информационного. Число настроечных переменных в этом случае определяется <strong>из</strong>соотношенияd = ]log2N[.(3-20)ПФ при таком подходе имеет следующий вид:гдеNσ σ σF =Ú z z ... z f ( z ,..., z ),(3-21)i=1d d-1 1n+ d n+ d- 1 n+1 i n 1zì z при σ = 1;= íî z j при σ = 0.σ j j jn+jПример. Построить ПФ для следующего набора функций:f= xxx;1 1 2 3f = xxx Úxxx Úxxx Ú xxx;2 1 2 3 1 2 3 1 2 3 1 2 3f = x Úx Úx;3 1 2 3f = xx Úxx Úxx.4 1 2 1 3 2 3Поскольку N = 4, то d = log24= 2.Введем настроечные переменные x4и x5; тогда функцияF = xx f Ú xx f Úxx f Ú xx f1 5 4 1 5 4 2 5 4 3 5 4 4является порождающей.Точно так же порождающими являются функции с любым другим расположением подфрагментов,например функцияF = xx f Úxx f Úxx f Ú xx f2 5 4 2 5 4 4 5 4 1 5 4 3Несмотря на то, что <strong>модули</strong>, соответствующие этим функциям, имеют одинаковое число внешнихвыводов, их элементная сложность различна: некоторые формулы миним<strong>из</strong>ируются в большей,некоторые в меньшей степени.В <strong>из</strong>ложенном способе формирования ПФ вид порождаемых функций fiникак не влияет на числовходов. Оно всегда составляет g' = n+ ]log2N[. В то же время в функциях fiмогут быть общиесоставные части.Возникает предположение, что наличие одинаковых составных частей в различных функциях можетбыть использовано с целью сокращения суммарного числа подфрагментов. В самом деле, какой смыслj
дважды вносить в ПФ идентичные «половины» двух функций? Может быть, достаточно записать в ПФкаждую <strong>из</strong> составных частей функции fiвсего один раз, а потом, объединяя их, составлять требуемыефункции?Предположение это оправданно. Только, к сожалению, в большинстве случаев не удается в качестве«строительного материала» ПФ использовать составные части, меньшие чем «половина» функции fi,так как выше мы показали, что любые два подфрагмента можно путем настройки объединить в любомпорядке. Этот вывод по отношению к четырем, восьми и большему числу подфрагментовнесправедлив.Следовательно, для формирования ПФ достаточно: а) определить номенклатуру подфрагментов1длиной: 2 n- , <strong>из</strong> которых могут быть сформированы заданные функции; б) объединить подфрагменты водну функцию, которая и будет соответствовать искомой ПФ.Формирование подфрагментов осуществляется путем разложения каждой <strong>из</strong> функций fiпо одной <strong>из</strong>переменных. Так как допустимо про<strong>из</strong>вольное переименование входных переменных, то будем считать,что разложение про<strong>из</strong>водится по переменной xn:f ( x ,..., x ) = x f (0, x ,..., x ) Ú x f (1, x ,..., x ) = x ϕ ( x ,..., x ) Ú x ϕ ( x ,..., x ). (3-22)' "i n 1 n 1 n-1 1 n i n-1 1 n j n-1 1 n j n-1 1При табличной форме задания, когда переменные имеют порядок расположения xn, xn- 1,...,x1иразложение функции выполняется по переменной xn, одному подфрагменту соответствует верхняяполовина столбца значений функции, а другому - нижняя половина.Разложим каждую <strong>из</strong> N функций по одной переменной и предположим, что суммарное числоразличных подфрагментов у всех этих N функций равно r . Два подфрагмента будем называтьразличными, если порядки расположения нулей и единиц в их столбцах значений не совпадают.Необходимым условием для того, чтобы некоторая функция была порождающей, являетсявходимость каждого <strong>из</strong> r подфрагментоп, указанных выше, в столбец значений этой функции покрайней мере один раз. Выполнение этого условия обеспечивает минимальную номенклатуруподфрагментов, которую должен иметь столбец значений функции, претендующей на рольпорождающей для заданного набора <strong>из</strong> N функций.Если подфрагменты в функции могут быть выбраны в любом сочетании и порядке, то ихминимальная номенклатура является и достаточной, так как ни одна <strong>из</strong> N заданных функций не1должна иметь двух одинаковых подфрагментов длиной 2 n- ввиду того, что в противном случае оназависела бы от одной <strong>из</strong> переменных несущественно.Вторым вопросом, решаемым при построении ПФ, является определение порядка расположениянайденных подфрагментов требуемой номенклатуры в столбце значений ПФ.]log 2 r[1Пусть имеется столбец значений некоторой функции, разделенный на 2 позиций длиной 2 n- ,в котором значения функций еще не проставлены. Разместим на некоторых позициях столбца в1про<strong>из</strong>вольном порядке r различных подфрагментов длиной 2 n- ]log 2 r[, а остальные 2 - r позицийзаполним про<strong>из</strong>вольно.Из сказанного выше следует, что сформированная таким образом функция являетсяпорождающей для заданного набора N функций при использовании операций настройки четырехтипов, так как любая пара подфрагментов, номенклатура которых совпадает с номенклатуройподфрагментов заданных функций, может быть выбрана в любом сочетании и порядке, образуяостаточные функции, совпадающие с заданными.Таким образом, при указанном способе формирования ПФ число настроечных переменных d = ]log2r[,а число информационных переменных a= n- 1. При этом общее число переменных ПФg" = ]log2r[ + n- 1, (3-23)а число различных ПФ]log 2 r[v = (2 ).(3-24)При аналитической форме представления построенная ПФ имеет видгде(3-25)