Исследование некоторых задач в алгебрах и пространствах программ
Исследование некоторых задач в алгебрах и пространствах программ
Казиев В.М.
Рассмотрим
пару алгебр (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 только тогда, когда ea>ij>) не содержит ни одного цикла, то система X=XA+B имеет единственное решение X=B{A}, которое регулярно при регулярных A, B. При решении системы эффективно преобразовывать уравнения, - как и при решении линейных алгебраических уравнений, например, брать дизъюнкцию событий, изменять порядок исключения событий и др.
Шаг 5. По
условиям выполнимости событий находим
регулярную форму этого решения.
Используются аксиомы алгебры логики В
и соотношения алгебры событий А, например,
следующие (AB=AB,
(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:UV, U,V - линейные нормированные пространства D(L) U, R(L)V.
Теорема 2.
Если R(L)=V и для каждого uD(L)
существует постоянная c
такая, что
,
то Lu+Tu=f имеет единственное решение uU.
Доказательство.
Условия теоремы гарантируют существование
непрерывного обратного оператора 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.