Научная статья на тему 'О тестах для почти всех булевых функций относительно некоторых неисправностей входов схем'

О тестах для почти всех булевых функций относительно некоторых неисправностей входов схем Текст научной статьи по специальности «Математика»

CC BY
58
10
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ТЕСТЫ / TESTS / СЛИПАНИЯ / ВЫТЕСНЯЮЩИЕ НЕИСПРАВНОСТИ / CONGLUTINATIONS / DISPLACING FAULTS

Аннотация научной статьи по математике, автор научной работы — Морозов Е.В.

В данной работе изучаются тесты для почти всех функций относительно линейных слипаний и вытесняющих неисправностей входов схем. Устанавливаются отсутствие эффекта Шеннона для названных неисправностей. Под слипанием переменных в булевых функциях понимается подстановка вместо данных переменных некоторой функции, зависящей от них. Под вытесняющей неисправностью понимается подстановка вместо вытесняемых переменных функций, зависящих от остальных переменных.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «О тестах для почти всех булевых функций относительно некоторых неисправностей входов схем»

УДК 519.718

Е. В. Морозов1

О ТЕСТАХ ДЛЯ ПОЧТИ ВСЕХ БУЛЕВЫХ ФУНКЦИЙ ОТНОСИТЕЛЬНО НЕКОТОРЫХ НЕИСПРАВНОСТЕЙ ВХОДОВ СХЕМ*

В данной работе изучаются тесты для почти всех функций относительно линейных слипаний и вытесняющих неисправностей входов схем. Устанавливаются отсутствие эффекта Шеннона для названных неисправностей. Под слипанием переменных в булевых функциях понимается подстановка вместо данных переменных некоторой функции, зависящей от них. Под вытесняющей неисправностью понимается подстановка вместо вытесняемых переменных функций, зависящих от остальных переменных.

Ключевые слова: тесты, слипания, вытесняющие неисправности.

1. Введение. Пусть f(xi,... ,хп) — булева функция, реализованная некоторой исправной схемой T,f. Будем рассматривать неисправности входов схем, т.е. ситуацию, когда на входы Sj поступают значения, отличные от ожидаемых. Ясно, что подобная неисправность не зависит от вида схемы, поэтому дальше будем говорить о тестировании функции f(xi,... ,хп).

Более формально, пусть на входы схемы действует источник неисправностей А. В результате вместо исходной функции схема будет реализовывать одну из функций системы функций неисправности Ф/. Множество Т называется проверяющим тестом относительно источника неисправностей А, если для любой отличной от / функции д(х\,..., х„) из Ф/ в данном множестве есть набор, на котором / и д принимают разные значения. Длиной 1(Т) теста Т назовем число наборов в нем. Длиной проверяющего теста для функции / относительно источника неисправностей А будем называть

1 Факультет ВМК МГУ, асп., e-mail: morozov_msuQmail.ru

* Работа выполнена при поддержке грантов РФФИ № 12-01-00964-а, 15-01-07474-а.

величину L{f,A) = min 1{Т), где минимум берется по всевозможным проверяющим тестам для /

относительно неисправностей А. Под функцией Шеннона длины проверяющего теста относительно источника неисправностей А будем понимать величину Ь(п, А) = max L(f,A). Под эффектом

/(ж 1,...,Хп)

Шеннона понимается ситуация, когда сложность почти всех булевых функций асимптотически равна функции Шеннона. В настоящей работе имеется в виду сложность тестирования. Тестом существенности для функции /(ж 1,... ,хп) назовем множество наборов, для каждой существенной переменной Xi содержащее пару наборов, соседних по ж*, на которых функция принимает разные значения. Все неопределенные в данной статье понятия можно найти в [1].

В данной работе доказывается отсутствие эффекта Шеннона для множественных линейных слипаний и вытесняющих неисправностей. Установлено также, что длина минимального проверяющего теста относительно вытесняющих неисправностей для почти всех булевых функций равна п + 1.

2. Множественные линейные слипания. Пусть Ф — множество булевых функций, такое, что Vm € N Эф(у1,..., Ут) G Ф- Тогда будем говорить, что в булевой функции f(xi,... ,хп) произошло Ф-слипание переменных ж^,..., ж^, если вместо исходной функции реализуется булева функция, полученная из нее подстановкой вместо каждой из переменных ж^,..., x%h функции ф(х^, • • •, Xik), где функция ф € Ф; ф будем также называть функцией слипания.

Пусть g G N, g ^ п, ¿1, ¿2, • • •, %, ъ ■ ■ ■ -.ij^-. ■ ■ ■ ' Ъ'«-1+ь • • • ■> b« — попарно различные натуральные числа из отрезка [1,п]. Будем говорить, что в булевой функции f(x\,... ,хп) произошло множественное Ф-слипание переменных ж^,..., ж^ ,..., ж^ _i+1,..., ж^ , если вместо исходной функции реализуется булева функция, полученная из нее подстановкой вместо каждой из переменных Хгг, Жг2,..., жij функции ф\(ж^, Xi2,..., Xij ) € Ф, вместо каждой из переменных ж^ +1,..., ж^ функции ф2(хгн+1,... ,Xij2) G Ф и так далее, вместо каждой из переменных ж^ +1,...,ж^ функции фд(Xij _1+1,...,жij ) G Ф, функции ф1,...,фд также будем называть функциями слипания. Источник неисправностей, связанный со всевозможными Ф-слипаниями при всех допустимых значениях q,ii,i2, • • • 1, • • • ,ij2, • • • • • • ,ijq, будем обозначать С(Ф).

Множественные линейные слипания (когда Ф = Фпп — множество всех линейных функций) изучались в работе [2]. Там установлено, что функция Шеннона длины проверяющего теста относительно

п2

данной неисправности асимптотически равна —.

Проверяют,ей парой для переменных ж¿, Xj, г ф j, назовем пару таких наборов а = («i,... ,ап), ß = (ßi,... ,ßn), что /(а) ф f(ß) и при k G {i,j} верно, что а^ ф ßk, а при всех остальных к имеет место равенство а^ = ßk-

Назовем функцию антисимметрической, если для любой пары переменных у функции есть проверяющая пара. Назовем функцию симметрической по переменным ж¿, Xj, если для данных переменных у функции нет проверяющей пары. Множество наборов называется проверяющим для /, если для каждой пары переменных, по которым / несимметрическая, оно содержит проверяющую пару.

Лемма 1. Почти все булевы функции антисимметрические.

Доказательство. Выберем произвольным образом две переменные x,i и Xj и подсчитаем число булевых функций, у которых нет проверяющей пары для этих переменных. Разобьем множество булевых n-мерных наборов на четыре непересекающихся подмножества Uqq, Uqi, U\q, l/ц. Множество Uab состоит из наборов, у которых в г-м разряде стоит а, а в j-м — Ь. Для задания булевой функции требуемого вида достаточно определить ее значения на множествах Uqq, Uqi, Uu, поскольку по значениям функции на Uqi значения функции на Uw определяются однозначным образом. Тогда число функций, симметрических по переменным ж¿, ж равно 2"1' . Существует С2 способов выбрать переменные жi, Xj, следовательно, число булевых функций, симметрических по какой-то паре переменных, можно

П2 3 п (П2 3 п п\

оценить сверху через —2"1' . Утверждение леммы вытекает из того, что lim ( —2"1' /22 I = 0.

2 n—too \ 2 /

Лемма 2. Для почти всех булевых функций можно построить проверяющее множество мощности не более чем (1 + ö)nlogn, где 8 — сколь угодно малое положительное число.

Доказательство. Покажем, что для произвольной булевой функции /(х\,... ,х„) существует проверяющее множество Tf требуемой мощности. Опишем построение такого множества по шагам.

я*»* Пусть 0«4 m_u ™„о фушц,А у _ н. первом . 5У„™ ку6а

п п_ L?-£nJ

либо нулей, либо единиц меньше, чем — — еп. Их число N(n) равно 22 n+1 ^ Сгп. Эта величина

2 к=1

меньше, чем 22П-п+1+пЯ(-^ 1\ где используется функция Н(у) = —y\og2y — (1 — у) log2 (1 — у)

(энтропийная оценка). На множестве (0, 0.5] функция Н(у) монотонно возрастает, а в точке 0.5 равна 1.

Это значит, что для любого из рассматриваемых значений е существует такое число г = т(е), что

при достаточно больших п верно неравенство N(n) < 22 ~тп, т.е. N(n) = о(22 ). Это значит, что

п

у почти всех булевых функций число единиц и число нулей на первом слое булева куба лежит от — ^еп п

до — + еп. Разобьем переменные на множества Xl(f) и X^if). Переменная x,i входит в Xl(f), если на наборе, соседнем с нулевым по переменной ж*, функция равна нулю. В противном случае переменная Xi входит в X^if). Добавим в Tf все наборы первого слоя. Ясно, что для всех переменных, попавших в разные множества в Tf имеется проверяющая пара.

Второй шаг. Пусть далее Xi € Xj € X^if). Выберем набор, у которого единица стоит

только в j-м разряде. Назовем данный набор первым ведущим набором ша,га 1. Для всех переменных из множества Х{ (/) возьмем по набору, соседнему по данной переменной с первым ведущим набором, и добавим в множество Tf. Аналогично первому шагу можно показать, что у почти всех булевых

\Х1( ЛI

функций число единиц и число нулей среди взятых наборов лежит в отрезке от —^--e\Xl(f)\

\Х1( ЛI

до —^--e\Xl(f)\. Пусть хр лежит в Xl(f). Если на наборе, соседнем с первым ведущим по хр,

функция равна нулю, отнесем хр к Xf(f), в противном случае — к (/)• Вторым ведущим набором шага 1 назовем набор, соседний с нулевым по переменной ац. Повторяя рассуждения для первого ведущего набора, получаем множества Х|(/), X\(f) и добавляем еще |-Х"з(/)| наборов в Tf. Ясно, для переменных, попавших в разные из множеств Х\ (/), Х\(/), Х|(/), Х|(/), в Tf есть проверяющая пара, добавленная на первом или на втором шаге.

к-й шаг. Возьмем произвольное множество предыдущего шага X^~1(f). Если верно, что \X^(f)\ < 4у/logn (число Ау/logn выбрано для удобства дальнейших вычислений), то переходим к следующему множеству. В противном случае имеем два варианта. Пусть сначала X^~1(f) С Xl(f). Тогда выберем переменную xq из Х2(/), такую, что в q-м разряде первого ведущего набора (к — 1)-го шага стоит ноль (далее будет показано, что число шагов логарифмично по порядку, поэтому при достаточно больших п такая переменная всегда найдется). Первым ведущим набором к-го шага назовем набор, соседний с первым ведущим набором (к — 1)-го шага по xq. Добавим в Tf все наборы, соседние с первым ведущим набором к-го шага по переменным из Xf:~1(f). Как и ранее, разобьем X^~1(f) на два подмножества Xg(f), Xg+1(f). Если же С Х\(/), то проводим аналогичную процедуру,

определяя второй ведущий набор к-го шага. В Tf добавлено не более чем п наборов.

После какого-то шага не будет добавлено ни одного набора в Tf. Обозначим через Vi(/),••• ,Vt(f) все подмножества переменных, которые не были разбиты на более мелкие. Очевидно, что у/ logn <

< |И(/)1 < 4-\/logn, а общее их число t не превосходит П Для каждой пары переменных,

V logn

принадлежащих одному множеству Vi(f), добавим в Tf проверяющую пару. Таким образом, на зап

ключительном этапе добавляется не более, чем 8 log п = o(nlogn) наборов.

V logn

Оценим теперь число шагов. Если на к-м шаге мощность самого крупного подмножества переменных была равна т, то на следующем шаге мощность самого крупного подмножества либо была

1

не более, чем 4у/logn, и в этом случае процесс завершался, либо становилась не более, чем т Поэтому число шагов ограничено сверху значением log i n = log 2 п. На каждом шаге было доба-

1 + 2е

влено не более п наборов. А по завершении процесса было добавлено o(nlogn) наборов. Если е стремится к нулю, то log 2 п стремится к log2 п. Поэтому по требуемому 8 можно выбрать достаточно малое е и достаточно большое п, что завершает доказательство леммы.

Теорема 1. Пусть Ф = Фнп. Тогда для почти всех булевых функций /(х\,... ,хп) верно Ь(/,С(Ф)) ^ (1 + 8)п\о^п, где 8 — сколь угодно малое положительное число.

Доказательство. Известно, что у почти всех булевых функций все переменные существенны. Из этого факта и леммы 1 следует, что достаточно рассмотреть только антисимметрические функции без фиктивных переменных.

Если хоть какие-то переменные участвуют в слипании с функцией слипания, у которой имеются фиктивные переменные, неисправность будет обнаружена на тесте существенности. Для функции, зависящей от п переменных, длина минимального теста существенности ограничена числом 2п. Это следует из того, что на каждую переменную требуется не более 2 наборов. Если слипаются какие-либо переменные с линейной функцией слипания, существенно зависящей от всех своих переменных, это будет обнаружено на проверяющем множестве, так как на любой проверяющей паре для выбранных слипшихся переменных значение выбранной функции слипания является одинаковым, а значит, и значения функции неисправностей совпадают. А значения исходной функции различаются на любой проверяющей паре. Проверяющее множество строится по лемме 2. Если же неисправность заключается в инверсии некоторых переменных, это обнаруживается на проверяющем тесте относительно инверсий. В [3] показано, что мощность такого теста не выше п. После этого рассмотрены всевозможные линейные функции. Объединив все множества, получаем тест требуемой мощности. Теорема доказана.

В работе [2] показано, что функция Шеннона длины проверяющего теста относительно множе-

п2

ственных линейных слипаний асимптотически равна —. Из доказанной теоремы следует отсутствие

эффекта Шеннона для множественных линейных слипаний.

В доказательстве теоремы для случая, когда функция слипания существенно зависит от всех своих переменных, используются свойства симметрических функций. Поэтому можно сформулировать следующее утверждение.

Следствие. Пусть Ф — множество симметрических функций. Тогда для почти всех булевых функций /(ж1,..., хп) верно £(/, Ф) ^ (1 + 5)nlogn, где 8 — сколь угодно малое положительное число.

Доказательство. Тест будет состоять из проверяющего множества и теста существенности. Доказательство аналогично доказательству теоремы.

3. Вытесняющие неисправности. Пусть /(.г,....../•„) — булева функция, формально зависящая от п переменных. Будем считать, что среди переменных х1,...,хп есть некоторое число вытесняемых переменных. Все остальные переменные назовем вытесняющими. Пусть —

произвольная перестановка множества чисел {1,...,п}. Предположим, что переменные х^,... ,х^к являются вытесняемыми. Тогда вместо функции /(х\,... ,хп) реализуется функция неисправности д(х\,...,хп), получающаяся из /(х\,... ,хп) подстановкой вместо каждой вытесняемой переменной х%., 1 к, произвольной булевой функции ф](хък+1,..., Хгп) от вытесняющих переменных. Если

все переменные вытесняемые, то функции подстановки могут быть только константами. Заметим, что вытесняемые переменные являются фиктивными в получившихся функциях неисправности. Функции ф](хък+1,...,Хгп) будем называть функциями подстановки. Вытесняющие неисправности являются естественным обобщением константных неисправностей, изученных В.Н. Носковым [4]. Источник неисправностей, связанный с вытесняющими неисправностями, будем обозначать I.

Два набора, отличающиеся лишь в г-ш компоненте, называются ребром г-го направления. Если значения функции / на данных наборах различаются, будем называть ребро правильным для функции /.

Лемма 3. Множество наборов Т является проверяющим тестом относительно вытесняющих неисправностей входов схем для функции /(х\,... ,хп) тогда и только тогда, когда Т — тест существенности для /(х\,... ,хп).

Доказательство. Пусть Т — тест существенности для /(х 1,...,хп). Если вытесняются только фиктивные переменные, то реализуется функция, неотличимая от исходной. Если же вытесняется существенная переменная Хг, то в функции неисправности д(х\,..., х„) она фиктивна. Следовательно, на одном из наборов правильного ребра г-го направления д(х\,..., х„) будет отличаться от /(жь .. .,хп).

Пусть теперь Т = {(«1,..., а^), ..., а2 ),..., {а\,..., а^)} — проверяющий тест для /(х\,... ,хп), не являющийся тестом существенности. Без ограничения общности будем считать,

что х\ — существенная переменная /(х\,... ,хп), для которой в Т нет правильного ребра. Пусть ф(х2,..., хп) — булева функция, равная а\ на каждом наборе (аг2,..., агп), 1 ^ г ^ р, и принимающая произвольные значения на остальных наборах. Тогда если х\ — единственная вытесняемая переменная и вместо нее подставляется ф(х2,...,жп), то данная неисправность не может быть обнаружена на множестве наборов Т. Лемма доказана.

В работе [4] доказано, что функция Шеннона длины проверяющего теста относительно подстановки констант асимптотически равна 2п. Под подстановкой констант понимается реализация функции неисправности, полученной из исходной подстановкой констант вместо некоторых переменных. Ясно, что подстановка констант является вытесняющей неисправностью. Как уже было сказано, длина минимального теста существенности для функции /(х\,..., х„) ограничена сверху значением 2п. Отсюда и из оценки для константных неисправностей вытекает, что функция Шеннона длины проверяющего теста относительно вытесняющих неисправностей асимптотически равна 2п.

Докажем, что для данной неисправности также не выполняется эффект Шеннона.

Теорема 2. Для почти всех булевых функций верно Ь(/(х\,..., хп), I) = п + 1.

Доказательство. Воспользуемся леммой 3 и будем оценивать длину теста существенности для почти всех функций. Начнем с верхней оценки. В работе [5] доказано, что для почти всех булевых функций проверяющий тест относительно инверсий не более чем одной переменной, имеет длину 1. Предположим, что для некоторой булевой функции /(х\,... ,хп) данный тест состоит из набора а = («!,...,«„) и /(а) = а. Тогда если переменная ж*, 1 ^ % ^ п, существенна, то /(«1,..., Щ-1, щ.|_1,..., ап) = а. В противном случае инверсия переменной х^ не была бы обнаружена. Но это означает, что («1,... ,ап), (а 1,..., «¿-1, «¿+1,..., ап) — правильное ребро г-го направления. Получаем, что если взять множество Т, состоящее из набора а и всех соседних ему наборов по существенным переменным функции /(х\,..., хп), то получим тест существенности для функции /(ж1,...,ж„), а значит, и полный проверяющий тест относительно вытесняющих неисправностей. Мощность данного теста не превосходит п + 1.

Перейдем к нижней оценке. Воспользуемся фактом, что у почти всех булевых функций все переменные существенны. Пусть /(х\,... ,хп) — булева функция без фиктивных переменных и Т — некоторый минимальный тест существенности для данной функции. Введем граф О = (У,Е), вершины которого взаимно однозначно соответствуют наборам из Т. Если наборы, приписанные двум вершинам графа, являются соседними по г-ж компоненте, то соединим данные вершины ребром с пометкой г. Пусть /•.', — множество ребер с пометкой г. Ясно, что ^ 1, иначе Т не было бы тестом сущестенности. Произвольным образом удалив из /•-', все ребра, кроме одного, перейдем к множеству ребер /•-''. Выполним эту операцию для всех i, объединим все множества /•-''. получим новое множество ребер Е' и перейдем к графу О' = (У,£"). Покажем, что в О' нет циклов. Предположим противное. Пусть вершины г>1,..., ур образуют простой цикл и этим вершинам сопоставлены наборы «1,..., ар. Допустим, что ребро («1,^2) помечено числом а ребро (ур,у\) — отличным от ] числом к. Поскольку вершины «2, • • • ,ур образуют цепь, ни одно ребро в которой не помечено числом ясно, что в ^'-х разрядах наборов а2,...,ар стоит одно и то же число, отличное от ^'-го разряда набора а\. Но тогда наборы «1, ар не могут быть соседними по переменной х^. Получаем противоречие. Следовательно, С — ациклический простой граф, тогда число вершин в нем равно числу ребер плюс число связных компонент. В графе С п ребер и хотя бы одна связная компонента. Таким образом, ^ п + 1, |Т| ^ п + 1, что завершает доказательство теоремы. Теорема доказана.

СПИСОК ЛИТЕРАТУРЫ

1. Редькин Н. П. Надежность и диагностика схем. М.: Изд-во МГУ, 1992.

2. Морозов Е. В. О тестах относительно множественных линейных слипаний переменных в булевых функциях // Вестн. Моск. ун-та. Сер. 15. Вычисл. матем. и киберн. 2014. № 1. С. 22-25.

3. Погосян Г. Р. О проверяющих тестах для входов логических устройств. М.: Изд-во ВЦ АН СССР, 1982.

4. Носков В. Н. О сложности тестов, контролирующих работу входов логических схем // Математические заметки. 1975. 18. Вып. 1. С. 137-150.

5. И к рам о в А. А. О сложности тестирования логических устройств на некоторые типы неисправностей // Интеллектуальные системы. 2013. 17. Вып. 1-4. С. 311-313.

Поступила в редакцию 07.07.14

52

ВЕСТН. МОСК. УН-ТА. СЕР. 15. ВЫЧИСЛ. МАТЕМ. И КИБЕРН. 2015. № 1

ON THE TESTS FOR CERTAIN FAULTS OF CIRCUIT INPUTS FOR ALLMOST ALL BOOLEAN FUNCTIONS

Morozov E. V.

In the present paper tests for linear conglutinations and displacing faults of circuit inputs for almost all boolean functions are studied. It is shown that there is no Shannon effect for these faults. A conglutination of variables in Boolean functions is a substitution of some function depending on these variables instead of them. A displacing fault is a substitution of some functions depending on displacing variables instead of displaced variables.

Keywords: tests, conglutinations, displacing faults.

i Надоели баннеры? Вы всегда можете отключить рекламу.