УДК 519.718
Е. В. Морозов1
О ТЕСТАХ ОТНОСИТЕЛЬНО МНОЖЕСТВЕННЫХ ЛИНЕЙНЫХ СЛИПАНИЙ ПЕРЕМЕННЫХ В БУЛЕВЫХ ФУНКЦИЯХ*
Под слипанием переменных в булевых функциях понимается подстановка некоторой функции, зависящей от данных переменных, вместо них. Слипание называется множественным, если имеется несколько блоков переменных, относительно которых произошло слипание. В данной работе устанавливается, что функция Шеннона длины проверяющего теста относительно множественных линейных слипаний имеет асимптотику Ldetect(n) ~ Щ^, а также точное значение функции Шеннона длины диагностического теста относительно множественных линейных слипаний Ldlas"(n) = 2™.
Ключевые слова: тесты, слипания, функция Шеннона.
Пусть Ф — множество булевых функций, такое, что Vm € N 3<f>(yi, ...,ут) € Ф. Тогда будем говорить, что в булевой функции f(x\,..., хп) произошло Ф-слипание переменных ж^,..., х%к, если вместо исходной функции реализуется булева функция, полученная из нее подстановкой вместо каждой из переменных х%г, • • • ,Xik функции ф(хгг,... ,Xik), где функция ф € Ф; ф будем также называть функцией слипания.
Пусть q,p е N, q sg р < n, ii,i2, ■ ■ • ...,ih,..., ijq_1, ijq_1+i, ■ ■■,ijq — попарно различные
натуральные числа из отрезка [1,п]. Будем говорить, что в булевой функции f(x\,... ,хп) произошло множественное Ф-слипание переменных ж*.,..., ж*, ,..., ж^ х%, , если вместо исходной
J 1 Q — i ' J Q
функции реализуется булева функция, полученная из нее подстановкой вместо каждой из переменных Xi1, Xi2,..., XiH функции ф\(xi1, Xi2,..., XiH ) € Ф, вместо каждой из переменных Xij +1, • • •, ж^ функции ф2{хгн+1,..., ж^2) € Ф и так далее, вместо каждой из переменных ж^ +1,..., ж^ функции ф(1{х1^_1+1,..., Xijq) € Ф, функции ф1,...,фд также будем называть функциями слипания. Через Ф = ФП)/,ф обозначим множество функций, в которое входят f(x\,... ,хп) и всевозможные булевы функции, получающиеся из /(х\,... ,хп) в результате множественных Ф-слипаний переменных при любых допустимых значениях чисел р, q, ¿2, • • •, %, • • • > Ь'2; ■ ■ ■; ; ijq-i+i-, ■ ■ ■ ijq ■ Множество наборов Т назовем проверяющим (диагностическим) тестом для функции /(х\,... ,жп), если для любой get, отличной от /, и самой функции / (соответственно для любой пары неравных
1 Факультет ВМК МГУ, асп., e-mail: morozov_msuQmail.ru
* Работа выполнена при финансовой поддержке РФФИ (грант № 12-01-00964-а).
функций из Ф) в Т найдется набор, на котором эти функции принимают разные значения. Традиционным образом введем функцию Шеннона длины проверяющего (диагностического) теста относительно множественных линейных слипаний переменных ЬйеЛесЛ(п) (соответственно Ьйш£и(п)) как максимум по всем булевым функциям длины минимального проверяющего (диагностического) теста относительно множественных Ф-слипаний (все неопределенные понятия можно найти в [1]). В данной работе рассматривается случай, когда Ф — всевозможные линейные функции п переменных.
Проверяют,ей парой для переменных ж*, х^, г ф назовем пару наборов а = (ац,... ,ап), /3 = (/?!,...,/3„), таких, что /(а) ф /(/3) и при к € {г,,]} оск Ф а ПРИ всех остальных к а,к = Рк-
Введем бинарное отношение Д/ на множестве переменных функции /(хп) следующим образом. Всегда верно, что XiRfXi. Если г ф то XiRfXj тогда и только тогда, когда для переменных ж*, х^ функции /(хп) не существует проверяющей пары.
Лемма 1. Бинарное отношение Rf есть отношение эквивалентности.
Доказательство. Очевидно, данное отношение рефлексивно и симметрично. Докажем, что оно транзитивно. Пусть г, к — попарно различные числа. Тогда если нет проверяющих пар для Хг, Х] и х%, Хк, то нет проверяющей пары и для переменных х^, х,к- Положим для удобства г = 1, ] = 2, к = 3, 7 = (74,75,...,тп) и выпишем соотношения, следующие из отсутствия проверяющих пар для Х1, Х2 и Х1, хз, из которых будет следовать требуемое утверждение: /(1,1,0,7) =
= /(0,0,0,7) = /(1,0,1,7) = /(0,1,1,7),/(0,о, 1,7) = /(1,1,1,7) = /(0,1,о,7) = /(1,0,0,7).
Лемма доказана.
Отношение эквивалентности Rf разбивает множество переменных х\,..., хп на непересекающиеся классы эквивалентности. Каждый класс эквивалентности будем называть линейным множеством переменных функции /(хп) (смысл названия будет ясен позже). Будем далее считать, что переменные из одного линейного множества идут подряд. Для фиксированного I (г N будем называть линейное множество А' Ь-мелким (соответственно I-крупным), если ^ £ (соответственно >
Лемма 2. Если (а, /3) — проверяющая пара для переменных х^, х^, то для любой переменной Хк, к € {1, 2,..., п} \ {г,существует набор 7, такой, что для х^, х,к или х^, Хк среди наборов а, /3, 7 есть проверяющая пара.
Доказательство. Пусть г = 1, ^ = 2, к = наборы (0, 0, 0, «4,..., ап), (1,1, 0, «4,..., ап) образуют проверяющую пару для х,\, х,2- Предположим, что невозможно добавить ровно один набор так, чтобы образовалась проверяющая пара для жг, жз- Тогда получаем
/(0, 0, 0, а4,..., ап) = /(0,1,1, а4,..., ап) = а, /(1,1, 0, а4,..., ап) = /(1, 0,1, а4,..., ап) = а.
Видим, что (0, 0, 0, «4,..., ап), (1, 0,1, «4,..., ап) — проверяющая пара для х\, Ж3. Пусть (0,1, 0, «4,... ... , ап), (1, 0, 0, «4,..., ап) — проверяющая пара для х\, жг- Действуя тем же образом, получаем
/(0,1, 0, а4,..., ап) = /(0, 0,1, а4,..., ап) = 8, /(1, 0, 0, а4,..., ап) = 8.
Видим, что (1, 0, 0, «4,..., ап), (0, 0,1, «4,..., ап) — проверяющая пара для х,\, Ж3.
Остальные случаи рассматриваются аналогично. Лемма доказана.
Следствие 1. Пусть переменная Жг принадлежит линейному множеству А', а переменная ж.; не принадлежит данному множеству. Если (а, /3) — проверяющая пара для ж*, жто для любой переменной ж к из линейного множества А' существует набор 7, такой, что (а, 7) или (/3,7) будет проверяющей парой для (хк,х:1).
Множество наборов назовем проверяющим, если для каждой пары переменных ж¿, жне лежащих в одном линейном множестве переменных функции /(жп), в этом множестве найдется проверяющая пара.
Лемма 3. Для любой булевой функции п переменных можно построить проверяющее множе-
2
сгпво наборов мощностью не более чем + 0(п^/п).
Доказательство. Адаптируем для решения данной задачи метод, использованный в [2]. Для некоторого натурального £ определим множества переменных следующим образом:
переменная ж к лежит в множестве У|, I € {0,1,... — 1}, тогда и только тогда, когда к = I (тос1 Ь). Положим р = . Ясно, что |У"г| ^ р.
Пусть Т' — множество наборов, такое, что для каждого У| и каждой пары € Уг, не лежащей
в одном линейном множестве переменных, в Т' содержится соответствующая проверяющая пара наборов. Тогда \Т'\ ^ 1). Для множества Т введем квадратную матрицу Т') порядка п следующим
образом:
3, если верно, что XiRfXj;
2, если проверяющая пара для ж*, х^ содержится в множестве Т";
_ I 1, если в множестве Т нет проверяющей пары для ж¿, ж^-,
но существует набор 7, такой, что проверяющая пара для ж*, ж^-содержится в множестве Т' и {7};
О, иначе.
ч '
Обозначим через в(Т') число нулей в матрице <2(Т"). Получим верхнюю оценку для в(Т').
Если переменная Хк лежит в ¿-крупном линейном множестве А", то в матрице (}{Т') в строке и столбце, соответствующих ж^, не может быть нулей. Выберем произвольную переменную которая содержится в некотором У|, I € {0,1,..., I — 1}. Если х^ лежит в том же линейном множестве А", что и Хк, тогда = = 3. Пусть х^ принадлежит другому линейному множеству, тогда в силу ¿-крупности линейного множества А" в нем найдется переменная Xi, лежащая в У;. По построению Т' в нем есть проверяющая пара для ж*, Ху Тогда по следствию 1 получаем, что Цк:1 = ц:1к = 1-
Далее рассмотрим случай, когда переменная Хк принадлежит ¿-мелкому линейному множеству А". Пусть Хк € Уто, т € {0,1,..., £ — 1}. Тогда в Уто нет других переменных из линейного множества А" в силу его ¿-мелкости. Покажем, что в столбце (следовательно, и строке) матрицы (¿(Т1), соответствующем переменной ж*;, число нулей не превосходит £ — 1. По построению Т" получаем, что для любой переменной хр € Уто, отличной от ж^, црк = Цкр = 2. Пусть различные переменные ж¿, ж^- лежат в некотором множестве У;, т ф I, при этом д^ = = 0. Из доказанного выше следует, что ни одна из них не лежит в ¿-крупном линейном множестве переменных, а в одном ¿-мелком линейном множестве они не могут лежать в силу принадлежности У|. Значит, ж¿, х^ лежат в разных ¿-мелких линейных множествах. Тогда из леммы 2 следует, что в множестве Т" лежит проверяющая пара для данных переменных и хотя бы одно из чисел qкj, Цкл отлично от нуля. В итоге в столбце матрицы Т'), соответствующем переменной ж^, Хк € Уто, из ¿-мелкого линейного множества функции /, в строках переменных из Уто нет нулей, а среди всех строк каждого из остальных множеств У;, I ф т, нуль встречается не более чем в одной строке.
Итак, в(Т') ^ п(1 — 1). Поскольку на главной диагонали матрицы стоят тройки, а каждой паре переменных ж*, х^ в матрице (¿(Т') соответствуют две позиции д^, д^, получаем, что к Т" достаточно добавить п(п~р) (один набор на одну пару, за исключением уже учтенных пар, т. е. лежащих в одном множестве У;, но в разных линейных множествах) плюс 6(Т')/2 наборов, чтобы получить искомое проверяющее множество Т". Таким образом,
\т"\ <гр(р-1) + \в{Г) + <Ыр-1) + +
Выбирая ¿ = \л/п\, получаем искомую оценку. Лемма доказана.
Теорема 1. При п —> оо верно следующее двойное неравенство:
2 2
^ ьаеьесь(п) < у + 0(пу/п).
Доказательство. Рассмотрим сначала случай, когда функции слипания существенно зависят от всех своих переменных.
Включим в тест проверяющее множество наборов, полученное в лемме 3. Тогда, если произошло слипание, в одном блоке которого хотя бы две переменные принадлежат разным линейным множествам, на наборах из проверяющей пары для данных переменных (хотя бы одна такая пара содержится в построенном множестве) функция неисправности будет принимать равные значения, следовательно, неисправность будет обнаружена. Будем считать, что во всех последующих наборах, добавленных в тест, в позициях, соответствующих фиктивным переменным, стоят нули, если это не оговорено особо.
Далее, пусть первые т\ переменных образуют первое линейное множество переменных функции /(жп), следующие {т2^т\) переменных — второе линейное множество и так далее, последние п—тг-\ переменных образуют г-е линейное множество.
Пусть т\ У} 2. Зафиксируем значения всех переменных, кроме Ж1,...,ЖТО1. Поскольку для данных переменных нет проверяющих пар вида («1,..., «¿-1, 0, 1,..., 0^-1,1, ау+ь • • •, «пн+ъ ... ,ап)
и («1,..., «¿-1,1, «¿+1,..., а.;_1, 0, а.;_|_1,..., аТО1+1,..., ап), где 1 ^ г < ] ^ т 1, то на всех наборах одного слоя булева куба получившаяся функция т\ переменной принимает равные значения. Из отсутствия проверяющих пар вида («1,..., «¿-1, 0, 1,..., 0^-1, 0, ..., аТО1+1,..., ап) и («1,..., «¿-1,1, щ.|_1,..., aj-l, 1, ..., аТО1+1,..., ап) заключаем, что на нулевом, втором, всех
четных слоях булева куба данная функция принимает равные значения, на первом, третьем, всех нечетных слоях булева куба функция также принимает равные значения. Этому условию удовлетворяют всего четыре функции: 0, 1, х\ Ф х2 Ф • • • Ф хт1, х\ Ф х2 Ф • • • Ф хтг Ф 1. Если все переменные х\,... ,хт1 фиктивны, то в результате их слипания получается функция, неотличимая от исходной /(ж1,... ,жп). В противном случае существуют 7ТО1+1,... ,7«, такие, что при подстановке их вместо переменных хт1+1,... ,хп получается линейная функция первых т\ переменных. Если произошло слипание внутри первого линейного множества переменных, то при данных 7ТО1+1, • • • ,7« получаем некоторую линейную функцию. Добавим в тест набор, у которого первые т\ компонент равны нулю, а последующие равны 7ТО1+1,..., 7«, и все наборы, соседние ему по компонентам с номерами 1,..., т 1, всего Ш1 +1 набор. Если реализовалась функция, отличная от х\ фх2 Ф • • • ФжТО1, х\фх2 Ф • • • ФжТО1 Ф1, то неисправность обнаружена, поскольку некоторая переменная, существенная в исправной функции, стала фиктивной и была обнаружена на добавленных наборах. В противном случае произошло слипание линейного множества х\,..., хт1 с функцией слипания ф(х 1,..., хт1) = х\ Ф х2 Ф • • • Ф хт1 Ф 1. Этот случай будет рассмотрен ниже.
Аналогичные рассуждения можно провести для всех линейных множеств, содержащих не менее двух переменных.
Предположим, что поданы все наборы, входящие в тест на данный момент, но неисправность не была обнаружена. Это значит, что не было слипаний переменных из разных линейных множеств, а внутри каждого линейного множества могли произойти только слипания, переводящие линейную функцию, существенно зависящую от всех своих переменных, в ее отрицание. Это верно и для линейных множеств, состоящих из одной переменной. Представим функцию /(хп) как суперпозицию некоторой функции д(у\,..., уг), где г — число линейных множеств, на которые разбиты переменные функции /, и линейных функций вида 1,..., = £1 Ф £2 Ф • • • Ф следующим образом. Чтобы получить значение функции д(уг) на произвольном наборе («1,..., аг), нужно выбрать такие значения /01,... ,/0п переменных хг,... ,хп, чтобы хпн_1+1 ф х„н_1+2 Ф • • • Ф х„н = щ V? : 0 ^ г ^ г, то = О, тогда /(/З1,..., /Зп) и будет значением д(уг) на наборе («1,..., аг). Функция д(уг) не зависит от того, какие именно значения выбирались для переменных произвольного линейного множества из хп, важна только их сумма по модулю два. Приведем пример:
/(Ж1, Ж2, • • • , Х7) = (XI Ф Ж2 Ф Жз)(ж4 Ф Ж5 ф Хе)Х7 V ф Ж2 Ф Ж3 ф 1)(ж4 ф Ж5 ф Жб Ф 1)ж7-
Тогда получаем суперпозицию д(уъ у2, уз) = У1У2У3 V {уг Ф 1)(уг Ф 1)уз из функций у 1(ж1,ж2,ж3) = = XI Ф ж2 Ф х3, у2(ж4, Х5, х6) = х4 Ф х5 Ф Хв, Уз(х7) = х7.
Если произошло слипание линейного множества существенных переменных х%х,..., х%ь, где к нечетно (в случае четного к переменные х^,... ,х^к станут фиктивными), с функцией слипания ф(уг,... ,ук) = У\ Ф У2 Ф • • • Ф Ук Ф 1 функции /(хп), то это эквивалентно инверсии соответствующей переменной функции д(уг). В работе [3] установлено, что для тестирования д(уг) относительно инверсий переменных требуется не более чем г наборов, а значит, для тестирования /(хп) относительно инверсий линейных множеств (в том числе состоящих из одной переменной) потребуется линейное число наборов. Добавим соответствующие наборы в тест.
На этом завершим рассмотрение функций слипания, существенно зависящих от всех своих переменных, и изучим остальные случаи. Если в результате слипания некоторая существенная переменная стала фиктивной, для обнаружения такой неисправности достаточно добавить в тест не более двух наборов. Если в слипании участвует хотя бы одна существенная переменная /(хп), то это эквивалентно некоторому слипанию с функцией слипания, существенно зависящей от всех своих переменных, которое было обнаружено ранее. Если слипаются только фиктивные переменные, то это не меняет исходную функцию. Таким образом, достаточно добавить не более чем 2п наборов.
Подытожим. Для всех пар переменных из разных линейных множеств в проверяющем множестве содержится проверяющая пара. Для линейного множества из р ^ 2 переменных в тест добавлено р + 1 наборов, при этом проверяющие пары для них не добавляются. Следовательно, суммарно для всех таких линейных множеств добавлено: {т\ +1) + (тог-®! +1) +... + (п — тг-\ +1) ^ п + г ^ 2п наборов.
Также добавлено линейное число наборов для тестирования инверсий линейных множеств и проверки существенности переменных. Отсюда следует верхняя оценка.
Докажем далее нижнюю оценку. Сузим класс неисправностей до единичных слипаний двух переменных с функцией слипания ж Ф у, т.е. Ф = {ж Фу}. Рассмотрим функцию /(х\,... ,хп) = = х\ V Х2 V ... V хп. Тогда для проверки слипания переменных ж*, х^ в тест необходимо добавить набор, у которого в позициях г ш ^ стоят единицы, а в остальных — нули, так как на других наборах получившаяся функция неисправности не отличается от исходной. Таким образом, для проверки необходимо (наборов, откуда следует нижняя оценка. Теорема доказана.
Теорема 2. Для функции Шеннона длины диагностического теста относительно множественных линейных слипаний верно следующее равенство: Ь'11а"т{п) = 2".
Доказательство. В работе [4] показывалось, что при инверсных неисправностях входов схем, реализующих дизъюнкцию п переменных, могут реализовываться всевозможные элементарные дизъюнкции п переменных. Чтобы отличить каждую из этих функций от тождественной единицы, которая получается подстановкой единиц вместо переменных дизъюнкции, потребуется 2" наборов. Теорема доказана.
СПИСОК ЛИТЕРАТУРЫ
1. Редькин Н. П. Надежность и диагностика схем. М.: Изд-во Моск. ун-та, 1992.
2. Романов Д. С. Об оценках функции Шеннона длины единичных тестов относительно транспозиций переменных // Вестн. Моск. ун-та. Сер. 15. Вычисл. матем. и киберн. 2007. № 2. С. 23-29.
3. Погосян Г. Р. О проверяющих тестах для входов логических устройств. М.: Изд-во ВЦ АН СССР, 1982.
4. Беджанова С. Р. О минимальных тестах для схем, реализующих дизъюнкцию // Дискретный анализ и исследование операций. 2008. 15. № 2. С. 3-11.
Поступила в редакцию 19.03.13
ON THE TESTS FOR MULTIPLE LINEAR CONGLUTINATIONS OF VARIABLES IN BOOLEAN FUNCTIONS
Morozov E. V.
Let a conglutination of variables in Boolean functions be a substitution of some function depending on these
variables instead of them. The conglutination is multiple is there are several blocks of conglutinated variables. In
the present paper it is shown that the Shannon function of the length of the detecting test for multiple linear
2
conglutinations is asymptotically equal to ^ and also it is shown that the Shannon function of the length of the diagnostic test for multiple linear conglutinations is equal to 2™.
Keywords: tests, conglutination of variables, test-length Shannon function.