Московский государственный университет путей сообщения
Опубликован: 06.09.2012 | Доступ: свободный | Студентов: 1233 / 168 | Оценка: 5.00 / 5.00 | Длительность: 35:22:00
Специальности: Разработчик аппаратуры
Лекция 34:

Сокращение диагностической информации с использованием хеш-функций

< Лекция 33 || Лекция 34: 12
Аннотация: Аннотация: В лекции описан метод сокращения ДИ, базирующийся на использовании свертки, реализуемой с помощью пяти различных типов хеш-функций. Представлены экспериментальные данные, подтверждающие их высокую эффективность.

Сокращение объема словаря неисправностей при помощи масок обусловлено видом исходного словаря. Так, в зависимости от первоначального словаря неисправностей объем оптимальной общей маски может варьироваться от \log_2|S| до |S|. Экспериментальные результаты, приведенные в предыдущей лекции, показывают, что хотя объем единой маски, полученной жадным алгоритмом меньше |S| - верхней границы объема оптимальной маски, все же этот объем значительно больше минимальной нижней границы, т. е. величины \log_2|S|.

Для большего сокращения объема словаря неисправностей можно применить различные дополнительные преобразования, в частности хеш-функции [1], с помощью которых для каждой из реакций, хранящейся в СПР, можно получить компактную свертку. Идея применения хеш-функции была высказана Сперанским Д.В. в 70-х годах в одной из его работ по сокращению ДИ, где в качестве такой функции использовалось суммирование по некоторому модулю. Ниже рассматривается несколько других вариантов таких преобразований, предложенных в [1] его учениками.

Обозначим через H(r), r\le m|\tau|, множество функций вида B^{m|\tau|}\toB^r.

Результатом применения функции h\in H(r) к ДИ, представленной некоторым СПР T, назовем матрицу T^h, в которой строка T_i^h, 0\le i\le|S|-1,

есть результат применения функции h к строке T_i СПР, соответствующей i-му техническому состоянию ЦУ:

T_i^h=h(T_i)

Строку T_i^h можно интерпретировать как компактную свертку полной реакции i-ой модификации ДУ, а матрицу T^h - как результат сокращения ДИ.

Из всех функций множества H(r) подходящими для сокращения ДИ являются только такие h, для которых выполняется условие

T_i^h \ne T_j^h,i \ne j ( 34.1)

т. е. которые сохраняют неизменной глубину диагностирования.

Из того, что T^h - бинарная матрица, очевидно, что условие (34.1) может выполняться только когда выполняется условие

r\ge\lceil\log_2|S|\rceil ( 34.2)

В качестве меры сокращения ДИ, представленной СПР T, с помощью функции h\in H(r) введем величину

E(h)=\cfrac{\lceil\log_2|S|\rceil }{r}

которую назовем эффективностью сжатия. С учетом (34.2) ясно, что для функции h максимальное значение величины E(h), соответствующее наилучшему сжатию информации при выполнении условия (34.1), равно 1.

В литературе описано множество различных видов хеш-функций и методов их построения [2]. Проведенные авторами работы [1] эксперименты показали целесообразность применения для сокращения ДИ двух разновидностей хеш-функций - полиномиальной (мультипликативной) и позиционной. Преимуществом этих хеш-функций является их простота и высокая скорость вычисления. Дополнительным позитивным фактором, влияющим на выбор этих функций, является наличие единственного (за исключением разрядности результата) параметра, определяющего эти функции.

Полиномиальная хеш-функция h\in H(r) в качестве результата выдает последние r бит значения многочлена X_{n-1}+X_{n-2}P+X_{n-3}P ^2+\ldots++X_{0}P^{n-1}, т. е.


h(X)=( X_{n-1}+X_{n-2}P+X_{n-3}P ^2+\ldots++X_{0}P^{n-1})\mod{ 2^r},

где X=X_0,X_1,\ldots,X_{n-1} - входной битовый набор (вектор полной реакции ДУ), P - параметр хеш-функции, - целое нечетное число из диапазона [1,2^r).

Для вычисления результата позиционной хеш-функции h\in H(r) от аргумента X вычисляются значения

h_0(X), h_1(X),\ldots, h_n(X)

Величина h_0(X) принимается равной нулю, а для определения значения h_i(X), 1\le i\le n вычисляется величина


k_i=(X_{i-1}+\ldots+X_0P^{i-1}+(r-1)P^i)\mod{r},

где P - параметр хеш-функции, после чего значение h_i(X) полагается равным h_i(X)= h_{i-1}(X)\oplus(2^{k_j}X_{i-1}). Здесь \oplus - побитовая операция сложения по модулю 2. В качестве результата хеш-функция h(X) возвращает значение h_n(X).

Наряду с хеш-функциями стандартного вида рассмотрим функции, заданные сигнатурными анализаторами различной структуры.

Первое из таких преобразований определим сигнатурным преобразователем, изображенным на рис. 26.3 и заданным соотношением


h_i=\left [ 
\begin{array}{ccccc}
c_{r-1}& c_{r-2}&\ldots &c_{1}& c_{0}\\
1& 0 &\ldots &0& 0\\
0& 1 &\ldots &0& 0\\
\vdots& \vdots &\ddots &\vdots & \vdots \\
0& 0 &\ldots &1& 0\\
\end{array}
\right ]
h_{i-1}+\left [ 
\begin{array}{c} 1\\0\\0\\\vdots\\0 \end{array}
\right ]R_i.
( 34.3)

Здесь h_i представляет содержимое сдвигового регистра - вектор, состоящий из r двоичных значений. В качестве начального содержимого h_0 сдвигового регистра примем нулевое значение. В этом случае r значений c_0,c_1,\ldots,c_{r-1} можно сопоставить разрядами целого числа P из диапазона 0\le P\le 2^r, представленного в двоичной форме. Результатом преобразования будем считать r бит содержимого сдвигового регистра после подачи на вход последовательно всей реакции ДУ.

Другие два преобразования будем задавать аналогичным образом, взяв две разновидности многовходного сигнатурного анализатора, предложенные в [3,4] . На каждом такте на вход таких анализаторов подается сразу r бит выходной реакции ДУ. В таком случае недостающие биты данных при

m|\tau|\mod{r}\ne 0,

будем заполнять нулями.

Одна разновидность такого сигнатурного анализатора задается соотношением


h_i=\left [ 
\begin{array}{ccccc}
c_{r-1}& c_{r-2}&\ldots &c_{1}& c_{0}\\
1& 0 &\ldots &0& 0\\
0& 1 &\ldots &0& 0\\
\vdots& \vdots &\ddots &\vdots & \vdots \\
0& 0 &\ldots &1& 0\\
\end{array}
\right ]
h_{i-1}+\left [ 
\begin{array}{l} R_{(i-1)r+1}\\ R_{(i-1)r+2}\\ R_{(i-1)r+3}\\\vdots\\ R_{ir} \end{array}
\right ].
( 34.4)

а вторая -


h_i=\left [ 
\begin{array}{ccccc}
c_{r-1}& c_{r-2}&\ldots &c_{1}& c_{0}\\
1& 0 &\ldots &0& c_{1}\\
0& 1 &\ldots &0& c_{2}\\
\vdots& \vdots &\ddots &\vdots & \vdots \\
0& 0 &\ldots &1& c_{r-1}\\
\end{array}
\right ]
h_{i-1}+\left [ 
\begin{array}{l} R_{(i-1)r+1}\\ R_{(i-1)r+2}\\ R_{(i-1)r+3}\\\vdots\\ R_{ir} \end{array}
\right ].
( 34.5)

Так же как и в предыдущем случае в качестве начального содержимого h_0 сдвигового регистра используется нулевой вектор, а значения c_0,c_1,\ldots,c_{r-1} будем определять как значения двоичных разрядов некоторого целого числа P.

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

В дальнейшем вышеперечисленные хеш-функции будем обозначать в порядке их определения соответственно через f_1, f_2, f_3, f_4 и f_5.

Как видно из определений, любую из приведенных хеш-функций можно считать заданной, если зафиксирован параметр P. Логично предположить, что не для любого параметра P для хеш-функции h будет выполняться условие (34.1) и, более того, что выполнение условия (34.1) для хеш-функции для некоторого СПР T не гарантирует выполнение этого условия для другого СПР.

Оценим вероятность того, что функция h\in H(r) для ДУ с множеством технических состояний S будет удовлетворять условию (34.1). Предположим, что значения хеш-функции h являются равновероятными. Будем получать новые значения хеш-функции последовательно. Получая очередное значение считаем, что все полученные значения различны. Тогда вероятность того, что i-е (начиная с нуля) значение функции h не совпадает ни с одним из полученных ранее, равна \cfrac{2^r-i}{2^r}. Таким образом, вероятность того, что для h\in H(r) выполняется (34.1), равна величине

\prod\limits_{i=0}^{|S|-1}{\cfrac{2^r-1}{2R}} ( 34.6)

Зная полученное значение вероятности, можно подсчитать число шагов перебора, которое гарантирует (с вероятностью 99%) получение хеш-функции, обеспечивающей выполнение условия (34.1). Обозначим это число через M. Значения величины M для некоторых значений |S| и r приведены в табл. 34.1. Здесь M_i, 1\le i\le 4, - значения M для r=r_i. Как видно из этой таблицы, содержащей информацию о количестве итераций, необходимых для получения хеш-функции, с помощью небольшого перебора вероятнее всего получить хеш-функцию, обеспечивающую эффективность сжатия в диапазоне от 0.58 до 0.67.

Таблица 34.1.
|S| r_1 E(h_1) M_1 r_2 E(h_2) M_2 r_3 E(h_3) M_3 r_4 E(h_4) M_4
100 12 0.5833 14 11 0.6364 52 10 0.7000 681 9 0.7778 
1.4\cdot 10^5
250 13 0.6154 212 12 0.6667 10776 11 0.7273 
3.5\cdot 10^{7} 10 0.8000 
1.2\cdot 10^{15}
300 15 0.6000 16 14 0.6429 71 13 0.6923 1174 12 0.7500 
3.4\cdot 10^{5}
500 15 0.6000 210 14 0.6429 10094 13 0.6923 
2.6\cdot 10^{7} 12 0.7500 
2.9\cdot 10^{14}
800 17 0.5882 51 16 0.6250 615 15 0.6667 85895 14 0.7143 1.9\cdot 10^{9}
900 17 0.5882 100 16 0.6250 2271 15 0.6667 1.2\cdot 10^{6} 14 0.7143 3.8\cdot 10^{11}
1100 18 0.6111 45 17 0.6471 468 16 0.6875 49135 15 0.7333 5.8\cdot 10^{8}
1500 18 0.6111 337 17 0.6471 25269 16 0.6875 1.5\cdot 10^{8} 15 0.7333 5.9\cdot 10^{15}
< Лекция 33 || Лекция 34: 12
Дмитрий Медведевских
Дмитрий Медведевских

Добрый день  можно поинтересоваться где брать литературу предложенную в курсе ?Большинство книг я не могу найти  в известных источниках