Научная статья на тему 'Нижняя оценка ненадежности неветвящихся программ с оператором условной остановки'

Нижняя оценка ненадежности неветвящихся программ с оператором условной остановки Текст научной статьи по специальности «Математика»

CC BY
73
24
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
БУЛЕВЫ ФУНКЦИИ / НЕВЕТВЯЩИЕСЯ ПРОГРАММЫ / ОПЕРАТОР УСЛОВНОЙ ОСТАНОВКИ / СИНТЕЗ / НАДЕЖНОСТЬ / BOOLEAN FUNCTIONS / NOBRANCHING PROGRAMS / CONDITIONAL STOP-OPERATOR / SYNTHESIS / RELIABILITY

Аннотация научной статьи по математике, автор научной работы — Алехина Марина Анатольевна, Грабовская Светлана Михайловна

Рассматривается реализация булевых функций неветвящимися программами с оператором условной остановки. Предполагается, что функциональные операторы с вероятностью подвержены инверсным неисправностям на выходах, а операторы условной остановки абсолютно надежны. Доказано, что любую функцию f ∈ K (класс K найден явно) нельзя реализовать неприводимой неветвящейся программой с ненадежностью меньше ε(1 ε)m, где m число функциональных операторов в программе. Из этого и ранее полученного результата о верхней оценке ненадежности неветвящихся программ следует, что почти все функции можно реализовать асимптотически оптимальными по надежности неветвящимися программами, функционирующими с ненадежностью, асимтотически равной ε при ε→0.

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

Похожие темы научных работ по математике , автор научной работы — Алехина Марина Анатольевна, Грабовская Светлана Михайловна

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

Текст научной работы на тему «Нижняя оценка ненадежности неветвящихся программ с оператором условной остановки»

УДК 519.718

М. А. Алехина, С. М. Грабовская

НИЖНЯЯ ОЦЕНКА НЕНАДЕЖНОСТИ НЕВЕТВЯЩИХСЯ ПРОГРАММ С ОПЕРАТОРОМ УСЛОВНОЙ ОСТАНОВКИ

Аннотация. Рассматривается реализация булевых функций неветвящимися программами с оператором условной остановки. Предполагается, что функциональные операторы с вероятностью е (ее (0,1 /2)) подвержены инверсным неисправностям на выходах, а операторы условной остановки абсолютно надежны. Доказано, что любую функцию f е K (класс K найден явно) нельзя реализовать неприводимой неветвящейся программой с ненадежностью меньше е(1 - е)т , где m - число функциональных операторов в программе. Из этого и ранее полученного результата о верхней оценке ненадежности невет-вящихся программ следует, что почти все функции можно реализовать асимптотически оптимальными по надежности неветвящимися программами, функционирующими с ненадежностью, асимтотически равной е при е^-0.

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

Abstract. The article considers a problem of synthesis of nobranching programs with conditional stop-operator. All functional operators are supposed to be subject to output inverse failures with probability е (ее (0,1/2)). Conditional stop-operators

are absolutely reliable. Any boolean function f е K (class K is found explicitly) is proved to be impossible to realize by irreducible nobranching program with unreliability of less than е(1 - e)m, where m - the number of functional operators in the program. These and the previous results on the upper bound for the unreliability of the nobranching programs prove that almost all functions can be realized by asymptotically optimal reliable nobranching programs that operate with unreliability asymptotically equal to е at е ^ 0.

Key words: boolean functions, nobranching programs, conditional stop-operator, synthesis, reliability.

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

Пусть X ={Х1,..., xn} - множество независимых булевых переменных, x = (x1,..., xn) - набор независимых переменных, neN. Введем множество переменных Y = {y1,..., yl} , которое назовем множеством внутренних переменных, l е N. Кроме того, обозначим через z выходную переменную.

Пусть далее a е Y U {z}, by,., bd е X U Y U {z} (d е{1, ., n}), h - булева функция из базиса B, зависящая не более чем от d переменных. Вычислительной командой p назовем выражение p: a = h(,...,bd). Переменную a назовем выходом вычислительной команды, переменные ¿1,...,bd - входами этой команды.

Пусть теперь а є X и У и {г} . Командой остановки р назовем выражение р: 81ор(а). Переменную а назовем входом команды остановки р.

Последовательность Рг = р1...р,...рЬ, состоящая из вычислительных команд и команд остановки, называется неветвящейся программой с условной остановкой, если при любом3 є {1, ..., Ь} каждый вход команды pj есть либо независимая переменная, либо выход некоторой вычислительной команды.

Неветвящаяся программа работает в дискретные моменты времени ґ = 0, 1, 2, ..., не изменяет значения независимых переменных и изменяет значения внутренних переменных у, (I є {1, ..., п}) и значение выходной переменной г.

Пусть р?1,..., р{ - все команды остановки из Рг, причем ґ1 <...< ґг, т.е.

г - число команд остановки. Тогда через Sj будем обозначать 3-ю команду остановки программы Рг (т.е. s ,■ = р3 ), а через Ч] - аргумент команды оста-

^ 3

новки Sj.

Будем говорить, что первая команда остановки 51 прекращает вычисления программы Рг на наборе х, если ql (х) = 1; к-я команда остановки sk

(к є {2, ..., г}) прекращает вычисления программы Рг на наборе х, если

ql(х) =... = qk-і(х) = 0, qk(х) = 1. Результат действия программы Рг на наборе х обозначим через Рг(х) и определим следующим образом:

г(х; Ґ1), если ql (х) = 1;

Рг(х) = <! г(х; ґк), если ql(х) =... = qk-1 (х) = 0, qk = 1(к = 2,..., г); г (х; Ь), если ql( х) = . = qг (х) = 0;

т.е. Рг( х) равно значению выходной переменной г в момент остановки программы. Легко видеть, что

Рг(х) = ql(х)г(х; ^) V (1 (х)q2(х)г(х; ¿2) V ... V (1(х)ъ(х) • • •

• • -Щ-1 (х)(к(х)г(х; ^) V ... V ((х)(2(х) ••• (.-1 (х)(г(х)г(х; ґг) V ...

... V (1(х)Ч2(X)• • • Яг(х)г(х; Ь). (1)

Иногда формулу (1) удобнее использовать в преобразованном виде:

Рг(х) = ( (х)г(х; ¿1) V ( (х) ( (2 (х)г(х; ¿2) V (2 (х)((• • •

... (Чк-1 (х)(х; ґк-1) V (к-1(х) (... V ((х) (г (х)г(х; ґг) V Яг (х)г(х; Ь))...))...)). (2)

Программа Рг вычисляет п-местную булеву функцию /, если Рг(х) = /(х) для любого х из {0,1}п .

Всюду далее будем считать, что операторы условной остановки абсолютно надежны (и, значит, срабатывают, если на вход поступает единица), а все вычислительные операторы базиса В независимо друг от друга с вероятностью є (є є (0, 1/2)) подвержены инверсным неисправностям на выходах. Инверсные неисправности на выходах вычислительных операторов характеризуются тем, что в исправном состоянии вычислительный оператор реализует приписанную ему булеву функцию ф, а в неисправном - функцию ф.

Считаем, что программа с ненадежными вычислительными операторами реализует булеву функцию /(х), если при отсутствии неисправностей в программе на каждом входном наборе а значение выходной переменной г равно /(а).

Ненадежностью М(Рг) программы Рг, вычисляющей /(х), назовем максимальную вероятность ошибки на выходе программы Рг при всевозможных входных наборах а . Надежность программы Рг равна 1 - М(Рг).

Ранее [2] доказана теорема 1 о верхней оценке ненадежности неветвя-щихся программ с условной остановкой.

Теорема 1. В произвольном полном конечном базисе любую функцию можно реализовать неветвящейся программой Рг/, реализующей/ для ненадежности которой при всех ее (0,1/960] верно неравенство ЩРг/) < < е + 81е2.

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

г = х,

Л

8Юр( Хг1)

г = х,■

]2

8Юр( х2)

г = х,

Лк

э1ор( хи )

г = х, .

]к+1

Очевидно, эта программа вычисляет функцию

/к (хь.. ^ хп) = х1 ■ х1 V ■ х,2 ■ х,2 V ■ хг-2 ■ х,з ■ х,з V

...Vх ■ х х ■ х,■ ■ х,■ Vх ■ х х ■ х ■ х,■ , (3)

г1 г2 гк—1 1к Лк г1 г2 гк—1 1к 1к+\ ’ ' '

где ¡т,Л е {1, ..., п}, т е {1, ..., к}, I е {1, ..., к + 1}.

Обозначим А0(п) = {х1, ., хп}, Ак(п) - множество всех булевых функций /к (хь ..., хп) вида (3), к > 1.

Булевы функции / и /2 назовем конгруэнтными, если одна из них может быть получена из другой заменой переменных (без отождествления). Обозначим Со^г(М) — множество всех функций, зависящих от переменных

xj, Х2,xn (n > 3), каждая из которых конгруэнтна некоторой функции множества M. Например, еслиM = (xb xi&x2, 1}, то Congr(M)= (хь ..., xn, x. & Xj, 1| i, j e {1, 2, ..., n}, i фj}.

Пусть функция f2 получена из функции f подстановкой переменных (т.е. заменой и/или отождествлением переменных). Обозначим Subst( fj) -множество всех функций, зависящих от переменных Xj, Х2,..., xn и полученных из fi всевозможными подстановками (substitution (англ.) — подстановка).

Очевидно, что A1(n) = Subst(xx v XjX3). Нетрудно проверить, что A1(n) = Congr{x1, x1-x2, x1 v x2, XjX2 v XjX3}. Если n > 5, то A2(n) = = Subst( XjX2 v XjX3X4 v XjXjX5). Используя пакет прикладных программ «Maple», находим A2(n) = Congr{xj, xj-x2, xjvx2, xx v Xjx3, xj v X2X3,

XjX2 v X2X3 , Xj v X2X3, Xj v X2 v X3 , XjX2 v X2X3 , XjX2 v XjX2X3,

XjX2 v XjX3 v X3X2, XjX2 v X2X3 v XjX3, XjX2 v XjX3 v XX, Xj v X2X3 v X2X4, XjX2 v XjX3X4, XjX2 v XjX3X4, XjX2 v X2X3 v XjX3X4 , XjX2 v X2X3 v XXX4, XjX2 v X2 X3 v Xj X3 X4 , XjX2 v XjX3 X4 v XjXj X5 }.

В частности, если n = 3, то A2(3) = Congr{xb xj-x2, xjvx2, xjX2 v XjX3, Xj v X2 X3 , XjX2 v X2 X3 , Xj v X2 X3 , Xj v X2 v X3 , XjX2 v X2 X3 , XjX2 v XjX2 X3 , XjX2 v Xj X3 v X3 X2, XjX2 v X2 X3 v XjX3 }.

Очевидно, что Ak(n) = Subst( Xj • Xj v Xj- xi- Xj2 v Xj- Xj2 • X3 • Xj3 v...

v Xi • Xi •...• Xi • xi • x,- v Xi • Xi •...• Xi • Xi • x,- ).

h 2 lk—j lk jk h 2 lk—j lk Jk'

Заметим, что если в выражении (3) отождествить переменные x.k и Xik j, то получим функцию

xi • х,- vXi • xi • x.■ vX^' • X^' • xi • x/ v ... vXi • X^' •.• X^' • x. • x >■ v

h Л . i2 j2 . i2 i3 j3 h 2 ik—2 lk— jk—j

v x. • X^' •.• x. • x. • x.■ v X^' • x. •.• X^' • X^' • x.- = x. • x.■ vX^' • xi • x; v

h 2 lk—j lk jk h 2 lk—j lk jk+j h j h l2 j2

vXi • x. • x. • X/ v ... vXi • X^' •...• Х • x. • х,- v Б • X. •...• X • x; = f 1,

h l2 l3 j3 . l2 lk—2 lk—j jk—j . l2 lk—j jkyk ”

(xb..., x„) e Ak-j(n).

Таким образом, имеет место утверждение j.

Утверждение 1. При всех k > j верно, что Ak-j(n) с Ak(n).

Обозначим через T0(n) и T^n) множества булевых функций, зависящих от n переменных хь. .., xn и сохраняющих константы 0 и ! соответственно.

Утверждение 2. При всех k > 0 и n > 3 верно, что Ak(n) с (T0(n) u Tj(n)). Действительно, функция Xj Х2 Х3 принадлежит множеству T0(n) u Tj(n), но ни при каких k > 0 не принадлежит множеству Ak(n).

Заметим также, что при n = j верно A0(n) = T0(n) u Tj(n), а при n = 2 верно Aj(n) = T0(n) u Tj(n).

Пусть A(n) = U Ak(n).

k=0

Утверждение 3. Существует такое число k0 е N, что Л^0 (n) = A(n).

Действительно, с одной стороны, A0(n) с Ai(n) с Л2(п) с ... с Лг(п) с... С другой стороны, при всех i > 2 имеем вложение A;(n) с (T0(n) u T1(n)). Следовательно, существует такое число r е N, что Ar(n) = Ar+i(n) =... Обозначим через k0 наименьший номер множества, начиная с которого наступает стабилизация. Тогда

Ao(n) с Ai(n) с A2(n) с ... с\(n), а \J Ak(n) = A^ (n) = A(n).

k=0

Рассмотрим два множества:

An_1(n) = Subst(x1- xj v xi -x2- Xj2 v xj • X2 -x3- Xj v

V ... v ХГ.. .• xn-2 • xn-1 • xjn-1 v xr- •. xn—2 • xn—1 • xjn )

и

An(n) = Subst(x^ xj vXj vxy x2 ^ xj v ... v *•...• Xn—2 • xn—1 • Xj v

J1 J'l J3 Jn—1

v xn—2^ xn—1-xn • xjn v xr--xn—2^ xn—Г xn • xjn+1 ).

Нетрудно видеть, что для функции, порождающей множество An(n),

верно равенство

Xf xj v X •X2' xj v X^ X2•X3• xj v ... v x1^.^ xn—2 • xn—1 • xj v

./1 ./2 J3 J n—1

v xn—2- xn—Г xn • xjn v xn—2^ xn—Г xn • xjn+1 =

= x1 • xj1 v x1 X2 Xj v xy x2 X3 xj3 v .

vxn—2 • xn—1 • xjn_ 1 v vxn—2 • xn—1 • xn xjn ,

из которого следует, что An(n) = An-1(n), поэтому k0 = n - 1.

Утверждение 4. |A(n)| < n2n—1 .

Доказательство следует из определения множества An-1(n) и равенства A(n) = An-1(n).

Пусть K(n) - множество булевых функций f (x1,., xn), не принадлежащих множеству A(n) и отличных от констант, т.е. K(n) = P2(n) \ (A(n)n{0,1}).

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

Обозначим K = U к (n).

n=3

I A(n) |

Замечание 1. Поскольку lim ----------= 0, доля функций из множества

n^~ 22

A(n) стремится к 0 с ростом n. Следовательно, почти все булевы функции содержатся в классе K.

Замечание 2. Очевидно, что если функция f е K, то любая реализующая ее программа содержит хотя бы один функциональный оператор.

Пример 1. Пусть имеются две программы Рг1 и Рг2 (рис. 1).

2 = X] 2 = Х1

Уі = Фі( X) Уі = Фі( X)

вгорОО ®їор(уі)

2 = X!

У2 = Ф2 (X) У2 = Ф2 (X)

®їор(у2) ®ЇОр(У2)

2 = Xl

Уг = Фг (X) Уг = Фг (X)

®їор(уг) ®їор(уг)

2 = Х1 2 = Xl

а) б)

Рис. 1

Каждая из программ содержит г стоп-операторов, для вычисления входов которых (не обязательно всех) используются функциональные операторы. Очевидно, что эти программы вычисляют одну и ту же функцию (формула (1)):

/(х) = Х1 [ Ф1(X) Уф1(х) ф2(X) V ф1(х) ф2(X) Фэ(х) V ...

••• Vфl(х) ф2(X)... Фг-1(X) Фг(X) Vфl(X) ф2(X)... Фг-1(X) Фг(х)]=

= х1 [ф1 (X) Vф2(X) Vф3(X) V• Vфг(X) Vфг(X)] = х1.

Из этого примера следует, что хотя в программе и присутствуют функциональные операторы, она реализует функцию х1 е А0(п).

Пример 2. Пусть имеются две программы Рг1 и Рг2 (рис. 2).

По формуле (1) найдем функции /1(X) и /2(X), вычисляемые программами Рг1 и Рг2 соответственно:

Жх)= ^(X) ф1(X) V ф1(X) ф2(X) ^2(X) V ф1(X) ф2(X) фз(X) ^э(X) V...

• V ф1(X) ф2(X).... фг-1(х) фг (X) ^г (X) V V ф1(X) ф2(X).... фг-1(X) фг (X) ^+1(х)]=

= ^(X) ф1(X) V ф1(X) ^(X) (поскольку ф1(X) ф2(х)=0),

Л(х)= ^(X) ф1(X) V ф1(X) ^2(X).

Таким образом, программы Рг1 и Рг2 вычисляют одну и ту же функцию

Жх)= Л(х)= ^1(X) ф1(X) V ф1(X) ^2(X).

Из этого примера следует, что если в программе есть входы у- и ук стоп-операторов с функциями ф- (X) и фк (X) = ф- (X) (к > -), то можно построить

новую программу, эквивалентную исходной, удалив все команды после команды г = У^ (х).

% = У1( х)

г = У1( х)

У1 = Ф1( х) йорО^)

г = у 2 (х)

У2 = Ф1( х)

йорОъ)

% = у г (х)

Уг = Фг (х) 81ор(Уг) г = Уг+1( х) а)

У1 = Ф1( х) йор^) г = У2( х)

б)

Рис. 2

Пример 3. Пусть имеются две программы Рг1 и Рг2 (рис. 3).

г = У1( х) г = У1( х)

У1 = Ф1( х) У1 = Ф1( х)

8Юр(у1) БгорСУ1)

% = Уг-1( х) г = Уг-1( х)

Уг-1 = Фг-1( х) Уг-1 = Фг -1( х)

8Юр(Уг-1) 8Юр(Уг-1)

г = У г (х) г = У г (х)

Уг = Фг (х)

51ор(Уг)

г = У г (х)

а) б)

Рис. 3

По формуле (1) найдем функции У1(х) и /2(х), вычисляемые программами РГ1 и Рг2 соответственно:

/i(x)= Vi(x) ф^(x) V9j(x) ф2(x) V2(x) v9i(x) ф2(x) Фз(x) Уз(x) v...

• • • V9i(x) ф2 (x)... фг-2 (x) фг-i (x) Vr-i (x) v vфl(x) ф2(x). фг-i(x) фг (x) Vr (x) v ф!(x) ф2(x). фг-i(x) фг (x) Vr (x)]=

= Vi(x) Фl(x) Vфl(x) ф2(x) V2(x) Vфl(x) ф2(x) фз(x) Уз(x) v ...

• vф!(x) ф2(x)... фг-i(x) Vr(x) = f2(x).

Из этого примера следует, что если функции на выходах последней и предпоследней подпрограмм равны, то можно построить новую программу, эквивалентную исходной, удалив все команды после того, как впервые вычислено значение z = vr(x) (см. рис. 3).

Программу Рг/ назовем неприводимой, если выполнены следующие условия одновременно:

1) никакие две команды остановки программы Рг/ не имеют общего

входа;

2) вход любого стоп-оператора не является тождественной постоянной;

3) нет двух входов стоп-операторов с функциями фу (x) и ф^ (x), для

которых верно равенство фк (x) = фу (x).

Теорема 2. Для любой булевой функции/е K и любой неприводимой программы Рг/, реализующей/ верно неравенство N(Pr/) > (i-s)”4 • е, где

m - число функциональных операторов программы Рг/.

Доказательство. Пусть функция/(xi, ..., xn) е K(n) и Рг/ - любая неприводимая программа, реализующая /. Пусть программа Рг/ содержит m

функциональных операторов. Поскольку/(xb ., xn) е K(n), число m > i.

Предположим, что программа Рг/ содержит также r операторов условной остановки. Если r = 0, то программу Рг/ можно считать схемой из функциональных элементов, для которой МРг/) >е [3], т.е. утверждение теоремы верно. Поэтому далее будем рассматривать программы Рг/, в которых число стоп-операторов r > i.

В программе Рг/ выделим r + i подпрограмму (в зависимости от количества стоп-операторов в программе) (рис. 4). Если какой-либо 5-й (i< 5 < r) стоп-оператор срабатывает, то выполнение программы прекращается и на выход идет значение z(5), вычисленное до остановки. Тогда результат работы

программы совпадает с результатом работы 5-й подпрограммы Рг/. Если ни

один из стоп-операторов не срабатывает, то результат работы программы

совпадает с результатом работы подпрограммы Рг^+1.

Оценим снизу вероятность ошибки на выходе программы Рг/.

i. Допустим, что при всех k е {i, ..., r + i} верно z(k) = xt(k) (i(k) е е {i, ..., n}), т.е. на выходе всех подпрограмм переменные, а все ненадежные функциональные операторы программы используются лишь для вычисления входов стоп-операторов). Возможны два варианта.

i.i. Найдется такое i е^,...^}, что при всех к е^,.../ +i} верно z(k) = xi (т.е. на выходе всех подпрограмм имеем одну и ту же независимую

переменную х, е (хь х2, ..., хп}). Тогда (см. пример 1) программа Рг^ реализует функцию х, й К(п), что противоречит условию.

Pi

stop(a1)

Pk

StOp(^2)

stop(ar)

Pl

Pri

Prf ...

Pf

Pr

r+1

Рис. 4

i.2. В программе Рг/найдется такая подпрограмма Рг/, что z(k) = xi(k),

k < r, а для вычисления входа стоп-оператора используются функциональные операторы:

z(k) = xi(k) ak = ф( X) stop(ak)

Пусть Pf - подпрограмма с названным свойством, с наименьшим

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

номером k0. В программе Prf найдется такая подпрограмма Pry (j <s < r + 1) , что z(s) = xi(s), причем xi(s) Ф Xj(k0). Пусть Prsf0 - одна из таких подпрограмм, номер s0 которой наименьший. Обозначим через ф^ (X) вход стоп-оператора подпрограммы Pf. Из определения программы следует, что существует такой входной набор а программы Prf, что аг(So) Фаг-^0) и ф^(а) = 0, фУо (а) = 1. Тогда если функциональный оператор, вычисляющий ф^ (а), ошибется при исправной работе всех остальных функциональных операторов подпрограммы Prk°, то произойдет остановка, и при этом значение выходной переменной будет отлично от значения функции f (X). Вероятность этого события не меньше є(1 -£)m-1, т.е. вероятность ошибки на выходе программы P(Prf, а) > (1 -e)m_1 є. Следовательно, N (Prf) > (1 -є)т-1 є.

2. Допустим, что найдется такое к е{1,..., г + 1}, что z(k) = у( х), причем у(х)ф х,(к) (¡(к) е {1, ..., п}), т.е. на выходе подпрограммы Ргк имеем функцию, отличную от любой из независимых переменных хь х2, ..., хп. Пусть у ( е {1,., г + 1}) - наименьший номер подпрограммы Ргу, которая удовлетворяет этому условию. Обозначим через z(j) выход подпрограммы Ргу, а через ту - количество вычислительных операторов подпрограммы

Ргу . Очевидно, что ту < т .

Рассмотрим два случая: 1) у = г + 1; 2) у < г + 1, т.е. у е {1, ..., г}.

2.1. Пусть у = г + 1. Тогда выходная переменная z(г + 1) программы равна выходу некоторого вычислительного оператора (в силу выбора параметра у).

Найдется такой набор а = (а,...,ап) независимых переменных хь..., хп, что при отсутствии неисправностей в программе не сработает ни один стоп-оператор, и тогда на выходе программы появится z(г + 1). Если функциональный оператор, вычисляющий z(r + 1), ошибется при исправной работе остальных операторов подпрограммы, то на выходе программы появится

ошибка. Вероятность этого события равна (1 -£)тг+1 -1 • £ = (1 -£)т-1 • £, где тг+1 - число функциональных операторов подпрограммы Рг^+1, т - число функциональных операторов программы Ргу, тг+1 = т. Тогда на этом входном наборе вероятность ошибки на выходе программы .Р(Ргу, а) >

> (1 - £)т-1 • £ . Следовательно, N (Ргу) > (1 - £)т-1 • £.

2.2. Пустьуе {1,..., г}.

2.2.1. Предположим, что а}- = ху, т.е. на вход стоп-оператора подается независимая переменная ху Пусть а - такой входной набор программы Ргу, что а,(у) = 1. Если функциональный оператор, вычисляющий z(j), ошибется при исправной работе остальных (если они есть) функциональных операторов подпрограммы Ргу, то на выходе программы появится ошибка. Вероятность этого события (1 - £)>П] 1 • £> (1 - £)т-1 • £ . Поэтому вероятность ошибки на выходе программы .Р(Ргу, а) > (1 -£)т-1 •£. Следовательно,

N(Ргу ) > (1 -£)т-1 • £ .

2.2.2. Предположим, что ау = ф(х), причем ф(х) ф ху т.е. вход стоп-оператора - некоторая функция ф(х), отличная от любой из независимых переменных хь х2, ., хп. Возможны три варианта.

2.2.2.1. Пусть ф(х) и z(j) = у(х) (у - некоторая функция) функционально независимы.

Рассмотрим такой входной набор а программы Ргу, что ф(а) = 1

(набор а существует, поскольку программа неприводима).

Если функциональный оператор, вычисляющий z(j), ошибется при исправной работе остальных (если они есть) функциональных операторов под-

программы Рг,, то на выходе программы появится ошибка. Вероятность этого события равна (1 -£)т1 1 £>(1 -£)т-1 •£. Тогда на этом входном наборе вероятность ошибки на выходе программы .Р(Ргу, а) > (1 -£)т-1 •£. Следовательно, N(Ргу ) > (1 - £)т-1 • £ .

2.2.2.2. Пусть z(j) функционально зависит от ф(х) . Тогда подпрограмма Рг, имеет следующий вид:

а, = ф( х)

z(j) = У( х, ау)

81ор(а;)

Рассмотрим такой входной набор а программы Ргу, что ф(а) = 1

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

(если они есть) функциональных операторов подпрограммы Рг, , то на выходе

программы появится ошибка. Вероятность этого события равна (1 - £)т 1 • £ >

> (1 - £)т-1 • £ . Тогда на этом входном наборе вероятность ошибки на выходе программы Р(Ргу, а) > (1 -£)т-1 • £. Следовательно, N (Ргу) > (1 -£)т-1 • £.

2.2.2.3. Пусть ф(х) функционально зависит от z(j) (в частности, например, ф(х) = z(j)). Тогда подпрограмма Рг, имеет вид

z(j)= У(х)

а, = ф(х, z(у))

81ор(а/)

Рассмотрим те входные наборы а программы Ргу, для которых при отсутствии неисправностей ау = ф(а) = 1, а следовательно, z(^) = /(а). Предположим, что функциональный оператор, вычисляющий z(j), ошибается, а все остальные операторы, кроме вычисляющего ау, работают исправно. Чтобы ошибка прошла на выход программы, требуется, чтобы ау было равно 1. Для каждого из входных наборов а программы возможен один из вариантов: 1) оператор, вычисляющий ау, выдает 1 с вероятностью (1 - е); 2) оператор, вычисляющий а,, выдает 1 с вероятностью е.

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

Р(Рг/, а) > (1 - £)т} -1 • £ > (1 - £)т-1 • £ . Следовательно, N(Ргу) > (1 - £)т-1 • £.

2.2.2.3.2. Допустим, что при всех входных наборах а программы оператор, вычисляющий а,, выдает значение 1 с вероятностью е. Следовательно, при всех а (для которых ау = 1) имеем ф(а, z(у)) = 1 и ф(а, 1 (у)) = 0. Тогда

или ф(а,z(у)) = z(у), или ф(а, z(у)) = 1 (у), т.е. подпрограмма Рг, имеет вид

г(/) = у(х) г/ = у(х) а} = г (/) или а} = г (/) 8Іюр(а/) 8ІЮр(а/)

2.2.2.3.2.1. Рассмотрим первую подпрограмму. Очевидно, при всех нулевых наборах а функции / верно, что г(/) = у(а) = / (а) = 0. Если хотя бы на

одном из нулевых наборов г(/) = у(а) Ф / (а), т.е. г(/) = у(а) = 1, тогда при отсутствии неисправностей сработает стоп-оператор 8І;ор(а/) и на выходе программы появится ошибка.

Ошибка оператора, вычисляющего г(/) на наборе а, приведет к остановке и ошибке на выходе программы. Вероятность этого события равна

(1 - е)т] 1 • е > (1 - є)т-1 • є . Тогда на этом входном наборе вероятность ошибки на выходе программы .Р(Рг/, а) > (1 -е)т-1 е. Следовательно, N(Рг/) >

> (1 -е)т-1 е .

2.2.2.3.2.2. Рассмотрим вторую подпрограмму. Очевидно, при всех единичных наборах а функции / верно, что г(/) = у(а) = /(а) = 1. Если хотя бы

на одном из единичных наборов г(/) = у(а) Ф / (а), т.е. г(/) = у(а) = 0, тогда при отсутствии неисправностей сработает стоп-оператор 8Іюр(а/) и на выходе программы появится ошибка.

Ошибка оператора, вычисляющего г(/) на наборе а, приведет к остановке и ошибке на выходе программы. Вероятность этого события равна

(1 - е)т] 1 • е > (1 -е)т-1 • е . Тогда на этом входном наборе вероятность ошибки на выходе программы .Р(Рг/, а) > (1 -е)т-1 е. Следовательно, N (Рг/) >

> (1 -е)т-1 е .

Теорема 2 доказана.

Из теоремы 2 следует, что любую функцию /є К нельзя реализовать неприводимой программой Рг/, ненадежность которой меньше е (1 - е )т-1, где т - число функциональных операторов в программе Рг/.

Из теорем 1 и 2 следует, что почти все функции можно реализовать асимптотически оптимальными по надежности неветвящимися программами, функционирующими с ненадежностью, асимтотически равной є при є ^ 0.

Список литературы

1. Чашкин, А. В. О среднем времени вычисления значений булевых функций / А. В. Чашкин // Дискретный анализ и исследование операций. Серия 1. - 1997. -Т. 4, № 1. - С. 3-17.

2. Алехина, М. А. О надежности неветвящихся программ в произвольном полном конечном базисе / М. А. Алехина, С. М. Грабовская // Известия высших учебных заведений. Математика. - 2012. - № 2. - С. 13-22.

3. Neuman, J. Von. Probabilistic logics and the synthesis of reliable organisms from unreliable components / J. Von Neuman // Automata studies / ed. by Shannon C., Mc. Carthy J. - Princeton University Press, 1956. (Русский перевод: Автоматы. -М. : ИЛ, 1956. - С. 68-139).

Алехина Марина Анатольевна

доктор физико-математических наук, профессор, заведующая кафедрой дискретной математики, Пензенский государственный университет

E-mail: dm@pnzgu.ru

Грабовская Светлана Михайловна старший преподаватель, кафедра дискретной математики, Пензенский государственный университет

E-mail: swetazin@mail.ru

Alekhina Marina Anatolyevna Doctor of physical and mathematical sciences, professor, head of sub-department of discrete mathematics,

Penza State University

Grabovskaya Svetlana Mikhaylovna Senior lecturer, sub-department of discrete mathematics, Penza State University

УДК 519.718 Алехина, М. А.

Нижняя оценка ненадежности неветвящихся программ с оператором условной остановки / М. А. Алехина, С. М. Грабовская // Известия высших учебных заведений. Поволжский регион. Физико-математические науки. - 2012. - № 1 (21). - С. 44-56.

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