Исследование некоторых задач в алгебрах и пространствах программ

Исследование некоторых задач в алгебрах и пространствах программ

Казиев В.М.

Рассмотрим пару алгебр (A,B): алгебру X=<X,,>>(+),>>{},{}>>> событий - алгоритмических процедур (программ) заданную над алфавитом X={x>1>,x>2>,...,x>n>} и В-трехзначную алгебру логики (0,1,2 - неопределенность). В алгебре А определим двухместные операции конъюнкции и условной дизъюнкции и одноместную операцию итерации следующим образом: конъюнкция s>1>s>2> событий s>1>, s>2> состоит из всех слов вида pq, p s>1>, q s>2>;  - дизъюнкция >>(s>1>+s>2>) совпадает с s>1>(s>2>), если условие  истинно (ложно); итерация с постусловием {s}>> состоит из пустого события s>0>=e и всевозможных слов вида p>1>p>2>...p>k> т.е. , {s}>>=sm, где sm - последний из степеней s, для которого условие  выполнено; итерация с предусловием >>{s} определяется аналогично. В алгебре А задается событие называемое неопределенным и обозначаемое символом . Элементарные события в А - события е, x>1>, x>2>,..., x>n>. Аксиомы алгебры А ниже рассмотрены. Все аксиомы алгебры B и правила вывода в ней сохраняются. Правила вывода, используемые в алгебре А включают правила вывода, принятые в программировании - см., например, [1]. Событие, получаемое применением конечного числа операций алгебры А над элементарными, называется регулярным.

Имеет место важная теорема Клини [2]: регулярные события и только они представимы в конечных автоматах.

Рассмотрим задачу построения алгоритма регуляризации во введенной паре алгебр (А,B). Алгоритм в укрупненных шагах состоит в следующем.

Шаг 1. Задается произвольное событие s=s>0 >s>1> s>2>...s>n+1>, где s>i> - событие номер i, начальное событие - s>0>, конечное - s>n+1>, остальные события - преобразователи и/или события - распознаватели.

Шаг 2. Составляется система уравнений алгебры событий А: записывается функция F события, его дерево D и дерево состояний определяющее все к путей выполнения : , где F>i> - функция ветви дерева состояний. Функция ветви дерева - композиция всех функций (событий) данной ветви; программная функция F - объединение всех функций ветвей дерева.

Шаг 3. Система уравнений с помощью подстановок и операций дизъюнкции и конъюнкции представляется в виде : X=XA+B, где X - событие, представленное заключительным состоянием s>n+1>, .

Шаг 4. Находим решение системы. Используется теорема [3]: если характеристический граф матрицы А (орграф соединяющий ребрами вершины i и j только тогда, когда ea>ij>) не содержит ни одного цикла, то система X=XA+B имеет единственное решение X=B{A}, которое регулярно при регулярных A, B. При решении системы эффективно преобразовывать уравнения, - как и при решении линейных алгебраических уравнений, например, брать дизъюнкцию событий, изменять порядок исключения событий и др.

Шаг 5. По условиям выполнимости событий находим регулярную форму этого решения. Используются аксиомы алгебры логики В и соотношения алгебры событий А, например, следующие (AB=AB, (A) - условие выполнимости события А, A - проверка условия  после события А и для этого условия верны все аксиомы алгебры В, - отрицание условия ):

Ae=eA=A,

e=(e)=,

A=A=,

>2>(A+B)=,

((A))=,

A(BC)=(AB)C,

>>(A+B)=((A)+ (B)),

(>>(A+B))=((A))+( (B)),

>>(A+B)C=>>(AC+BC),

A>>(B+C)=>>(AB+AC),

(AB)=(A)B(B),

(AB)=A(B),

A{B}>>={B>A>>>}A,

({A}>>)={A>>},

{A}>>=>>(e+A{A}>>),

{(A)}(B)={A}>>B,

>>{A}>>{A}=>>{A},

{>>> >>>{A}}=>>{A},

{A}>>{A}>>={A}>>,

{{A}>>}={A}>>> >,

{(A)}={A} ,

{A}>>+e=>>{A},

A>>{A}=>>{A}A={A}>>> >.

Пример 1. Регуляризуем микропрограмму А деления с фиксированной запятой. Для простоты считаем, что числа неотрицательны, а операция не приводит к переполнению разрядной сетки компьютера фон - Неймановского типа, операционный автомат которого состоит из регистров R>1>, R>2> сумматора R>3> и счетчика сдвигов R>4>. Делимое храниться на R>1>, делитель - на R>2>, частное накапливается на R>3>. Введем обозначения: l>i> - микрооперация сдвига регистра R>i> влево (i=1,2,3); s-1>ij> - микрокоманда вычитания из содержимого регистра R>j> содержимого регистра R>i>; >i> - условие заполненности регистра R>i>; >i> - условие отрицательности содержимого регистра R>i>; p>i> - микрооперация занесения единицы в младший разряд R>i>; s>i,j>- микрокоманда добавления содержимого регистра R>i> к содержимому R>j>.

Выпишем систему уравнений, обозначив через x>i> - событие соответствующее каждому из 11 пунктов алгоритма деления (см., например, [3]):

Решим эту систему. После очевидных подстановок, вводя обозначения:

x=x>3>+x>7>+x>10 >,

B=el>3>s-1>13>,

A=>3>p>2>l>2>p>4>l>3>s-1>13>+>3>l>2>p>4>l>3>s-1>13>

получим уравнение X=XA+B, решение которого будет X=B{A} и после упрощений с помощью приведенных аксиом, заключительное событие S равно

s=x>11>l>3>s-1>13>{>>>3>(l>2>p>4>l>3>s>13>+p>2> l>2>p>4>l>3>s>13>-1)}>>>4>

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

Пример 2. Дана программа Р, где А,В,С - процедуры,  - предикаты:

P=>>(BA+CA)>>(A>>{A}+e)=>>(B+С)A>>(A>>{A}+e)=>>(B+С)A>>({A}>>+e)=>>(B+С)A>>{A}=>>(B+C){A}>>=T.

Программа Т - более оптимальна и ее правильность доказываема формально.

Доказана теорема (доказательство не приводим из-за объема).

Теорема 1. Если R,A,S  A, ,,B, A и S - коммутативны, то:

а)AX=A>>(R+SX)AX=A{S}>>R, б)A=A>>(+S)A=A{S}>>,

в)A=A>>(+S )A=A{S2}>>(+S ),=+S,

г)A=A{S2}>>A=A>>(e+S2), =>>(+S), =+S.

Рассмотрим задачу исследования разрешимости в пространствах программ.

Пусть x=<X, Y, M, S> - программа, определенная на входном алфавите Х, выходном алфавите Y и состоящая из подпрограмм (процедур) М с логической схемой (структурой) S. Структуре S поставим в соответствие орграф: Вершины - подпрограммы, ребра - в соответствии со структурой их взаимодействий. Метрика (x,y) в этом пространстве - сумма всех весов ребер орграфов программ не совпадающих при заданной структуре S или отклоняющихся от оптимальной структуры, т.е. Аксиомы метрики проверяемы.

Отметим метризуемость пространства и по некоторым характеристикам качества программ Холстеда [6], а также с помощью понятия интеллектуальной работы программы, оцениваемой как разность энтропии до работы (статической формы программы) и после работы (динамической формы). У идеальной программы энтропия равна нулю. Отметим, что если ds/dt - общее изменение энтропии программного комплекса при отладке, ds>1>/dt - изменение энтропии за счет необратимых изменений структуры, потоков внутри комплекса (рассматриваемую как открытую систему), ds>2>/dt - изменение энтропии за счет усилий по отладке и тестированию, то справедливо уравнение Пригожина: ds/dt = ds>1>/dt + ds>2>/dt. Последовательность программ {x>i>}, сходится по схеме (структуре) к программе х (обозначим ), если (x>n>,x) 0, при n, т.е. дерево программы x>n> при n стремится к дереву программы х. Последовательность {x>i>} сходится функционально к программе х (обозначим ), если F(x>n>) F(x) при n (программная функция x>n> стремится к программной функции х). Нетрудно видеть, что из сходимости по схеме следует сходимость функциональная, но обратное неверно.

Пусть M = {x>1>, x>2>, ..., x>n>,...} - последовательность программ с общей функцией (эквивалентных функционально). На этом множестве рассмотрим множество операторов А преобразования (композиции, суперпозиции) программ. Последовательность {A>n>} сходится к А функционально (по схеме, структуре), если верно: xМ:

С точки зрения исследования существования, единственности оптимальной (в каком-то смысле) программы можно рассмотреть: операторы минимизации числа операндов; операторы минимизации числа типов операторов; операторы минимизации числа вызовов процедур; минимизации числа ошибок в программе; минимизации сложности (разных способов определения) и др. При исследовании программных систем важно рассматривать пространства векторов х=(х>1>,x>2>,...,x>n>), где x>i> - характеристика ошибок в программе или структурной связностипроцедур, u>i> - количество ошибок в i-ом модуле программного комплекса P(u)=P(u>1>,u>2>,...,u>n>).

Пусть u(x,t) - количество ошибок, обнаруженных в программе (системе) в момент времени t, а х - характеристика уровня ошибок. Рассмотрим модель обнаружения ошибок при отладке, представимая уравнением (см. также [7]): Lu+Tu=f, где T - оператор, определяющий первоначальный уровень ошибок в программе или их некоторую характеристику, L - некоторый линейный ограниченный оператор отладки, L:UV, U,V - линейные нормированные пространства D(L) U, R(L)V.

Теорема 2. Если R(L)=V и для каждого uD(L) существует постоянная c такая, что , то Lu+Tu=f имеет единственное решение uU.

Доказательство. Условия теоремы гарантируют существование непрерывного обратного оператора L-1, причем . Тогда u=L-1(f-Tu). Для однородного уравнения: . Отсюда следует, что , т.е. u=0. Следовательно, неоднородное уравнение имеет единственное решение.

Пример 3. Пусть u>max> - максимальный уровень синтаксических ошибок в программе Р, u(t) - их оставшееся количество к моменту времени t. Исходя из модели du/dt+u>max>=0, u(t>0>)=u>0> можно заключить, что уровень ошибок убывает при (c-t>0>)  -1 (t>0><c<T) по закону: u(t) = u>0>(1+ (c-t))/(1+(c-t>0>)).

Если задать дополнительно u(t>*>)=u>*>, (u>max> - неизвестная величина), то закон изменения уровня ошибок находится однозначно, так как: с=(u>*>t>0>-u>0>t>*>)/(u>*>-u>0>)-1/.

Вопросы разрешимости некоторых уравнений Lx=y, где х - неизвестная программа, y - заданная программа, L - оператор, например, оптимизации, будут изложены в другой работе.

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

1. Алагич С., Арбиб М. Проектирование корректных структурированных программ. - М., Радио и связь, 1984.

2. Клини С.К. Представление событий в нервных сетях и конечных автоматах. - Автоматы, ИЛ, М., 1956.

3. Бондарчук В.Г. Системы уравнений в алгебре событий. - Журнал вычислительной математики и математической физики, N6, т.3, 1963.

4. Глушков В.М. О применении абстрактной теории автоматов для минимизации микропрограмм. - Изв. АН СССР, Технич. кибернетика, N1, 1964.

5. Казиев В.М. Дидактические алгоритмические единицы. - Информатика и образование, N5, 1991.

6. Холстед М. Начала науки о программах. - М., Финансы и статистика, 1981.

7. Казиев В.М. Один класс математических моделей переработки информации и некоторые его приложения. - Нелинейные эволюционные уравнения в прикладных задачах, Киев, 1991.