My diploma

Page 1

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ имени М.В. Ломоносова ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ КАФЕДРА МАТЕМАТИЧЕСКОЙ КИБЕРНЕТИКИ

ДИПЛОМНАЯ РАБОТА СТУДЕНТА 518 ГРУППЫ Неяглова Дмитрия Александровича. Тема дипломной работы: «ОБ УСЛОВНЫХ ПРОВЕРЯЮЩИХ ТЕСТАХ ОТНОСИТЕЛЬНО ПЕРЕСТАНОВОК ПЕРЕМЕННЫХ БУЛЕВЫХ ФУНКЦИЙ»

Заведующий кафедрой математической кибернетик Алексеев В. Б.

Научный руководитель доцент Романов Д. С.

К защите допускаю « » 2006г. Подпись:

К защите рекомендую « » 2006г. Подпись:

Москва 2006


Содержание 1 Введение

2

2 Постановка задачи

2

3 Понятия и определения 3.1 Тесты . . . . . . . . . . . . . . . . . . 3.2 Таблицы . . . . . . . . . . . . . . . . . 3.2.1 Таблицы типа A . . . . . . . . 3.2.2 Таблицы типа B . . . . . . . . 3.3 Вычисление таблиц . . . . . . . . . . 3.3.1 Вычисление таблиц типа A . . 3.3.2 Вычисление таблиц типа B . . 3.4 Специальные множества . . . . . . . 3.5 Перестановки . . . . . . . . . . . . . . 3.6 Восстановление порядка переменных

. . . . . . . . . .

3 3 3 3 5 5 5 7 7 7 9

. . . . . . . . . . . .

10 10 10 11 11 12 12 13 13 14 15 15 15

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

4 Проверка перестановок n переменных 4.1 Формальное описание работы алгоритма . . . . 4.1.1 Первый шаг алгоритма . . . . . . . . . . 4.1.2 i-ый шаг алгоритма . . . . . . . . . . . . 4.1.3 Результат работы алгоритма . . . . . . . 4.1.4 Количество операций алгоритма . . . . . 4.2 Доказательство корректной работы алгоритма 4.3 Примеры . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Пример 1 . . . . . . . . . . . . . . . . . . 4.3.2 Пример 2 . . . . . . . . . . . . . . . . . . 4.4 Оценки глубины условного проверяющего теста 4.4.1 Нижняя оценка . . . . . . . . . . . . . . 4.4.2 Верхняя оценка . . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . .

5 Диагностика перестановок n переменных 15 5.1 Нижняя оценка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6 Заключение

17


1

Введение

Впервые проблема диагностики управляющих систем была подробно освещена Сергеем Всеволодовичем Яблонским (см. например [5]). Им введены понятия тестов для различных объектов дискретной математики, получены первые существенные результаты в тестировании схем. В данной работе рассматриваются условные тесты относительно произвольных перестановок переменных булевых функций. Изучение проблемы перестановки переменных с помощью условных тестов явилось результатом прочтения работ Михаила Юрьевича Мошкова ([7], [2]) и Дмитрия Сергеевича Романова ([1]). Полученные ими асимптотические результаты для функции Шеннона проверяющих и диагностических тестов относительно перестановок переменных булевой функции, привели к понимаю того, что данный источник неисправности не очень хорошо диагностируется с помощью традиционных тестов. Действительно, получаемая в данной работе оценка функции Шеннона для глубины условного теста является полиномиальной. Помимо этого дана полиномиальная нижняя оценка для длины диагностического условного теста. Верхняя оценка для проверяющего теста строится конструктивно — при помощи специального алгоритма. Далее доказывается, что работа этого алгоритма эквивалентна построению условного теста. Такой подход обусловлен двумя соображениями: 1. Предложенный алгоритм гораздо нагляднее и понятнее сложного условного теста. 2. В случае конкретной реализации любыми программными и/или аппаратными средствами гораздо легче алгоритмизировать задачу по первой части работы, а не по второй.

2

Постановка задачи

Пусть задана булева функция f от n переменных: f = f (x1 , x2 , x3 , . . . xn ). Под действием источника неисправности P функция f переводится в некоторую функцию g, которая также зависит от n переменных: g = g(y1 , y2 , y3 , . . . yn ). Источник неисправности реализует произвольную перестановку переменных функции f , что можно записать следующим образом: g = f (y1 , y2 , y3 , . . . yn ) yi = xj В рамках данной работы мы будем предпологать, что источник неисправностей не является вырожденным, иначе говоря переставляет хотя бы две переменные. Запишем это условие: ∃(yi , xj ) : yi = xj , i 6= j Функцию f в рамках данной работы мы будем называть исходной, или оригинальной функцией, а функцию g — неисправной или результирующей функцией. 2


Нашей задачей будет проверить перестановку n переменных в неисправной функции, то есть посчитать количество заведомо отличимых элементарных транспозиций, на которые раскладывается данная перестановка. Мы также будем считать, что функция f доступна нам в трех видах — в виде таблицы значений, полинома Жегалкина и таблицы специального вида, о которой будет рассказано позднее.

3 3.1

Понятия и определения Тесты

Определение 1. Множество T входных наборов функции f назовем полным проверяющим тестом для этой функции, если для любой функции g, не равной тождественно f и полученной из нее под действием источника неисправностей, в T найдется хотя бы один набор α ˜ такой, что f (˜ α) 6= g(˜ α). Определение 2. Множество T входных наборов функции f назовем полным диагностическим тестом для этой функции, если для любых двух различных функций g 0 и g 00 , не равных тождественно f и полученных из нее под действием источника неисправностей, в T найдется хотя бы один набор α ˜ такой, что g 0 (˜ α) 6= g 00 (˜ α). Определение 3. Условным проверяющим тестом T для функции f будем называть дерево, каждая вершина которого помечена некоторым входным набором функции f , каждое ребро — некоторым числом из области значений f , и каждый путь от корневой вершины до листа содержит набор α ˜ такой, что f (˜ α) 6= g(˜ α), хотя бы для одной функции g, не равной тождественно f и полученной из нее под действием источника неисправностей. При этом множество всех наборов, которыми помечены вершины дерева, представляет собой полный проверяющий тест. Определение 4. Условным диагностическим тестом T для функции f будем называть дерево, каждая вершина которого помечена некоторым входным набором функции f , каждое ребро — некоторым числом из области значений f , и каждый путь от корневой вершины до листа содержит набор α ˜ такой, что g 0 (˜ α) 6= g 00 (˜ α), хотя бы для 0 00 двух различных функций g и g , не равных тождественно f и полученных из нее под действием источника неисправностей. При этом множество всех наборов, которыми помечены вершины дерева, представляет собой полный диагностический тест.

3.2 3.2.1

Таблицы Таблицы типа A

Пусть исходная функция f задана в виде полинома Жегалкина: f = σ1 x1 ⊕ σ2 x2 ⊕ . . . ⊕ σn xn ⊕ σ1,2 x1 x2 ⊕ . . . ⊕ σ(n−1),n xn−1 xn ⊕ . . . ⊕ σ1,2...n x1 x2 . . . xn ⊕ σ, где σ... ∈ {0, 1} Не ограничивая общности, предположим, что последняя константа σ = 0. 3


По представлению функции в виде полинома Жегалкина можно построить таблицу специального вида: x1 x2 x3 .. . xn−1 xn

1 σ1 σ2 σ3

x1 ∗ σ1,2 σ1,3 .. .

... ... ... ... .. .

xn σn,1 σn,2 σn,3 .. .

x1 x2 ∗ ∗ σ1,2,3 .. .

... ... ... ... .. .

xn−1 xn σ(n−1),n,1 σ(n−1),n,2 σ(n−1),n,3 .. .

... ... ... ... .. .

x1 x2 . . . xn−1 ∗ ∗ ∗ .. .

σn−1 σn

σ1,(n−1) σ1,n

... ...

σn,(n−1) ∗

σ1,2,(n−1) σ1,2,n

... ...

∗ ∗

... ...

∗ σ1,2,3,...n

Эта таблица устроена следующим образом: • По вертикали перечислены все переменные функции f , от x1 до xn . • По горизонтали перечислены всевозможные пары, тройки, и так далее, n-ки переменных функции f так же, как они представлены в полиноме Жегалкина. • На пересечении i-ой строки и j-ого столбца стоит коэффициент σ..., соответствующий элементарной конъюнкции группы из заголовка столбца и переменной из заголовка строки. Так, например, на пересечении столбца с заголовком x2 и строки с заголовком x3 стоит коэффициент σ2,3 , отвечающий за конъюнкцию x2 x3 в полиноме Жегалкина. • На пересечении строк и столбцов, конъюнкции символов из заголовков которых не встречаются в полиноме Жегалкина, стоит символ ∗. Таким образом, можно сказать, что если группа переменных, образованная конъюнкцией заголовка столбца и заголовка строки, присутствует в полиноме Жегалкина, то на пересечении данного столбца с данной строкой будет стоять 1, иначе — 0. Там, где в таблице стоят символы ∗, на самом деле тоже должны были находиться единицы. Я пометил такие группы спецальным символом для демонстрации того, что в данных ячейках таблицы ни при каких обстоятельствах не могут встретиться нули. Все символы ∗ при вычислениях следует читать как 1. Так как конкретный полином Жегалкина можно задать с помощью набора σ ˜, при условии наличия договоренности о порядке следования σ..., а в приведенной таблице встречаются все σ..., которые есть в полиноме Жегалкина, нетрудно видеть, что явное выписывание формулы конкретной функции в виде полинома Жегалкина и задание ее в виде таблицы подобного вида эквивалентны. Определение 5. Таблицы, описанные выше, мы будем называть таблицами типа A. Таблица типа A функции f будет обозначаться через A(f ) Приведем небольшой пример: Пусть функция имеет вид f (x1 , x2 , x3 ) = x1 ⊕ x3 ⊕ x2 x3 ⊕ x1 x2 x3 Тогда таблица A(f ) будет выглядеть следующим образом: 4


1 x1 1 ∗ 0 0 1 0

x1 x2 x3 3.2.2

x2 0 ∗ 1

x3 0 1 ∗

x1 x2 ∗ ∗ 1

x1 x3 ∗ 1 ∗

x2 x3 1 ∗ ∗

Таблицы типа B

Пусть в ячейках таблицы на пересечении строки с заголовком xi и столбца с заголовком xl1 . . . xlp стоит значение функции f на наборе α ˜ , где αi = αl1 = . . . = αlp = 1, а все прочие αj = 0. Определение 6. Такие таблицы мы будем называть таблицами типа B. Таблицу типа B функции f мы будем обозначать через B(f ).

3.3 3.3.1

Вычисление таблиц Вычисление таблиц типа A

Для того, чтобы применить таблицы A(f ) в условных тестах, требуется более строго описать процесс их вычисления. Под вычислением таблицы мы будем понимать вычисление всех значений во всех ячейках таблицы. Аналогично, вычислением подтаблицы мы будем называть вычисление всех ячеек подтаблицы. Вычисление таблицы заданной таблицей значений функции f идет слева направо по подтаблицам, а внутри подтаблиц — сверху вниз. Этот процесс похож на процесс поиска коэффициентов в полиноме Жегалкина. Сначала заполняется таблица A1 : σ1 = f (100 . . . 0) σ2 = f (010 . . . 0) ... σn = f (000 . . . 1) После того, как вычислена таблица A1 , с ее помощью вычисляется таблица A2 : σ1,1 = ∗ σ1,2 = σ2,1 = f (110 . . . 0) ⊕ σ1 ⊕ σ2 ... σ1,n = σn,1 = f (100 . . . 0) ⊕ σ1 ⊕ σn ... σn,n = ∗ И так далее. Здесь интересно то, что при вычислении значения функции в правой части выражений подменяются на уже вычисленные σ. Это обусловлено тем, что при вычислении очередной σ˜i используются только те σ, номера которых являются непустыми подмножествами набора ˜i. Так как вычисляется функция от набора, в котором на местах, входящих в ˜i, стоят единицы, то и значение групп переменных, номера которых являются непустым подмножеством ˜i, также будет равняться единице, если только они присутствуют в полиноме Жегалкина. 5


Таким образом, вычисление каждой следующей подтаблицы требует: • Получения значения функции только на одном наборе; • получения значений всех σ с индексами, являющимися непустыми подмножествами индекса того коэффициента, который требуется вычислить. Для примера вычислим таблицу функции f (x1 , x2 , x3 ) и построим по таблице полином Жегалкина. Пусть таблица значений функции выглядит следующим образом: Набор 000 001 010 011 100 101 110 111

Значение функции 0 1 0 1 1 0 0 0

Вычисляем подтаблицу A1 : σ1 = f (100) = 1 σ2 = f (010) = 0 σ3 = f (001) = 1 Записываем результат в таблицу: 1 1 0 1

x1 x2 x3

x1

x2

x3

x1 x2

x1 x3

x2 x3

Вычисляем таблицу A2 : σ1,1 σ1,2 σ1,3 σ2,2 σ3,3 σ2,3

=∗ = σ2,1 = f (110) ⊕ σ2 ⊕ σ1 = 1 = σ3,1 = f (101) ⊕ σ3 ⊕ σ1 = 0 =∗ =∗ = σ3,2 = f (011) ⊕ σ2 ⊕ σ3 = 0

Записываем результат: x1 x2 x3

1 1 0 1

x1 ∗ 1 0

x2 1 ∗ 0

x3 0 0 ∗

x1 x2

6

x1 x3

x2 x3


Вычисляем таблицу A3 : σ1,2,1 = σ1,2,2 = σ1,3,1 = σ1,3,3 = σ2,3,2 = σ2,3,3 = ∗ σ1,2,3 = σ1,3,2 = σ2,3,1 = f (111) ⊕ σ1 ⊕ σ2 ⊕ σ3 ⊕ σ1,2 ⊕ σ1,3 ⊕ σ2,3 = 1 Все, таблица завершена. x1 x2 x3 3.3.2

1 1 0 1

x1 ∗ 1 0

x2 1 ∗ 0

x3 0 0 ∗

x1 x2 ∗ ∗ 1

x1 x3 ∗ 1 ∗

x2 x3 1 ∗ ∗

Вычисление таблиц типа B

Таблицы типа B выгодно отличаются тем, что для вычисления очередной подтаблицы Bi не требуется узнавать значения предыдущих подтаблиц — для вычисления каждой ячейки достаточно значения функции на одном наборе. Фактически, таблицы типа B представляют собой таблицы значений функции.

3.4

Специальные множества

Определение 7. Введем на множестве строк отношение эквивалентности, определенное следующим образом. Строка a эквивалетна строке b, если они совпадают в каждом разряде, кроме разрядов с символом ∗ и разрядов, симметричных относительно транспозиций значений. Определение 8. Строка a подтаблицы Ai (Bi ) называется уникальной, если в пределах Ai (Bi ) нет ни одной строки b, такой, что a ∼ b. Определение 9. Множество Fi подтаблицы Ai (Bi ) определяется как подтаблица подтаблицы Ai (Bi ), в которой содержится по одной строке-представителю от каждого класса, полученного в результате факторизации множеств Ai (Bi ) и столбцу, в разрядах которых эти строки отличаются.

3.5

Перестановки

Как уже было указано ранее, функция f под действием источника неисправности переводится в функцию g. Однако даже если источник неисправности не является вырожденным, некоторые перестановки могут являться неотличимыми. Определение 10. Мы будем называть перестановку неотличимой, если таблица значений функции g совпадает с таблицей значений функции f . Приведем пример: Пусть источник неисправности действует на функцию f (x1 , x2 , x3 ) = x1 ⊕ x2 ⊕ x3 ⊕ x1 x2 x3 . Даже если источник не является вырожденным, всевозможные перестановки переменных в данной функции не породят функцию с таблицей, отличной от таблицы f . Рассмотрим реализацию перестановки на таблице A(f ) произвольной булевой функции f : 7


x1 x2 x3 .. . xn−1 xn

1 σ1 σ2 σ3

x1 ∗ σ1,2 σ1,3 .. .

... ... ... ... .. .

xn σn,1 σn,2 σn,3 .. .

x1 x2 ∗ ∗ σ1,2,3 .. .

... ... ... ... .. .

xn−1 xn σ(n−1),n,1 σ(n−1),n,2 σ(n−1),n,3 .. .

... ... ... ... .. .

x1 x2 . . . xn−1 ∗ ∗ ∗ .. .

σn−1 σn

σ1,(n−1) σ1,n

... ...

σn,(n−1) ∗

σ1,2,(n−1) σ1,2,n

... ...

∗ ∗

... ...

∗ σ1,2,3,...n

Очевидно, что транспозиция любых двух переменных xi реализуется следующим образом: 1. Меняются местами i-ая и j-ая строки таблицы. 2. Меняются местами все столбцы, в заголовках которых присутствует переменная xi и соответствующие им столбцы, в заголовках которых присутствует переменная xj . Первое преобразование, очевидно, единственно. Утверждение 1. Так как в таблицу входит каждая конъюнкция полинома Жегалкина, которая является элементарной и уникальной, причем входит только один раз, второе преобразование тоже является единственным. Утверждение 2. Поскольку на пересечении каждого столбца, в заголовке которого есть переменная xi , с i-ой строкой таблицы стоит символ ∗, а после двух указанных операций на пересечении каждого столбца, в заголовке которого есть переменная xj , с j-ой строкой таблицы также установится символ ∗, и наоборот, конфигурация таблицы и ее основные свойства не изменятся. Как известно, каждая перестановка реализуема несколькими транспозициями, следовательно с помощью нескольких применений упомянутой операции можно реализовать любую перестановку, которую генерирует источник неисправностей. Так как у двух функций f и g с одинаковыми таблицами значений, таблицы A(f ) и A(g) также будут совпадать (по построению), очевидно, что источник неисправности, переводящий одну такую функцию во вторую, с помощью перестановки строк и столбцов переведет таблицу A(f ) в совпадающую с ней таблицу A(g). Это приводит нас к следующей теореме: Теорема 1 (Признак отличимости транспозиции на таблицах вида A(f )). Если множество строк и столбцов изменяется при проведении указанной операции, перестановка переменных, входящих в заголовки строк, учавствующих в процессе, является отличимой. С учетом произвольности перестановок, можно заметить, что для того, чтобы соответствовать данному признаку, переставляемые строки должны быть неэквивалентны. Так как все сказанное ранее можно повторить и для таблиц типа B, Утверждение 3. Все утверждения этой главы верны и для таблиц типа B.

8


3.6

Восстановление порядка переменных

Мы будем предполагать, что нам известно, как восстановить порядок переменных неисправной функции g, если нам полностью известна таблица ее значений. Так как ранее уже было сказано о том, что представление функции в виде таблицы значений, полинома Жегалкина или таблиц типа A и B эквивалентны, достаточно восстановить одно из этих представлений, чтобы определить явный вид перестановки. Для понимания дальнейших действий, нам понадобится сформулировать одно свойство перестановок на таблицах: Утверждение 4. Переставляемые столбцы переставляются только в рамках подтаблиц A(f )i (B(f )i . Это означает, что никакой столбец из подтаблицы A(f )i (B(f )i не может встать на место столбца из подтаблицы A(f )j B(f )j если i 6= j. Действительно, это следует из описания перестановок на таблицах, где говорится о том, что при перестановках заменяются только соответствующие столбцы таблиц, которые, по определению подтаблиц всегда находятся в одной из них. Для примера рассмотрим произвольную булеву функцию f (x1 . . . xn ), полином Жегалкина которой содержит только отдельные переменные и конъюнкции степени не выше 2. Пусть на нее подействовал источник неисправностей P , образовав функцию g. По указанному свойству в таблице A(g), как и в таблице A(f ), все подтаблицы Ai где i > 2, являются нулевыми. Запишем ненулевую часть таблицы A(g):

y1 y2 .. .

1

y1 ∗

.. .

.. .

y2 ∗ .. .

yn

... ... ... ... ...

yn

.. . ∗

В пустых ячейках данной таблицы стоят некоторые σ. Получение их конкрентных значений (то есть вычисление таблицы) можно, по предложенному ранее способу, осуществить, получив значения функции g на n2 + n наборах. После этого можно будет восстановить порядок следования переменных. Теорема 2. Для восстановления перестановок k переменных функции g(y1 . . . yn ), полученной в результате действия некоторого фиксированного источника неисправности P0 на функцию f (x1 . . . xn ), достаточно вычислить подтаблицу T из t строк и произвольного (но ограниченного снизу n) количества столбцов, при выполнении следующих условий: 1. Известно, что множество переставляемых переменных содержится в множестве строк T . 2. k строк в T различны. 3. Множество T является подтаблицей Ai .

9


Доказательство. Введем вспомогательную функцию ϕ(y1 . . . yn ), которая задана таблицей A(ϕ). Внутри множества T A(ϕ) совпадает с A(g), а вне данного множества таблица A(ϕ) нулевая. Заметим, что так как A(g) вообще говоря не является нулевой вне указанного множества, таблицы значений g и ϕ не совпадают. Введем также вспомогательную функцию ψ(x1 . . . xn ), которая задана таблицей A(ψ). Внутри множества T A(ψ) совпадает с A(f ), а вне множества T таблица A(ψ) также нулевая. Согласно утверждению 4, действие любого источника неисправности независимо по подтаблицам Ai , а множество T согласно условию 3 является подмножеством некоторого множества Ai , можно утверждать, что действие источника неисправности P0 на функцию ψ породит функцию ϕ. Так как k строк в T различны по условию 2, согласно признаку отличимости на данном множестве можно отличить перестановку t переменных. Из свойства 1 также следует, что t 6 k. Следовательно, перестановку k переменных отличить можно заведомо. Поскольку теперь у нас есть две функции ψ и ϕ, заданные известными таблицами A(ψ) и A(ϕ), удовлетворяющие теореме 1, мы можем выяснить характер работы источника неисправности P0 на указанном подмножестве переменных мощности k. Так как источник неисправности является фиксированным, указанный характер сохранится и для функций f и g. В качестве следствия из данной теоремы, взяв в качестве k и t значение n, можно сказать, что для восстановления порядка следования n переменных, хватит подтаблицы {1..n)} × {C}, где C — некоторое множество столбцов лежащее внутри некоторого Ai , если только все строки в указанной подтаблице различны.

4

Проверка перестановок n переменных

4.1 4.1.1

Формальное описание работы алгоритма Первый шаг алгоритма

1. Объявляем множество G = {Ø} 2. Строим в подтаблице B(f )1 множество F1 . По очевидным соображениям в подтаблице B(f )1 может быть либо два, либо ни одного класса эквивалетности. Поэтому множество F1 может либо состоять из подтаблицы размера 2 × 1, либо вообще не существовать. В последнем случае следует перейти к следующему шагу алгоритма. 3. Выделяем в таблице B(g)1 подмножество, совпадающее в номерах строк и столбцов с множеством F1 . 4. Вычисляем все ячейки подтаблицы B(g)1 , которые попали в указанное подмножество и их столбцы (то есть весь первый столбец).

10


5. Рассматриваем каждую ячейку. Пусть текущая ячейка находится на пересечении строки с заголовком yj и столбца с заголовком 1. Пусть также строка yj является представителем того же класса эквивалентности, что и строки yj1 . . . yjn−1 . Если значение данной ячейки в подтаблице B(g)1 не совпадает со значением ячейки с тем же номером в подтаблице B(f )1 : (a) Добавляем в множество G элемент (yj yj1 . . . yjn−1 ) 6. Переходим к следующему шагу. 4.1.2

i-ый шаг алгоритма

Рассматриваем подтаблицы B(f )i таблицы B(f ), а также B(g)i таблицы B(g). 1. Если заголовки некоторых столбцов подтаблицы B(f )i являются надмножествами элементов множества G, вычеркиваем их из подтаблицы. 2. На оставшихся столбцах и всех строках строим в таблице B(f )i множество Fi . Если данное множество построить невозможно, переходим к следющему шагу алгоритма. 3. Построенное множество Fi переносим на подтаблицу B(g)i , то есть выделяем в данной подтаблице множество строк и столбцов так, что их номера совпадают с номерами, составляющими множество Fi . 4. Вычисляем те ячейки подтаблицы B(g)i , номера которых есть в множестве Fi . 5. Рассматриваем каждую ячейку. Пусть текущая ячейка находится на пересечении строки с заголовком yj и столбца с заголовком yl1 yl2 . . . yli−1 . Если значение данной ячейки в подтаблице B(g)i не совпадает со значением ячейки с тем же номером в подтаблице B(f )i : (a) Если элемент, представляющий собой некоторое подмножество ylp . . . ylq множества yj yl1 yl2 . . . yli−1 уже имеется в множестве G, ничего не делаем, иначе добавляем туда элемент (yj yl1 yl2 . . . yli−1 ). (b) Вычеркиваем данную строку из рассмотрения на данном шаге. 6. Переходим к следующему шагу. 4.1.3

Результат работы алгоритма

После работы алгоритма мы получили множество G, состоящее из элементов вида (yp . . . yq ). Его мощность и будет равняться числу переменных, изменивших свою позицию при перестановке.

11


4.1.4

Количество операций алгоритма

Каждый шаг алгоритма требует вычисления таблицы Fi . Максимальное число классов эквивалентности для любой подтаблицы B(f )i составляет n, следовательно множество Fi состоит максимум из n строк и n столбцов. Таким образом для вычисления Fi на i-ом шаге алгоритма требуется не более, чем n2 значений функции g. Нетрудно заметить, что прочие операции в алгоритме не требуют обращения к функции g. Поскольку всего подтаблиц B(f )i n штук, весь алгоритм требует n3 обращений к функции g.

4.2

Доказательство корректной работы алгоритма

Лемма 1. Пусть переменная xi булевой функции f (˜ x) перешла в переменную yj булевой функции g(˜ y ). Пусть также транспозиция xi ↔ yj отличима, причем исключительно на наборе α ˜ и парном ему. В этом случае на некотором шаге алгоритма будет затребовано значение g(˜ α). Доказательство. Пусть в наборе α ˜ αi1 = . . . = αil = 1. По условию леммы f (˜ α) 6= g(˜ α). По построению таблиц B(f ) и B(g) из этого следует, что aij 6= bij , где aij — ячейка таблицы B(f ), находящаяся на пересечении строки с заголовком xi1 и столбца с заголовком xi2 . . . xil . Конечно, то же значение будет присутствовать во всех прочих симметричных относительно транспозиции ячейках. bij — ячейка таблицы B(g), находящаяся на пересечении строки с заголовком yi1 и столбца с заголовком yi2 . . . yil . Так как по условию леммы транспозиция отличима исключительно на указанном наборе, строки xi1 и xj1 таблицы B(f ) будут отличаться в одном разряде. Следовательно, они попадут в разные классы эквивалетности. Для каждого из этих классов по построению алгоритма будет вызвана функция g для каждого из значений, которыми отличаются их представители. В данном случае они отличаются одним значением, следовательно потребуется значение функции g на наборе α ˜. Теорема 3. Предложенный алгоритм корректно распознает произвольную перестановку n переменных булевой функции f . Доказательство. Для доказательства работы алгоритма следует показать следующие факты: 1. Для любой отличимой перестановки некоторое подмножество наборов, на которых вычисляется значение функции g, является проверяющим тестом функции f относительно произвольных перестановок переменных. 2. Если множество G непусто, произошла хотя бы одна неисправность. 3. Для любой отличимой перестановки множество G содержит столько элементов, сколько переменных оказалось не на своем месте. Если первое верно, то второе верно, поскольку множество G дополняется исключительно на наборах, где функции g и f отличаются, а если некоторое подмножество , на которых вычисляется значение функции g, является проверяющим тестом функции f 12


относительно произвольных перестановок переменных, то будет опознаваться любая отличимая неисправность и следовательно по множеству G это можно будет определить. Если бы в результате работы алгоритма формировался бы минимальный проверяющий тест, то третье было бы верно автоматически. Однако тест не минимальный. Таким образом, нам нужно убедиться в том, что одна и та же неисправность не попадает в множество G два или более раз. Такая возможность автоматически исключается тем, что еслли в какой-либо переменной или группе переменных уже была найдена неисправность, то любые надмножества данной переменной илии группы переменных больше не тестируются. Осталось локазать первое утверждение. Поскольку любую перестановку можно представить в виде последовательности транспозиций, а для каждой из них будет верно условие леммы 1. Исходя из этого, а также так как для любой транспозиции xi ↔ yj будут сравниваться значения f (σ1 . . . xi . . . σn ) и g(σ1 . . . yi . . . σn ), а также f (σ1 . . . xj . . . σn ) и g(σ1 . . . yj . . . σn ), некоторое подмножество наборов, на которых требуется значение функции g, составит для функции f проверяющий тест. Теорема 4. Работа предложенного алгоритма эквивалентна построению условного теста для функции f максимальной глубины n3 . Доказательство. Будем формировать условный тест по индукции. Рассмотрим iую вершину дерева. Если алгоритм требует вычислить значение g на наборе α ˜, присваиваем вершине набор α ˜ , а потом добавляем две ветки — g(˜ α) = 0 и g(˜ α) = 1. Таким образом составление теста не зависит от конкретных значений функции g, полученных в результате работы алгоритма. Поскольку прямые ветки теста добавляются исключительно для вычисления множеств Fi , максимальная глубина теста равна количеству наборов, на которых вычисляется g. Оно, по сказанному ранее, равняется n3 .

4.3 4.3.1

Примеры Пример 1

f (x1 . . . xn ) = x1 ⊕ x3 ⊕ x5 Составим B(f ) (запишем ненулевую часть):

x1 x2 x3 x4 x5

1 1 0 1 0 1

Напишем алгоритм (состоит из одного шага): 1. G = {Ø} 2. F1 = {1, 2} × {1} 13


3. g11 = g(100 . . . 0), g21 = g(010 . . . 0) 4.

• Если g11 6= f11 = 1, добавляем в множество G элемент (y1 ). • Если g12 6= f12 = 0, добавляем в множество G элемент (y2 ) • И так далее.

• Пусть произошла перестановка x3 ↔ x6 . В таком случае в множество G попадут два элемента, первый раз на вызове функции g(0010 . . . 0), а второй раз — на вызове функции g(000001 . . . 0). • Пусть не произошло ни одной перестановки. Тогда ни одно из условий g1i 6= f1i не выполнится и множество G останется пустым. • Пусть произошла перестановка x1 ↔ x3 , x2 ↔ x5 . Множество G будет содержать один элемент, поскольку транспозиция x1 ↔ x3 является неотличимой. • Пусть произошла перестановка x1 ↔ x2 , x3 ↔ x4 , x5 ↔ x6 . Множество G будет содержать шесть элементов — (y1 ), (y3 ), (y5 ), (y6 ), (y2 ), (y4 ). 4.3.2

Пример 2

f (x1 . . . xn ) = x1 ⊕ x2 ⊕ x1 x2 ⊕ x3 x5 Составим B(f ):

x1 x2 x3 x4 x5

1 1 1 0 0 0

x1 ∗ 0 1 1 1

x2 1 ∗ 1 1 1

x3 1 1 ∗ 0 0

x4 1 1 0 ∗ 0

x5 1 1 1 0 ∗

F1 = {1, 2} × {1} F2 = {1..5} × {2..6} • Пусть произошла перестановка x1 ↔ x2 . На первом шаге алгоритма G = {Ø}. На втором шаге алгоритма G = {(y1 y2 ), (y2 y1 )}. • Пусть произошла перестановка x2 ↔ x3 . На первом шаге алгоритма G = {(y2 ), (y3 )}. На втором шаге алгоритма будут попытки добавить следующие элементы: (y2 y1 ), (y3 y1 ), (y4 y2 ), (y4 y3 ). Нетрудно заметить, что во все эти элементы в качестве подмножества входит либо (2), либо (3), поэтому ни один из них не попадет в G. • Пусть произошла перестановка x3 ↔ x4 , x1 ↔ x2 . На первом шаге ничего отличить нельзя, G = {Ø}. На втором шаге в G будут последовательно добавлены: (y1 y2 ), (y2 y1 ), (y3 y5 ), (y5 y3 ).

14


4.4 4.4.1

Оценки глубины условного проверяющего теста Нижняя оценка

Рассмотрим функцию f (˜ x) = x1 ⊕ x1 x2 ⊕ x1 x2 x3 ⊕ x1 x2 . . . xn Рассмотрим перестановку ϕ x1 ↔ y2 x2 ↔ y3 ... xn ↔ y1 Очевидно, что для проверки перестановки ϕ хватит множества T наборов (или парных им) следюущего вида: 1000 . . . 00 1100 . . . 00 ... 1111 . . . 10 Если из множества T убрать произвольный набор с k единицами, транспозиция xi ↔ xi+1 становится неотличимой. Поскольку для любого набора α ˜ , не входящего в множество T (или парное ему) для перестановки ϕ f (˜ α) = g(˜ α) = 0, этот набор не может входить ни в одни проверяющий тест для f относительно ϕ. Таким образом, для того, чтобы проверить перестановку ϕ, данное множество должно входить в любой условный тест, проверяющий произвольную перестановку n переменных в виде некоторого пути. Это значит, что минимальная глубина теста равна мощности данного множества, то есть n−1. По определению функции Шеннона, таким образом, n < l(n) 4.4.2

Верхняя оценка

Так как ранее (см. теорему 4) был построен условный тест, проверяющий перестановку n переменных произвольной булевой функции с глубиной n3 , по определению функции Шеннона: n < l(n) 6 n3

5 5.1

Диагностика перестановок n переменных Нижняя оценка

Рассмотрим функцию q(˜ x) = x1 x2 . . . xd n2 e 15


Лемма 2. В функции q диагностируемы перестановки только одного типа: (xi ↔ xj ), xi ∈ X1 , xj ∈ X2 . Доказательство. Произвольная перестановка любого подмножества переменных множества [X1 |x ∈ {x1 . . . d n2 e}] и произвольная перестановка любого подмножества множества [X2 |x ∈ {d n2 e + 1 . . . xn }], этой функции, очевидно, неотличимы и недиагностируемы. Рассмотрим перестановку xli ↔ xlj , где ∀i xli ∈ X1 и ∀j xlj ∈ X2 . Пусть источник неисправностей P1 породил вследствие такой перестановки функцию q 0 = P1 (q). Рассмотрим теперь произвольную перестановку xlv ↔ xlw , где ∀v : v = i lv 6= li ∀v ∃i : xlv = xli xlv ∈ X1 и

∀w : w = j lw 6= lj ∀w ∃j : xlw = xlj xlw ∈ X2

Пусть источник неисправностей P2 породил вследствие такой перестановки функцию q 00 = P2 (q). По условиям ∀w ∃j : xlw = xlj и ∀w ∃j : xlw = xlj таблицы значений q 0 и q 00 совпадают, но по условиям ∀v : v = i lv 6= li и ∀w : w = j lw 6= lj сами перестановки не совпадают. Следовательно, они являются неотличимыми. Обратим внимание, что невозможность выполнить приведенные условия появляется лишь при перестановке двух переменных. Докажем следующее утверждение: Лемма 3. Глубина минимального условного диагностического теста относительно 2 перестановок 2 переменных функции q составляет n4 . Доказательство. Рассмотрим множество T состоящее из наборов вида 011111 . . . 1|100 . . . 0 011111 . . . 1|010 . . . 0 ... 011111 . . . 1|000 . . . 1 101111 . . . 1|100 . . . 0 ... 101111 . . . 1|000 . . . 1 ... 111111 . . . 0|000 . . . 1 Данное множество является полным диагностическим тестом относительно транспозиции двух переменных xi ↔ xj , xi ∈ X1 , xj ∈ X2 , поскольку отличает таковую транспозицию на наборе 11111 . . . 0 . . . 1|000 . . . 1 . . . 0, где в первой части 0 стоит на i-ом месте, а во второй 1 стоит на j-ом месте. 16


Множество T является минимальным тестом, поскольку выкинув произвольный набор 11111 . . . 0 . . . 1|000 . . . 1 . . . 0, где в первой части 0 стоит на i-ом месте, а во второй 1 стоит на j-ом месте, оно лишается возможности тестировать перестановку переменных xi ↔ xj . Никакое другое множество наборов, кроме парного данному, не является тестом для функции q, поскольку при невырожденной перестановке значение функции q 0 на любых наборах, не принадлежащих указанным множествам, равно значению функции q и есть 0. Следовательно, любой условный диагностический тест относительно транспозиции двух переменных функции q должен содержать в качестве пути множество наборов 2 T , мощность которого составляет d n2 e · (n − d n2 e) = n4 Поскольку глубина условного диагностического теста относительно перестановоки n переменных некоторой булевой функции f не меньше глубины условного диагностического теста относительно перестановоки двух переменных той же функции, а также по определению функции Шеннона, l(n) >

6

n2 4

Заключение

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

Список литературы [1] Романов Д.С. О функции Шеннона длины полного диагностического теста относительно перестановок переменных булевой функции. Труды VI Межд. конф. «Дискретные модели в теории управляющих систем». (М.: МАКС Пресс, 2004 г.) с. 69-72 [2] Мошков М.Ю. Деревья решений. Теория и приложения (учебное пособие). Нижний Новгород, изд-во Нижегородского университета, 1994. [3] Мошков М.Ю. Элементы математической теории тестов. Методические указания. Горький, изд. ГГУ, 1986. [4] Яблонский С.В. Введение в дискретную математику. М.: Наука, 1979. [5] Чегис И.А., Яблонский С.В. Логические способы контроля электрических схем. Труды МИАН СССР, 1958, т.51, с.270-360.

работы

[6] Соловьев Н.А. Тесты (теория, построение, применение). Новосибирск: Наука, 1978. 17


[7] Мошков М.Ю. Условные тесты. Проблемы кибернетики. вып. 40, М.:Наука, 1983, с.131-170. [8] Яблонский С.В. Основные понятия кибернетики - в кн. Проблемы кибернетики, вып. 2, М.: Наука, 1959, с.7-38. [9] Надежность управляющих систем. - Изд-во МГУ - 1991 - сост. Яблонский С.В.

18


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.