Пример программы:
/*
Программа решения квадратного уравнения
*/
real a = 1, // Объявление и инициализация трех b = 5, // переменных вещественного типа -c = 6; // коэффициентов уравнения
real d = b*b - 4*a*c; // Вычисление дискриминанта
if (d==0) // Если дискриминант равен нулю
real x = -b/(2*a); // уравнение имеет два
// равных корня
else if (d>0) // в противном случае
{
/ / вычислить корни
real x1 = (-b-sqrt(d)) / (2*a);
real x2 = (-b+sqrt(d)) / (2*a);
}
Предлагаемый язык моделирования (FAscript) позволяет моделировать как непрерывные, так и дискретные процессы, а также преодолевать существующее противопоставление языков собственно имитационного моделирования и универсальных языков программирования (общего назначения). Данное обстоятельство объясняется тем, что предложенный вариант построения языка обеспечивает эффективную машинную реализацию программы с одновременной концептуальной направленностью языка на функциональные процессы, подлежащие моделированию. Практика моделирования систем показывает, что именно такое сочетание свойств языка определяет “успех имитации как метода экспериментального исследования сложных реальных объектов” [4, с. 137].
УДК 681. 5
ИНВАРИАНТНАЯ АЛГЕБРА РАНГОВЫХ ПРЕДИКАТОВ ДЛЯ МОДЕЛИРОВАНИЯ И СИНТЕЗА НЕПАРАМЕТРИЧЕСКИХ СИСТЕМ
ПОЛОНСКИЙ А.Д.______________________________
На основе совместного использования скалярного произведения векторов и процедуры ранжирования строится инвариантная алгебра ранговых предикатов. В рамках теории ИАРП получены математические модели непараметрических систем с кодированием номера канала рангом. Предлагается метод их электрического синтеза в элементном базисе ИАРП — рангерах.
FAscript (совместно со средством визуализации функциональных зависимостей) используется при разработке программного модуля имитации функционирования системных компонент объектной модели. Это значительно повышает возможности CASE-инструментария, автоматизирующего новый метод системологического анализа, так как позволяет анализировать и проектировать структуру и состав системы с учетом количественных критериев.
Дальнейшее развитие данного языка обусловлено общей тенденцией развития объектной парадигмы разработки программного обеспечения и направлено на повышение концептуального уровня прикладного программирования. В конце концов данная тенденция должна привести к тому, что создание прикладной программы будет осуществляться конечным пользователем самостоятельно путем концептуального объектного моделирования без применения какого-либо языка программирования и без привлечения программиста. Одним из путей превращения данной тенденции в реальность является объединение особенностей и преимуществ метода OMSAD, CAS E-технологии и FAscript.
Литература: 1. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++, 2-е изд.: Пер. с англ. М.: “Издательство Бином”, СПб.: “Невский диалект”, 1999. 560с. 2. Йордан Э, Аргила К. Структурные модели в объектно-ориентированном анализе и проектировании. / Пер. с англ. М.: “ЛОРИ”, 1999. 264с. 3. Буч Г., Рамбо Д, Джекобсон А. Язык UML. Руководство пользователя / Пер. с англ. М.: ДМК, 2000. 432с. 4. Советов Б.Я., Яковлев С.А. Моделирование систем. М.: Высш. шк., 1998. 319с.
Поступила в редколлегию 16.05.2001
Рецензент: д-р техн. наук, проф. Соловьева Е.А.
Попов Андрей Сергеевич, студент гр. ПОАС 00-1, сотрудник научно-учебной лаборатории Приобретения знаний ХНУРЭ. Адрес: Украина, 61022, Харьков, ул. Сумская, 59, тел. 40-95-91, 43-49-95.
Введение
До настоящего времени остается актуальной проблема обработки измеряемых случайных процессов (ИСП). Суть этой проблемы состоит в том, что полного объема априорных сведений о свойствах ИСП, требуемого известными методами обработки информации [1], как правило, нет. В связи с этим необходимо создание непараметрических систем (НС), обладающих свойством инвариантности к распределению ИСП. Решение этой задачи может быть получено путем разработки математического аппарата для моделирования и синтеза инвариантных НС. Один из таких математических аппаратов, который называется инвариантная алгебра ранговых предикатов (ИАРП), предлагается в настоящей работе.
116
РИ, 2002, № 1
В первом разделе на основе совместного использования скалярного произведения векторов и процедуры ранжирования строится функциональная система ИАРП. Во втором разделе предлагается элементный (электрический) базис ИАРП — рангер, который реализует принцип кодирования номера канала рангом (КНКР). В третьем разделе строятся математические модели НС с КНКР, предлагается метод электрического синтеза НС с КНКР в элементном базисе ИАРП-рангерах.
1. Функциональная система ИАРП
Введем в рассмотрение один из элементов линейной алгебры — скалярное произведение векторов A=[a(1),..., a(n)] и Y=[y(1),..., y(n)], которое определяется формулой
z = ATY = 2 a(i)y(i). (1)
i=1
Здесь т — символ транспонирования векторов. В дальнейшем изложении составляющие a(i) и y(i) векторов (кортежей) A и Y будем называть соответственно весовыми коэффициентами и предметными переменными.
Множество функций вида (1) может быть образовано путем перестановки элементов векторов А и Y. Для множества таких функций остаются в силе все свойства скалярных произведений векторов [ 1]: замкнутость относительно операций суперпозиции
ФАТY = Ф(ATY), (2)
где ф—действительное число; коммутативность
n
r(i) = £ F[u(i) - u(j)].
J=1
Здесь F[u(i) - u(j)] = есть двоичный предикат.
0| u(i) < u(j) 1 u(i) > u(j)
(6)
(7)
Множество рангов ={^(1),..., r(n)} всех элемен-
тов вектора наблюдений образует некоторую перестановку целых чисел ij = 1,n, j = 1,n. В связи с тем,
что все такие перестановки равновероятны, распределение рангов является равномерным независимо от конкретного закона распределения элементов вектора наблюдений [2]. В этом и состоит свойство инвариантности преобразования (6).
Множество рангов {гЩ при n=2 содержит два элемента:
r(1) = 1 + F[u(1)-u(2)]; r(2) = 1 + F[u(1)-u(2)]. (8)
Здесь F [u(i) - u( j)] = 1 - F [u(i) - u(j)] = F [u( j) - u(i)] есть функция логического отрицания двоичных предикатов (7).
Выразим весовые коэффициенты a(1) и a(2) в (1) через инвариантные преобразования (8) следующим образом:
a(1) = r(1) -1 = F[u(1) - u(2)]; a(2) = r(2) -1 = F[u(1) - u(2)].
ATY = YTA; (3)
дистрибутивность
AT(Y1 + Y2) = ATY1 + AtY2, (4)
здесь Y1 + Y2 = [y1(1) + y2(1),...,y1(n) + y2(n)].
Свойства (2)-(4) остаются в силе и для скалярных произведений, в которых вектор весовых коэффициентов порождается функциональным преобразованием:
Функции (9) как бы “узнают” один ранг среди возможных рангов. Поэтому в дальнейшем изложении инвариантные преобразования вида (9) будем называть ранговыми предикатами (РП). Элементы ВН, на множестве значений которых заданы РП , есть предикатные переменные. Инвариантные преобразования, порождаемые РП, со значениями из множества предметных переменных называются предикатными функциями (ПФ).
Подстановка (9) в (1) приводит к предикатным дизъюнкции (ПД)
A = Y(U). (5)
Здесь и в дальнейшем изложении будем считать, что U=[u(1),..., u(n)] есть вектор наблюдений (ВН), содержащий n реализаций ИСП с произвольным распределением.
Предположим, что вид преобразования (5) заранее не ограничивается, а рассматривается задача выбора
такого T(U), при котором распределения весовых коэффициентов являются инвариантными к распределениям элементов ВН. В основу решения этой задачи положим теорию ранговой обработки информации [2]. Согласно этой теории рангом і-го элемента u(i) ВН называется его порядковый номер r(i) в вариационном ряду. Формально процедуру вычисления ранга можно представить в виде
РИ, 2002, № 1
Vf [y(1), y(2)] = F [u(1) - u(2)]y(1) + F [u(1) - u(2)]y(2) =
= a(1)y(1) + a(2)y(2) (10а)
и конъюнкции (ПК):
ЛF [y(1),y(2)] = F[u(1) -u(2)]y(1) + F[u(1) -u(2)]y(2) =
= a(2)y(1) + a(1)y(2). (10б)
Для бинарных ПФ (10а), (10б) справедливы законы спуска инверсии (отрицания) на предметные переменные:
inv[ Vf [y(1),y(2)] = Af [inv[y(1)], inv[y(2)]]; inv[ Л F [y(1), y(2)] = Vf [inv[y(1)], inv[y(2)]].
117
Здесь
inv[y(i)] = 2Yo - y(i)
есть центрированная инверсия (ЦИ) относительно точки Yo = 0,5(Ymin + Ymax) области определения предметных переменных y(i), заданной интервалом [Ymin,Ymax] на числовой оси.
Расширение класса ПФ осуществляется использованием операций суперпозиционных подстановок. Например, подставляя в исходную ПФ
Z = F[u(1) -u(2)]Zj + F[u(1) -u(2)]Z2 бинарные ПФ
Zi = F [u(2) - u(3)]y(1) + F[u(2) - u(3)]y(2);
Z2 = F [u(3) - u(4)]y(3) + F [u(3) - u(4)]y(4),
получаем многоместную ПФ Z = [A = T(U)]T Y , в которой
[A = T(U)]T
a(1) = F[u(1) - u(2)]F[u(2) - u(3)] a(2) = F[u(1) - u(2)]F[u(2) - u(3)] a(3) = F[u(1) - u(2)]F[u(3) - u(4)] . a(4) = F[u(1) - u(2)F[u(3) - u(4)]_
Каждая последовательность суперпозиционных подстановок на последнем n-м шаге приводит к вектору РП вида (5), элементы которого
a(i) = ^i(U) = П П ~[u(p) -u(q)] (11)
p=1 q=p +1
есть многоместные (n-арные) РП; F[u(p) - u(q)] есть либо F[u(p)-u(q)], либо F[u(p) - u(q)].
Для РП (11) справедливо свойство транзитивной инвариантности:
Множество всех ПФ, порождаемых операциями суперпозиционных подстановок, совместно с ПД, ПК и ЦИ образуют функциональную систему ИАРП.
2. Элементный базис ИАРП
Представим слагаемые в (10) в виде бинарных ПФ:
z(i) = F[u(i) - u(j)]y(i) = a(i)y(i); j
z(j) = F [u(i) - u(j)]y(j) = a(j)y(j).J (12)
Система ПФ (12) описывает алгоритм функционирования (таблица)
u(i), u(j) a(i) a(j) z(i) z(j)
u(i)>u(j) 1 0 y(i) 0
u(i)<u(j) 0 1 0 y(j)
и структуру (рисунок) процессора, где УА—управляющий автомат; ОА — операционный автомат.
Выходные сигналы управляющего автомата a(i) и a(j) образуют пространственный код ранга того канала операционного автомата, через который на выход процессора транслируется предметная переменная. При этом реализуется алгоритм КНКР. Процессор, который его реализует, является элементным базисом ИАРП и называется рангер.
3. Моделирование и синтез НС с КНКР
Vi £ a(i) = 1; a(i) є{0; 1},
которое проявляется в том, что перестановки элементов вектора РП равновероятны независимо от вида и параметров распределений предикатных переменных.
Отметим, что i-я перестановка предикатных переменных в (11) порождает вектор РП
Ai =^;(U) =
= [a(1) =... = a(i -1) = 0, a(i) = 1,a(i +1) =... = a(n) = 0,
который представляет собой унитарный код ранга r(i) предикатной переменной u(i). При этом реализуется алгоритм пространственного кодирования параметра (управляющего воздействия — предикатной переменной) рангом канала (местом возникновения управляющего воздействия на множестве предикатных переменных). Такой алгоритм будем называть КНКР.
В рамках ИАРП математические модели НС с КНКР могут быть представлены в следующей теоретико-множественной форме:
z(i) = A;YT| {U} eRj, i = 1,m,m = n!. (13)
Здесь z(i) есть многоместная (n-арная) ПФ, порождаемая вектором РП A; e{Ab...,Am}и заданная на множестве предикатных переменных {U}={u(1),...,u(n)} со значениями в двухэлементном множестве {0; y(i)eY}, Y=[y(1),...,y(m)] —
множество предметных переменных; R; — заданное на множестве {U} отношение, для которого
A;= [a(1) = .. = a(i -1) = 0, a(i) = 1, a(i +1) =... = a(m) = 0].
Математические модели (13) сводят решение задачи синтеза НС с КНКР к построению векторов РП для
заданных отношений Ri = 1m. В основе решения
118
РИ, 2002, № 1
этой задачи лежит метод предикатно-логического синтеза, суть которого заключается в следующем.
Представим отношения Ri; i = \m в виде
Ri = Hi0 < • < и0п)}- (14)
Здесь ii,...,in есть i-яперестановка целых чисел от 1 до n. Для i-й ситуации (14) выписываются все 0,5n(n+1) бинарных отношений порядка
и(й) <и(п)’...’и(ч-0 <и(ч)
Каждому неравенству u(i)<u(j) ставят в соответствие двоичный предикат (7). Затем вычисляют многоместные РП по алгоритму (11).
Каждому многоместному РП (11) ставят в соответствие предметную переменную и в результате получается математическая модель (13).
По математической модели (13) строится ее топологическая модель — электрическая схема НС с КНКР, поскольку в ИАРП между этими моделями существует прямая однозначная связь, а синтез осуществляется в элементном базисе (рангерах), адекватном теории синтеза НС [2].
Заключение
Многоместные ПФ (13) при заданных отношениях (14) воспроизводят правило (алгоритм) идентификации предметных переменных:
z(i)
y(i)| r(i) = k;
0 r(i) Ф k.
(15)
Здесь ke{1,2,...,n| есть заданная пороговая константа. Мощность правила (15) равна единице, так как вероятность ошибки второго рода
P=p{z(i) ф y(i) | r(i) = k] =0.
Вероятность ошибки первого рода определяется, согласно [2], как
а = P{z(i) = y(i)|r(i) Ф kj = (m +1) п.
Полученные результаты подтверждают эффективность применения ИАРП: алгоритм (15) стабилизируют параметры а и р независимо от вида и параметров распределений предикатных переменных.
Литература: 1. Брюс Р. Матричные методы цифровой обработки случайных сигналов. М.: Мир, 1980. 648 с. 2. Устройства ранговой обработки информации / В. Ю. Лапий, А Я. Калюжный, Л. Г. Красный. Киев: Техніка, 1986. 120 с.
Поступила в редколлегию 24.07.2001
Рецензент: д-р физ.-мат. наук, проф. Проценко И.Е.
Полонский Александр Дмитриевич, канд. техн. наук, доцент Сумского государственного университета. Научные интересы: инвариантные системы. Адрес: Украина, 40007, Сумы, ул. Римского-Корсакова, 2, тел. 27-79-75.
УДК 519.7;681.3
ИДЕНТИФИКАЦИЯ КЛАССОВ -ПОИСК ГРААЛЯ?
КОВАЛЕВ С.А._____________________________
Описывается принцип разделения обязанностей. Обсуждается необходимость построения изначально качественных систем, а также обсуждаются принципы платонизма, классификации, применяемые для моделирования предметной области. Рассматриваются направления исследования.
На одной из конференций программистам был задан вопрос: “Какими правилами вы руководствуетесь при определении классов и объектов?”
Страуструп, разработчик языка C++, ответил: “Это как поиск святого Грааля. Не существует панацеи”.
Габриель, один из разработчиков CLOS, сказал “Это вопрос, на который нет простого ответа. Я просто пробую” [1, с.147].
Основным подходом в бизнесе к решению любой поставленной задачи является создание организационно-технической системы. Важная часть этой системы — программное обеспечение (ПО). На современном этапе ПО характеризуется высокой степенью трудоемкости. Часто оказывается, что ПО является самым сложным и самым дорогосто-
ящим компонентом всей организационно-технической системы. Более того, сохраняется тенденция роста размера ПО в пропорции относительно технической части (в 1955 году соотношение составляло 15:85, а в 1985 - 85:15 [2,с.19]).
Чтобы выяснить источники связанных с разработкой ПО проблем, проследим историю развития философии1 программирования до появления объектно-ориентированной парадигмы [3,4 ].
1 Слово “философия” (впрочем, как и использование термина “парадигма”) по отношению к программированию многим может показаться неуместным и даже вульгарным. Тем не менее, к программированию как к особой ветви производства и науки, стоящей между точной технологией и творческим искусством, эти термины применяются. Так же широко употребляются и в той же мере правомерны понятия “стиля программирования”, “собственный подход к решению технических задач”, “хорошая” или “плохая” программа. К этому же подходит англоязычный термин “best practices” (“лучшие практики” — в авторском переводе), описывающий накопленный опыт работы с конкретными технологическими решениями, эмпирические находки и открытия ведущих (и, соответственно, успешных) практиков этой отрасли. Все это, а также само умонастроение и многие невербализуемые знания и навыки обобщаются в понятии “философия программирования”. Набор методов, методик, теорий и отдельных теоретических постулатов, а также выражение всего этого в промышленных и международных стандартах автор предлагает называть “парадигмой программирования”. (Авторское понимание объектно-ориентированной парадигмы программирования смотри в [3]).
РИ, 2002, № 1
119