Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных
Предложены подходы к контролю корректности алгоритмов на основе анализа специфицируемых данных и подходы к оптимизации последовательных алгоритмов в результате преобразования потоков данных.-------------- Запропоновано підходи до контролю коректності алгоритмів на підставі аналізу даних, що специфі...
Збережено в:
| Дата: | 2008 |
|---|---|
| Автор: | |
| Формат: | Стаття |
| Мова: | Російська |
| Опубліковано: |
Інститут програмних систем НАН України
2008
|
| Теми: | |
| Онлайн доступ: | https://nasplib.isofts.kiev.ua/handle/123456789/2604 |
| Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
| Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| Цитувати: | Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных / В.Г. Акуловский // Проблеми програмування. — 2008. — № 4. — С. 84-93. — Бібліогр.: 5 назв. — рос. |
Репозитарії
Digital Library of Periodicals of National Academy of Sciences of Ukraine| _version_ | 1860007600602480640 |
|---|---|
| author | Акуловский, В.Г. |
| author_facet | Акуловский, В.Г. |
| citation_txt | Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных / В.Г. Акуловский // Проблеми програмування. — 2008. — № 4. — С. 84-93. — Бібліогр.: 5 назв. — рос. |
| collection | DSpace DC |
| description | Предложены подходы к контролю корректности алгоритмов на основе анализа специфицируемых данных и подходы к оптимизации последовательных алгоритмов в результате преобразования потоков данных.--------------
Запропоновано підходи до контролю коректності алгоритмів на підставі аналізу даних, що специфікуються і підходи до оптимізації послідовних алгоритмів у результаті перетворення потоків даних.------------
The approaches to the control of a correctness of algorithms, over the analysis of the data which are specified also approaches to optimization of consecutive algorithms as a result of transformation of streams of the data are offered.
|
| first_indexed | 2025-12-07T16:39:56Z |
| format | Article |
| fulltext |
Інструментальні засоби і середовища програмування
© В.Г. Акуловский, 2008
84 ISSN 1727-4907. Проблеми програмування. 2008. № 4
УДК 519.683
В.Г. Акуловский
НЕКОТОРЫЕ ПОДХОДЫ К КОНТРОЛЮ И ПРЕОБРАЗОВАНИЮ
АЛГОРИТМОВ НА ОСНОВЕ АНАЛИЗА СПЕЦИФИЦИРУЕМЫХ
ДАННЫХ
Предложены подходы к контролю корректности алгоритмов на основе анализа специфицируемых дан-
ных и подходы к оптимизации последовательных алгоритмов в результате преобразования потоков
данных.
Роль данных в процессе разработки
алгоритмов и программ чрезвычайно вы-
сока, что подтверждается, например, сле-
дующей цитатой [1]: “Хотя операции и
данные, эти активные и пассивные про-
граммные компоненты, играют совер-
шенно различные роли в каждой конкрет-
ной программе, совершенно невозможно
рассматривать одни в отрыве от других”.
Необходимость совместной разработки
потоков управления и данных давно осоз-
нана программистским сообществом. Это
осознание нашло свое выражение в боль-
шинстве методологий программирования,
в которых используются специальные
средства для описания данных. В боль-
шинстве случаев, однако, это описание,
выполненное в графической форме, пред-
ставляет собой отдельный документ в па-
кете документов, сопровождающих разра-
ботку. Это, очевидно, может служить ис-
точником ошибок, связанных с неадекват-
ностью различных документов, что осо-
бенно вероятно при большом их объеме.
В данной работе будем рассматри-
вать совместно (в рамках единого фор-
мального аппарата) потоки управления и
данных и на основании этого подхода ре-
шать некоторые аспекты задач построения,
контроля корректности и преобразования
алгоритмов. Для этого воспользуемся рас-
ширенной алгеброй алгоритмов (САА-Р)
[2], которая является одним из направ-
лений развития известной алгебры алго-
ритмов Глушкова [3], и результатами, по-
лученными в [4], где выполнена формали-
зация взаимосвязи операторов и данных и
предусмотрена возможность специфика-
ции данных для каждого оператора.
Используемый формальный аппарат
представляет собой систему алгоритмиче-
ских алгебр – ΩΩΩΩ,L,U , где U – множе-
ство операторов, L – множество логиче-
ских условий, Ω – сигнатура операций,
состоящая из логических операций – 1ΩΩΩΩ ,
принимающих значения на множестве L и
операций – 2ΩΩΩΩ , принимающих значения
на множестве операторов U . Операции
множества 2ΩΩΩΩ это * – композиция (после-
довательное выполнение операторов),
3
α
– дизъюнкция (разветвление вычислитель-
ного процесса по трем направлениям),
α − итерация (цикл, соответствует про-
граммной конструкции WHILE) и их про-
изводные.
Известно, что основным подходом к
разработке алгоритмов является его де-
композиция, осуществляемая с пониже-
нием уровня абстракции на каждом оче-
редном этапе разработки. Этот подход
реализован в виде метода структурного
проектирования программ (МСПП) [5],
формальной основой которого является
алгебра алгоритмов.
Поскольку САА-Р, являющаяся
средством, определяющим потоки управ-
ления, расширена за счет введения в рас-
смотрение данных, то в рамках МСПП
будем анализировать возможности по-
строения алгоритма с учетом общих
свойств данных, обрабатываемых этим
алгоритмом. Под контролем корректности
алгоритма будем понимать контроль огра-
ничений, налагаемых на специфицируемые
данные.
В связи с тем, что в данной работе
мы коснемся только некоторых аспектов и
Інструментальні засоби і середовища програмування
85
этапов разработки алгоритмов, будем при
его построении использовать только одну
из возможных операций САА-Р – компо-
зицию, подразумевая, что любой оператор,
образующий алгоритм, может представ-
лять собой и/или содержать любые опера-
ций САА-Р.
1. Проектирование структуры и кон-
троль корректности алгоритма
Прежде, чем рассматривать струк-
туру алгоритмов, определим основные ис-
пользуемые далее понятия.
Самым общим случаем оператора
алгебры будем считать алгоритм решения
задачи (в дальнейшем алгоритм), который
определим таким образом.
Определение 1. Произвольным
алгоритмом назовем оператор U∈ΑΑΑΑ , ко-
торый запишем в виде
)Δ()Δ( ′′′ ΑΑΑΑ , (1)
где ∆∆∆∆′ – спецификация данных, образую-
щих область определения, ∆∆∆∆ ′′ –
спецификация данных, образующих об-
ласть значений оператора, ∆∆∆∆∆∆∆∆∆∆∆∆ ′′∪′= –
множество всех данных, доступных алго-
ритму, которое является его информаци-
онным множеством. Область определения
будем называть входными, а область зна-
чений выходными данными. Будем гово-
рить, что в результате выполнения алго-
ритма, решается некоторая задача, а вы-
числитель переходит из состояния ∆∆∆∆′ в
состояние ∆∆∆∆ ′′ .
Поскольку вычислитель не в со-
стоянии выполнить переход из состояния
∆∆∆∆′ в состояние ∆∆∆∆ ′′ за один “шаг”, то его
(этот переход) необходимо реализовать в
виде некоторого количества элементар-
ных, выполняемых вычислителем “шагов”,
т.е. записать алгоритм в виде программы
на некотором языке программирования.
Для получения программы, адек-
ватной исходному алгоритму, необходимо
осуществлять его поэтапную (поуровне-
вую) декомпозицию, т.е. необходимо
представить его в виде уровней со множе-
ством связанных и согласованных компо-
нентов (модулей) на каждом из них. При
чём степень абстрактности (детализации)
на каждом следующем уровне декомпози-
ции необходимо понижать (повышать).
В качестве вышеупомянутых ком-
понент будем использовать операторы
САА-Р, которые в данном случае опреде-
лим следующим образом.
Определение 2. Операторы, с по-
мощью которых строится алгоритм, это
операторы вида:
U)D(A)D( ∈′ , (2)
у которых ∆∆∆∆∈D – область определения
(входные данные), а ∆∆∆∆∈′D – область его
значений (выходные данные). Эти опера-
торы обрабатывают некоторое подмноже-
ство входных данных ∆∆∆∆⊂D , изменяют их
и порождают новые данные, формируя та-
ким образом подмножество выходных
данных ∆∆∆∆⊂′D . Для множеств D иD ′ вы-
полнимо любое из следующих соотноше-
ний: ,DD,DD ⊆′′⊆ ∅=′∩ DD .
С целью повышения строгости из-
ложения приведем следующую аксиому.
Аксиома 1. Любой алгоритм и лю-
бой входящий в него оператор (за исклю-
чением элементарных) может быть пред-
ставлен в виде композиции (последова-
тельности) двух (или более) операторов
)D
~
(A)D
~
(*)D̂(A)D̂()D(D)A( ′′′′′=′ , для кото-
рых выполняются такие соотношения:
D
~
D̂D ∪= , D
~
D̂D ′∪′=′ .
Очевидно, существование подоб-
ной аксиомы подразумевалось при созда-
нии различных методов и методологий
программирования, основанных на де-
композиции алгоритмов. Однако, на-
сколько известно автору, в явном виде она
не формулировалась.
Запись оператора в форме, приве-
денной в аксиоме 1, будем называть ре-
гулярной схемой (РС). Оператор, стоящий
справа от знака равенства – исходным, а
операторы, расположенные слева – произ-
водными.
В соответствии с аксиомой 1, и
расширяя возможности МСПП, будем
согласованно декомпозировать операторы
и обрабатываемые ими данные. В резуль-
тате каждого шага декомпозиции получим
новый уровень алгоритма, представляю-
щий собой множество регулярных схем
(РС), каждая из которых описывает один
Інструментальні засоби і середовища програмування
86
из операторов предыдущего уровня. Таким
образом, алгоритм будет представлять
собой суперпозицию операторов.
Алгоритм (1) будем называть нуле-
вым уровнем декомпозиции и будем пола-
гать, что на этом уровне специфицированы
глобальные входные и выходные данные.
При рассмотрении процесса деком-
позиции алгоритма будем анализировать
свойства специфицируемых данных и
формулировать ограничения на их исполь-
зование.
В общем виде (для любого уровня
декомпозиции) любой оператор (2) пред-
ставляет собой РС вида:
),(1)(*...*)()(*
*...*)
1
(1
1
)
1
( )(
1 i
n
Di
n
Ai
n
Di
j
DAi
j
D
iDiAiD)D(AD
i
j
i
m
i
m
i
m
′+′
′+=′
+
(3)
где верхний индекс соответствует номеру
уровня, а нижний идентифицирует опера-
тор внутри РС и обрабатываемые им дан-
ные. Ограничение на обрабатываемые
данные в соответствии с аксиомой 1 для
этого уровня запишем в виде
i
n
D...i
j
D...i
1
D D i
m ∪∪∪∪= , (4)
i
n
D...i
j
D...i
1
D D i
m ′∪∪′∪∪′=′ . (5)
Анализируя данные на выходе не-
которого оператора, можно заметить, что
некоторые из них – промежуточные, т.е. не
влияют на результат решения задачи, спе-
цифицируемой в рамках данной РС, а по-
требуются на следующем шаге декомпози-
ции. И естественным является желание
отложить их спецификацию (уменьшить
объем специфицируемых данных) до того
этапа разработки, на котором эти данные
будут востребованы. Исполнению этого
препятствуют жесткие ограничения ак-
сиомы 1. Для ослабления упомянутого
ограничения разобьем выходные данные
на два подмножества i
i
Dпромi
i
D D i
i ∪′′=′ и
i
i
D ′′ будем называть выходными, а
i
i
Dпром – промежуточными данными.
Для этого случая РС (3) перепишем в
виде
),пром,(1)(*
*...*)пром,()(*...
...*)
1
пром,
1
(1
1
)
1
( )(
1
i
n
Di
n
Di
n
Ai
n
D
i
i
Di
i
DAi
i
D
iDiDiAiD)D(AD
i
i
i
m
i
m
i
m
′′+
′′
′′+=′
+
а ограничение (5) примет вид
i
n
i
j
i
1
i
m D...D...D D ′′∪′′∪′′=′ ∪∪ . (6)
В результате количество специфи-
цируемых для исходного оператора дан-
ных сократится без потерь в полноте спе-
цификации.
Далее определим понятия глобаль-
ных и локальных данных, которые обо-
значим соответственно i
j
лi
j
гл D иD .
Будем полагать, что i
j
гл D доступны всем
операторам РС и в выражении (3) специ-
фицированы именно глобальные данные.
Локальные данные i
j
лD локализованы в
рамках каждого оператора, входящего в
РС. На введенные типы данных нало-
жено ограничение
∅=∩ i
j
лi
j
гл D D , (7)
для любых i и j.
Когда на некотором i+1-ом уровне
декомпозиции специфицируются локаль-
ные данные, то выражение (3) необхо-
димо записать в виде
)(1)1л,*(...
(8)...*)()1л,*(
*...*)
1
(1
1
)1
1
л,
1
( )(
гл
1гл
гл
i
n
Di
n
Ai
n
Di
n
D
i
j
DAi
j
Di
j
D
iDiAiDiD)D(AD
гл
глi
j
глi
m
i
m
i
m
′++
′+
′++=′
+
и для данного случая имеет место сле-
дующее ограничение:
∅=++∩+ ∩∩∩ 1i
nDл.1i
jDл1i
1Dл ..... . (9)
Інструментальні засоби і середовища програмування
87
На следующем i+2-ом уровне оператор (8)
будет записан в виде
),1(2)2л,1*(...
...*)1()2л,1*(...
...*)1
1
(2
1
)2
1
л,1
1
(
)()1л,(
гл
2гл
гл
1гл
+′+++
+′++
+′+++=
=′+
+
+
i
n
Di
n
Ai
n
Di
n
D
i
j
DAi
j
Di
j
D
iDiAiDiD
i
j
DAi
j
Di
j
D
гл
глi
j
гл
глi
j
где 1i
j
Di
j
D1i
j
D лглгл +∪=+ , т. е. локальные
на i+1-ом уровне данные рассматриваются
как глобальные на i+2 уровне и для
1i
j
Dгл + выполняется соотношение (4).
Поскольку дальнейшее рассмотре-
ние будет вестись в рамках одной РС, а их
сочетания рассматриваться не будут, упро-
стим систему обозначений, отказавшись от
указания глобальности и локальности дан-
ных и лишней индексации, в тех случаях,
когда в ней нет необходимости.
Для продолжения декомпозиции ал-
горитма будем детализовать спецификации
входных и выходных данных, а РС запи-
шем в виде
)()(*...*)()(*
*...*)
1
(
1
)( )( 1
k
D
k
A
k
D
j
DA
j
D
DAD)DA(D
j ′′
′=′
Представим входные данные в виде
i
D
i
DD присх
i ∪= , где
i
Dисх – исход-
ные, а
i
Dпр – производные данные,
на которые накладывается ограничение
вида:
∅=∩ i
пр
i
исх DD (10)
и которые в исходном состоянии могут
быть как определены (инициализированы),
так и находиться в неопределенном (не-
инициализированном) состоянии. В пос–
леднем случае такие неопределенные
данные должны быть определены в про-
цессе выполнения алгоритма.
i
Dпр - множество производных дан-
ных, которые изменяются в процессе вы-
полнения алгоритма.
Уточняя структуру исходных дан-
ных
i
Dисх , представим его в виде двух
подмножеств
i
D
i
D
i
D иницconstисх ∪= , где
i
Dconst – множество неизменяемых
данных, которые инициируются до начала
выполнения алгоритма и в дальнейшем
остаются неизменными, и все они исполь-
зуются (должны использоваться) в каче-
стве исходных (входных) данных, т.е.
;......
......
1
1
k
D
i
DD
n
D
i
DD constconstconst
∪∪∪∪⊆
⊆∪∪∪∪
i
Dиниц – однократно инициализиру-
ются в процессе выполнения алгоритма и в
дальнейшем остаются неизменными, и все
они используются (должны использо-
ваться) в качестве исходных (входных)
данных, т.е.
.......
......
1
1
иниц
k
D
i
DD
n
D
i
DD инициниц
∪∪∪∪⊆
⊆∪∪∪∪
.
Множество выходных данных пред-
ставим в виде объединения следующих
множеств:
i
DDD иниц
i
пр
i ∪=′ .
Далее введем вспомогательные
множества:
i
вв D – вводимые данные (посту-
пающие с устройств ввода);
i
выв D – выводимые (на внешние
устройства) данные.
Эти множества обладают такими
свойствами:
i
D
i
DD приниц
i
вв ∪⊂ ,
i
D
i
DD i
выв ′∪⊆ .
Учитывая появление этих типов
данных на множестве U выделим два под-
множества операторов, элементами кото-
рых являются U)D(R)(УВВ i
вв
i ∈ – опера-
торы ввода, где УВВ – спецификация уст-
ройства ввода и UWD ii ∈УВыв)()(выв –
операторы вывода, где УВыв – специфи-
кация устройства вывода.
Інструментальні засоби і середовища програмування
88
Теперь на основании приведенных
свойств введем ограничения на использо-
вание построенных множеств.
Для множества
i
Dconst имеют место
такие ограничения:
∅=∩
i
DD const
i
вв , (11)
т.е. вводимые данные не изменяют
констант;
∅=′∪∪′∪∪′∩
∩∪∪∪∪
k
D
i
DD
n
D
i
DD constconstconst
......
......
1
1
,
(12)
т. е. константы не могут выступать в каче-
стве выходных данных.
Для
i
Dиниц имеют место следующие
ограничения:
)D(A)D( ii ′∃ и только один, для
которого выполняется соотношение:
i
иниц D
i
D ′⊆ ; (13)
)D(R)(УВВ i
вв
i∃ и только один, для кото-
рого выполняется соотношение:
i
иницвв D
i
D ⊆ , (14)
т.е., в случаях (13, 14) данные инициали-
зируются однократно.
Для
i
Dпр имеют место следующие
ограничения:
)D(A)D( ii ′∃ по крайней мере один,
для которого выполняется соотношение
i
пр D
i
D ′⊆ (15)
и он предшествует любому другому опе-
ратору для которого выполняется соотно-
шение i
пр D
i
D ⊆ , т.е. использова-
нию данных должна предшествовать их
инициализация.
Приведенные ограничения нахо-
дятся в очевидных соотношениях, некото-
рые из них приведем в качестве примера.
Если
i
DD вв
i
иниц ⊆ , то ограничение
(13) становится не актуальным, а
если
i
DD i
иниц ′⊆ , то не актуально ограниче-
ние (14).
Если
i
DD иниц
i
вв ⊂ , то
∅≠∩
i
DD пр
i
вв .
Если ∅≠∩
i
DD иниц
i
вв , то ограниче-
ние (13) выполняется для множества
i
ввинициниц D/
i
D
i
D̂ = .
Если
i
DD вв
i
пр ⊆ , то ограничение
(15) становится не актуальным.
Если
i
DD пр
i
вв ⊆ , то
∅=∩
i
DD иниц
i
вв .
Если ∅≠∩
i
DD пр
i
вв , то ограниче-
ние (15) выполняется для множества
i
ввпрпр D/
i
D
i
D̂ = и т.д.
В первом разделе работы рассмот-
рена возможность на некоторых этапах
разработки согласовывать процесс деком-
позиции операторов, образующих алго-
ритм, с декомпозицией специфицирован-
ных для этих операторов данных.
В процессе рассмотрения предло-
жены некоторые варианты детализации
данных и выявлены ограничения на их
использование. В случае спецификации
предложенных типов данных на требуе-
мом уровне декомпозиции открывается
возможность проверки соответствия алго-
ритма сформулированным ограничениям
и, таким образом, контроля его корректно-
сти. При этом на начальных этапах контро-
лируются ограничения (4–7, 9), а на после-
дующих, после детализации данных, огра-
ничения (10–15) с учетом связывающих их
соотношений. Заметим, что контроль мо-
жет быть осуществлен как в ручном, так и
в автоматизированном режиме.
2. Преобразование алгоритмов
Структура алгоритма (последова-
тельность выполнения операторов) в су-
щественной мере определяется последова-
тельностью обработки данных и должна
учитывать тип разрабатываемой про-
граммной системы. В данном случае, имея
в виду последовательные алгоритмы, рас-
смотрим потоки управления и определим
потоки данных в алгоритмах.
Будем полагать, что потоки управ-
ления, как вышеотмечено, организуются
операциями САА-Р (в рассматриваемом
случае операцией композиция), и пару
операторов
Інструментальні засоби і середовища програмування
89
)
1i
D(A)
1i
D(*)
i
D(
i
A)D( 1ii +′+′ + , будем
называть непосредственно, а
)
k
D(
k
A)
k
D(*...*)
j
D(A)
j
D(*... j ′′ , где
k > j опосредованно связанными по
управлению.
Понятие поток данных, определим
следующим образом.
Определение 3. Поток данных – это
такое множество данных D , которое дос-
тупно (специфицировано на входе) неко-
торому оператору iA и оно же после обра-
ботки этим оператором (специфицировано
на его выходе) становится доступно неко-
торому оператору jA (i < j) и т. д., т. е.
множество данных D трансформируется в
процессе обработки последовательностью
операторов, в рамках РС. Будем говорить,
что данные с выхода предшествующего
оператора подаются на вход последую-
щего и/или последующих операторов.
Заметим, что поток данных в после-
довательном алгоритме носит виртуаль-
ный характер, однако такая абстракция
оказывается весьма удобной при совмест-
ном рассмотрении потоков управления и
обрабатываемых этим потоком данных.
Требование к потокам данных в по-
следовательных алгоритмах, удовлетворе-
ние которого обеспечит более высокое
качество, а именно более высокий уровень
понятности и отлаживаемости алгоритма
(программы), сформулируем следующим
образом.
Количество потоков данных на лю-
бом уровне декомпозиции и в любой РС
должно быть минимальным. Очевидно, что
оптимальным, но крайне редко реализуе-
мым, является алгоритм с единственным
потоком данных.
В этом разделе будем решать задачу
преобразования РС, с целью удовлетво-
рения сформулированного требования и
докажем возможность такого преобразо-
вания при некоторых ограничениях. Для
решения этой задачи, воспользовавшись
результатами, полученными в [4], и разви-
вая их, введем понятие независимых по
данным и связанных данными операторов.
Будем различать “прямые” и “об-
ратные” связи по данным и прямую связь
определим так.
Определение 4. В регулярной схе-
ме вида
)()(*...*)()(*
*...*)
1
(
1
)( )( 1
k
D
k
A
k
D
j
DA
j
D
DAD)DA(D
j ′′
′=′
операторы )
j
D(A)
j
D( и)
i
D(
i
A)D( ji ′′ ,
где i < j прямо связаны по данным (в
дальнейшем прямо связаны), если они не-
посредственно или опосредованно свя-
заны по управлению и для них выполня-
ется следующее соотношение:
∅≠∩′ ji DD , т. е. область значений
оператора )
i
D(
i
A)D( i ′ пересекается с
областью определения оператора
)
j
D(A)
j
D( j ′ . При наличии такой связи
оператор )
i
D(
i
A)D( i ′ всегда должен
предшествовать оператору )
j
D(A)
j
D( j ′ .
Под длиной прямых связей (рас-
стоянием между прямо связанными опера-
торами) будем понимать количество опе-
раторов, разделяющих связанные опера-
торы и, таким образом, длина связи, кото-
рую обозначим d, вычисляется по формуле
d = j – i – 1.
Особого рассмотрения заслуживает
случай, когда длина связи d = 0, т. е. слу-
чай, когда операторы непосредственно
связаны по управлению. Для этого случая
введем следующее определение.
Определение 5. Любые два опера-
тора )
j
D(A)
j
D( и)
i
D(
i
A)D( ji ′′ назо-
вем непосредственно связанными по
данным (в дальнейшем непосредственно
связанными), если ∅≠∩′ ji DD , а
расстояние между ними равно нулю, т. е.
j = i + 1. Непосредственная связь опреде-
ляет жестко заданную последовательность
обработки данных и эта последователь-
ность выполнения операторов не может
быть изменена.
Інструментальні засоби і середовища програмування
90
Теперь определим обратную связь.
Определение 6. Между любыми
операторами
)
j
D(A)
j
D( и)
i
D(
i
A)D( ji ′′ присутст-
вуют обратные связи, трех видов, опре-
деляемые следующими соотношениями:
1) ∅≠∩
j
DD i , 2) ∅≠′∩
j
DD i ,
3) ∅≠′∩′
j
D
i
D , которые могут
присутствовать в любом сочетании.
На этом основании введем ещё не-
сколько производных понятий, которыми
воспользуемся в дальнейшем.
Определение 7. Многосвязным
назовем оператор, который прямо связан
(см. определение 4) с несколькими дру-
гими операторами, при наличии или в от-
сутствии непосредственной связи
(см. определение 5).
Определение 8. Независимыми по
данным (в дальнейшем независимыми)
назовем любые два непосредственно свя-
занных по управлению оператора
)D̂(B)D̂(*)DA()D( ′′ , если для них выпол-
няются следующие ограничения:
∅=∩ D̂D , ∅=′∩ D̂D , ∅=∩′ D̂D ,
∅=′∩′ D̂D . Очевидно, что для них вы-
полняется тождественное соотношение:
)DA()D(*)D̂(B)D̂()D̂(B)D̂(*)DA()D( ′′=′′ .
Определение 9. Полностью неза-
висимым назовем оператор, если он неза-
висим от любого оператора входящего в
РС, и таким образом он может распола-
гаться в любом месте РС.
Прежде чем рассматривать воз-
можные преобразования алгоритмов, вве-
дем ещё одну аксиому, по аналогии ак-
сиомы 1.
Аксиома 2. Любая пара операторов
непосредственно связанная по управлению
(операцией композиции) может рассмат-
риваться, как новый опера-
тор ))
~~
*ˆˆ D(D)A(D(A)D()D(A)D( ′=′′′′′ , для
которых выполняются соотношения
D
~
D̂D ∪= и D
~
D̂D ′∪′=′ .
Приведенные в работе аксиомы –
базовые и универсальные средства преоб-
разования алгоритмов, так как позволяют
создавать новые операторы за счет раз-
биения и объединения существующих. В
частности, возможно сокращение количе-
ства прямых связей в многосвязных опе-
раторах (см. определение 7) за счет раз-
биения такого оператора на несколько
других операторов с меньшим числом
прямых связей. Однако возможность из-
менения порядка следования операторов в
них не предусмотрена.
Для того, что бы с целью преобра-
зования алгоритмов иметь возможность
менять порядок следования операторов в
РС, рассмотрим непосредственно свя-
занные операторы и ослабим жесткое ог-
раничение, заданное определением 5. Для
этого рассмотрим возможные случаи пре-
образования операторов
)D̂(B)D̂(*)DA()D( ′′ , (16)
когда для них выполняются следующие
соотношения.
1. Рассмотрим общий слу-
чай непосредственной связи, когда вы-
полняется DD̂D
)
=∩′ , т. е. область значе-
ний оператора )DA()D( ′ пересекается с
областью определения оператора
)D̂(B)D̂( ′ . Для даного случая выполним
такую последовательность действий.
Оператор )DA()D( ′ представим (в
соответствии с аксиомой 1) в виде двух
операторов
)D(A)D(*)D(A)D()DA()D( 222111 ′′=′ , где
∅=∩′ 21 DD , ∅≠∩′ D̂D2 . В свою оче-
редь оператор )D̂(B)D̂( ′ представим в
виде )D̂(B)D̂(*)D̂(B)D̂()D̂(B)D̂( 222111 ′′=′ ,
таким образом, что ∅=∩′ 21 D̂D̂ ,
∅≠′∩ 2D1D̂ . В результате преобразова-
ния получены два непосредственно не
связанных оператора )D(A)D( 111 ′ ,
)D̂(B)D̂( 222 ′ и два непосредственно
связанных оператора )D(A)D( 222 ′ ,
)D̂(B)D̂( 111 ′ . Объединив последние, в
соответствии с аксиомой 2, получим три
непосредственно не связанных оператора,
т. е.
)ˆ()ˆ(*)
~
()
~
(*
*)()()ˆ()ˆ(*)(
222
111
DBDDABD
DADDBD)DA(D
′′
′=′′
,
(17)
Інструментальні засоби і середовища програмування
91
для которых выполняется ∅=∩′ D
~
D1 и
∅=∩′ 2D̂D
~
.
Далее рассмотрим частные случаи
непосредственной связи операторов, вы-
полняя аналогичные преобразования.
2. Когда DD̂ ′⊂ , последова-
тельность операторов (16) преобразуем с
виду
),()(*)(
)ˆ()ˆ(*)(
222 DBD)DAB(D
DBD)DA(D
′′′′′′=
=′′
(18)
где ∅=∩′′′ 2DD .
3. В случае, когда D̂D ⊂′ , последо-
вательность операторов (16) преобразуем
к виду:
),
~
()
~
(*)(
)ˆ()ˆ(*)(
111 DABD)D(AD
DBD)DA(D
′′
=′′
(19)
где ∅=∩′ D
~
D1 .
4. Когда DD̂ ′= , (20)
преобразование с точки зрения непосред-
ственной связи невозможно. В
результате нами рассмотренной возмож-
ности выделения непосредственно не свя-
занных операторов, проанализируем воз-
можные обратные связи между операто-
рами )D̂(B)D̂(*)DA()D( ′′ непосредственно
связанными по управлению и непосредст-
венно не связанными по данным. Для
этого рассмотрим все возможные варианты
всех видов обратных связей (см. опреде-
ление 6):
1. D̂D = 2. D̂D ′= 3. D̂D ′=′
D̂D ⊂ D̂D ′⊂ D̂D ′⊂′
DD̂ ⊂ D̂D
~ ⊂′ DD̂ ′⊂′
∅=∩ D̂D ∅=′∩ D̂D ∅=′∩′ D̂D
Из приведенных соотношений легко
увидеть, что во всех случаях и во всех
возможных сочетаниях этих случаев (за
исключением одного) операторы полно-
стью или частично совместно (в два этапа)
обрабатывают данные. Иначе, два опера-
тора решают единую задачу (связанные
задачи) обработки данных.
Исходя из вышеизложенного, сле-
дует вывод.
Последовательность двух операто-
ров, имеющая обратные (обратную) и не
имеющая непосредственную связь некор-
ректна (по крайней мере, неэффективна),
так как в этом случае необоснованно “раз-
рывается” поток данных (см. определение
3). В единственном случае отсутствие не-
посредственной связи оправдано, когда
выполняются три условия ∅=∩ D̂D ,
∅=′∩ D̂D , ∅=′∩′ D̂D , в результате
выполнения которых в соответствии с оп-
ределением 8 получаем независимые опе-
раторы.
Учитывая этот вывод очевидно, что
рассмотренные случаи преобразования
операторов (17–19), с целью устранения
непосредственной связи, имеет практиче-
ский смысл только в том случае, когда в
результате такого преобразования полу-
чены независимые операторы. То есть на
преобразования (17–19), накладывается
достаточно жесткое ограничение, при
удовлетворении которого, однако, можно
выбирать произвольную
последовательность выполнения этих
операторов. Заметим, что в случае (20)
пара операторов очевидно должна быть
преобразована в один.
Уточняя выше сформулированное
требование к последовательному алго-
ритму, можно сказать, с учетом приведен-
ных определений, что в РС должно быть
минимальное количество прямых связей.
Докажем возможность таких преобразова-
ний РС, в результате которых число пря-
мых связей будет уменьшено.
Теорема. В любой регулярной
схеме алгоритма, состоящей из трех или
более операторов, связанных
непосредственными и прямыми связями,
количество прямых связей может быть
сокращено за счет их преобразования в
непосредственные связи.
Доказательство. Рассмотрим
тройку операторов
)D̂(C)D̂(*)D(B)D()*DA()D( ′′′
))
, со всеми
возможными в такой тройке прямыми и
непосредственными связями. Для нагляд-
ности и краткости изложения представим
эти связи и возможные результаты преоб-
разования этой последовательности опе-
Інструментальні засоби і середовища програмування
92
раторов в таблице, с указанием использо-
ванных случаев преобразования. При этом
будем использовать упрощенную систему
обозначений, где прямые стрелки указы-
вают непосредственные связи как по
управлению, так и по данным, дугами
прямые связи, а “*” – непосредственные
связи по управлению. Опустим так же
спецификации данных.
Таблица
а AB → C
б A1 *AB → C (16)
в B2* AB → C (15)
1
A → B
* C
г A1 * B2 * AB → C (14)
а A → BC
б A → BC * B1 (16)
В A → BC *C2 (15)
2
A * B
→ C
Г A → BC * B1 * C2 (14)
А A → BC
Б AB → C
В A1 * AB → C (16)
Г A → BC * B1 (16)
д B2 * AB → C (15)
е A → BC * C2 (15)
ж A1 * B2 * AB → C (14)
3
A → B
→ C
з A → BC * B1 * C2 (14)
Из приведенной таблицы видно,
что для каждого возможного случая связи
между операторами в результате исполь-
зования аксиомы 2 и соотношений (17–19)
(в случае, когда такие преобразования
возможны, и вышеприведенное ограни-
чение удовлетворяется) получены ре-
зультаты преобразований, в которых пря-
мые связи преобразованы в непосредст-
венные и, таким образом число прямых
связей сокращено. Отметим, что в случае
получения в результате преобразования
полностью независимого оператора (см.
определение 9), приведенные соотноше-
ния так же выполняются.
Возьмём случай, когда количество
операторов в РС больше трёх и/или новые
операторы получены в результате преоб-
разований, в частности, в результате раз-
биения многосвязных операторов. В этом
случае при условии выполнения требова-
ния по наличию непосредственных и пря-
мых связей, все возможные сочетания,
приведены в таблице, всегда можно вы-
брать тройку операторов, к которым
применимы какие-либо из предлагаемых
преобразований. В результате реализации
выбранных способов преобразования ко-
личество прямых связей будет сокращено
(заменено непосредственными связями).
Теорема, таким образом, доказана.
Описанный в данной работе под-
ход, который намечает пути и возможно-
сти преобразования алгоритма, не предла-
гает конкретных решений. В частности
разбиение, объединение и построение но-
вых операторов, а так же выбор способов
преобразования их последовательностей,
существенно зависит от решаемой алго-
ритмом задачи и требует творческого под-
хода.
Заключение
В предлагаемой работе предложен
подход к построению и контролю алго-
ритмов на основании анализа, и детализа-
ции специфицируемых данных. В частно-
сти, сформулированы свойства и ограни-
чения на используемые данные, проверка
которых и является средством контроля.
Полнота предлагаемой формы контроля
зависит от полноты набора ограничений на
обработку данных и дальнейшая детализа-
ция данных, очевидно, позволит расши-
рить представленный набор.
Отметим, что в данной работе не
рассмотрена ситуация, когда глобальные
или локальные данные одного из уровней
декомпозиции могут быть востребованы на
другом уровне. И хотя такая ситуация яв-
ляется нежелательной, что отмечалось
многими авторами (например [1]) и её
следует избегать, тем не менее такая мето-
дологическая проблема существует. Рас-
смотрение этой самостоятельной задачи
автор намерен осуществить в дальнейшем.
Інструментальні засоби і середовища програмування
93
Во втором разделе определено по-
нятие потоков данных в последователь-
ных алгоритмах. Определены различные
виды связей в операторах, образующих РС,
и предложен подход к преобразованию
алгоритмов на основе введенных аксиом и
преобразования непосредственно связан-
ных операторов. Доказана возможность
сокращения количества прямых связей в
последовательных алгоритмах.
Дальнейшее развитие данного
подхода может состоять в анализе других
типов связей и построении методов
преобразования алгоритмов на основе
такого анализа.
Перспективным представляется ис-
пользование потоков данных при построе-
нии и преобразовании параллельных алго-
ритмов. Однако, с этими алгоритмами дело
обстоит существенно сложнее, так как
требуемая степень их параллелизма опре-
деляется не только решаемой задачей, а
возможностями, ограничениями аппарат-
ной и операционной среды.
На основании результатов, полу-
ченных в данной работе можно сформули-
ровать только некоторые соображения. В
частности, в том случае, когда в процессе
разработки получен полностью независи-
мый оператор (см. определение 9), то он
естественно может выполняться парал-
лельно (псевдопараллельно) с любым дру-
гим оператором РС, которой он принадле-
жит, и в этом случае не требуются допол-
нительные усилия для распараллеливания
алгоритма. Независимый оператор может
выполняться параллельно с соседним, но
при этом потребуется их синхронизовать
по управлению. Для связанных операторов
параллельное выполнение сопряжено с
синхронизацией по совместно обрабаты-
ваемым данным. Несмотря на то, что за-
дача разработки и преобразования парал-
лельных алгоритмов в данной работе не
решалась, тем не менее, с точки зрения
автора, предложенный подход с использо-
ванием потоков данных является перспек-
тивным для решения названной задачи. И
это является ещё одним направлением раз-
вития полученных результатов.
1. Турский В. Методология программирова-
ния. – М.: Мир, 1981. 264 с.
2. Акуловский В.Г. Расширенная алгебра
алгоритмов//Проблеми програмування.-
2007. – № 3. С. 3–15.
3. Андон Ф.И., Дорошенко А.Е., Цейт-
лин Г.Е., Яценко Е.А. Алгеброалгорит-
мические модели и методы параллельного
программирования. – Киев: Академпері-
одика, 2007. – 634 с.
4. Акуловский В.Г. Формализация взаимосвя-
зей операторов и данных в рамках
расширенной алгебры алгоритмов //
Кибернетика и системный анализ. – 2008.
– № 6.
5. Цейтлин Г.Е., Бакулин А.В. Многоуровне-
вые структурированные проекты про-
грамм и их обоснование // Кибернетика и
системный анализ. – 1991. – № 5. –
С. 98–107.
Получено 03.10.2008
Об авторе:
Акуловский Валерий Григорьевич,
кандидат технических наук, доцент ка-
федры информационных систем и техно-
логий
Тел. 8 050 941 0566;
e-mail: valeryakulovskiy@rambler.ru
Место работы автора:
Академия таможенной службы Украины.
49000, Днепропетровск,
ул. Дзержинского 2\4.
Тел/Факс: (056) 745 5596, (0562) 471791.
e-mail: academy@amsu.dp.u
|
| id | nasplib_isofts_kiev_ua-123456789-2604 |
| institution | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| issn | 1727-4907 |
| language | Russian |
| last_indexed | 2025-12-07T16:39:56Z |
| publishDate | 2008 |
| publisher | Інститут програмних систем НАН України |
| record_format | dspace |
| spelling | Акуловский, В.Г. 2008-12-15T13:21:46Z 2008-12-15T13:21:46Z 2008 Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных / В.Г. Акуловский // Проблеми програмування. — 2008. — № 4. — С. 84-93. — Бібліогр.: 5 назв. — рос. 1727-4907 https://nasplib.isofts.kiev.ua/handle/123456789/2604 519.683 Предложены подходы к контролю корректности алгоритмов на основе анализа специфицируемых данных и подходы к оптимизации последовательных алгоритмов в результате преобразования потоков данных.-------------- Запропоновано підходи до контролю коректності алгоритмів на підставі аналізу даних, що специфікуються і підходи до оптимізації послідовних алгоритмів у результаті перетворення потоків даних.------------ The approaches to the control of a correctness of algorithms, over the analysis of the data which are specified also approaches to optimization of consecutive algorithms as a result of transformation of streams of the data are offered. ru Інститут програмних систем НАН України Інструментальні засоби і середовища програмування Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных Деякі підходи до контролю й перетворення алгоритмів на основі аналізу даних, що специфікуються Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных Article published earlier |
| spellingShingle | Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных Акуловский, В.Г. Інструментальні засоби і середовища програмування |
| title | Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных |
| title_alt | Деякі підходи до контролю й перетворення алгоритмів на основі аналізу даних, що специфікуються Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных |
| title_full | Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных |
| title_fullStr | Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных |
| title_full_unstemmed | Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных |
| title_short | Некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных |
| title_sort | некоторые подходы к контролю и преобразованию алгоритмов на основе анализа специфицируемых данных |
| topic | Інструментальні засоби і середовища програмування |
| topic_facet | Інструментальні засоби і середовища програмування |
| url | https://nasplib.isofts.kiev.ua/handle/123456789/2604 |
| work_keys_str_mv | AT akulovskiivg nekotoryepodhodykkontrolûipreobrazovaniûalgoritmovnaosnoveanalizaspecificiruemyhdannyh AT akulovskiivg deâkípídhodidokontrolûiperetvorennâalgoritmívnaosnovíanalízudanihŝospecifíkuûtʹsâ |