Нисходящее проектирование алгоритмов в рамках алгеброалгоритмического подхода

УДК 004.421

А.Е. ДОРОШЕНКО, В.Г. АКУЛОВСКИЙ

НИСХОДЯЩЕЕ ПРОЕКТИРОВАНИЕ АЛГОРИТМОВ В РАМКАХ АЛГЕБРОАЛГОРИТМИЧЕСКОГО ПОДХОДА

Анотація. Показана можливість декомпозиції алгоритмічних конструкцій, що дозволяє реалізувати стратегію низхідного проектування алгоритмів у межах алгеброалгоритмічного підходу. Ключові слова: алгоритми, декомпозиція алгоритмічних конструкцій, низхідна стратегія проектування алгоритмів, система алгоритмічних алгебр.

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

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

Abstract. Decomposing possibility of algorithmic constructions permitting to realize top-down design strategy of algorithms within the framework of algebra-algorithmic approach is shown.

Keywords: algorithms, algorithmic constructions decomposing, top-down strategy of algorithms planning, system of algorithmic algebras.

1. Введение

Развивая алгеброалгоритмический подход к программированию [1], с учетом важности роли, которую играют данные [2, 3], авторы предложили систему алгоритмических алгебр (САА/Д). САА/Д представляет собой двухосновную алгебраическую систему < U, L, W >, основами которой являются множество Д-операторов U и множество логических условий L, а W - её сигнатура, состоящая из W1 -операций, принимающих значения на множестве U, и W2 - логических операций, принимающих значения на множестве L [4, 5].

В рамках этого формального аппарата для описания алгоритмов используются Д-операторы, то есть операторы вида (D)X(D’), на входе и выходе которых специфицированы обрабатываемые данные. Использование Д-операторов обеспечивает возможность “имплантации” данных в формальный аппарат.

Отметим, что целью разработки подавляющего числа алгоритмов является его запись на некотором языке программирования, который назовем целевым. При этом требуется, чтобы полученные в результате разработки алгоритмические конструкции были достаточно просты и не вызывали затруднений при их реализации на этом языке программирования.

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

Решение задачи заключается в том, чтобы в результате декомпозиции исходных алгоритмических конструкций получать более детализованные описания алгоритма. В данном случае в качестве исходных и производных алгоритмических конструкций рассматриваются Д-операторы.

Описание алгебры в объеме, необходимом для понимания полученных результатов, приведено в разд. 2.

© Дорошенко А.Е., Акуловский В.Г., 2012

ISSN 1028-9763. Математичні машини і системи, 2012, № З

2. Алгебра алгоритмов с данными

САА/Д построена в результате модификации известной модели ЭВМ Глушкова. Модифицированная модель ЭВМ, представляющая собой (аналогично модели ЭВМ Г лушкова) два взаимодействующих автомата - управляющий (У) и операционный (О) - дополнена внешней средой (ВС) и показана на рис. 1.

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

Определение 1. Данными называется упорядоченная пара Ц=(Л..,К, где А. - адрес носителя данных А. с А, где А - множество адресов, К=( з1,...,зя) - кортеж значений, хранимый носителем данных и изменяющийся в процессе выполнения алгоритма. Состояние данных определяется текущим кортежем значений.

Модель функционирует следующим образом.

Д-операторы являются управляющими воздействиями, последовательно подаваемыми автоматом У на вход автомата О. Последний выполняет каждый поступивший Д-оператор, в результате чего изменяются данные во внешней среде.

Логическое условие, характеризующее значения некоторого подмножества данных ВС, передаётся с выхода операционного автомата на вход управляющего, замыкая обратную связь между этими автоматами. Управляющий автомат, в соответствии со значением

Рис. 1. Модифицированная модель ЭВМ п°лученн°го л°гическ°го

условия, подает на вход автомата О один из нескольких возможных Д-операторов, который становится следующим в кортеже Д-операторов, поступающих с выхода автомата У.

Функционирование модели носит дискретный характер, а каждым шагом этого процесса является выполнение очередного Д-оператора. Между завершением выполнения предшествующего и началом выполнения следующего Д-оператора никакие действия моделью не выполняются. Такой пошаговый процесс функционирования модели продолжается до его завершения или может продолжаться неопределенно долго.

Для алгебраического аппарата, основанного на данной модели, принципиально важным является понятие «состояние вычислительного процесса». Это состояние Ц ={Ц,..Ця} определяется значениями, принятыми всеми данными ВС.

Определение 2. Д-оператор Ц)Х(Ц) изменяет состояние вычислительного процесса (ВП), переводя его из любого исходного состояния Ц в результирующее состояние Ц . Состояние ВП изменяется в результате обработки Д-оператором Ц)Х(Ц) данных Ц с Ц, специфицированных на его входе, и продуцирования данных Цс Ц+1, специфицированных на его выходе. При этом для множеств данных Ц=Ц\ Ц и Ц = Ц+ \ Ц выполняются соотношения Ц эЦ сЦ’ и Ц эЦ сЦ . То есть данные, оставшиеся неизменными после

г — — г+1 г — — г+1 5

выполнения Д-оператора, имеют место как в предшествующем, так и в следующем за выполнением Д-оператора состоянии ВП.

В связи с определением 2 сделаем следующее небольшое отступление.

У О

а

D'

ВС

о

Из определения известно, что Д-оператор, обрабатывая специфицированные данные, переводит ВП из состояния Ц в состояние Ц+1, то есть делает это за один шаг. При достаточной сложности обрабатываемых данных и алгоритма обработки в нарушение требования, сформулированного во введении, программная реализация такого Д-оператора вызовет существенные затруднения. То есть необходимо разбить переход из исходного состояния в результирующее на некоторую последовательность более простых шагов. Этим, собственно, и обусловлена необходимость декомпозиции Д-операторов.

Наконец приведем единственную из сигнатуры алгебры операцию, которую будем использовать в данном случае.

Композиция Д-операторов

означает последовательное выполнение сначала Д-оператора (Ц)Х1Ц2), затем Д-оператора (Ц2)Х2Ц'2). То есть выполнение Д-оператора (Ц)Х1Ц[) непосредственно предшествует выполнению Д-оператора (Ц2)Х2Ц'2), а выполнение Д-оператора (Ц2)Х2Ц2) непосредственно следует за выполнением Д-оператора (Ц )Х1(Ц').

По поводу композиции Д-операторов будем утверждать следующее.

Утверждение. В результате выполнения композиции Д-операторов (Ц)Х1(Ц2) * (Ц2)Х2Ц) ВП последовательно переходит из некоторого исходного состояния Ц в состояния Ц+1 и Ц+2, для которых выполняется Ц сЦ, Ц, Ц с Ц+ и Ц с Ц+2.

Доказательство очевидно и следует из определения 2, определения операции и описания модели ЭВМ, из которой известно, что в промежутке между выполнением Д-операторов данные не изменяются.

На основе приведенных элементов САА/Д будем решать поставленную задачу.

3. Декомпозиция Д-операторов

Рассмотрим возможность декомпозиции Д-оператор (Ц) ХЦ'), то есть представление его в виде композиции двух других Д-операторов (Ц)ХЦ') = (Ц)Х(Ц[) * (Ц2)Х2Ц2^, где Д-оператор (Ц)ХЦ') называется исходным, а Д-операторы, связанные операцией «композиция (Ц )ХхЦ[) * (Ц2)Х2(Цу)», - производными.

Здесь уместно привести следующую цитату.

“Стало ясно, что решения о структурировании данных нельзя принимать без знания алгоритмов, применяемых к этим данным, и наоборот, структура и выбор алгоритмов существенным образом зависят от структуры данных. Говоря короче, строение программ и структуры данных неразрывно связаны” [6, стр. 8].

Из цитаты следует, что при декомпозиции Д-операторов совершенно необходимо учитывать обрабатываемые данные. В связи с этим рассмотрим особенности их обработки.

Во-первых, обработка данных, начатая Д-оператором, расположенным в композиции первым, может быть продолжена вторым Д-оператором. В связи с этой особенностью обработки данных введем следующее определение.

Определение 3. Д-операторы в композиции (Ц)Х1Ц[) *(Ц2)Х2Ц2) назовем информационно связанными (в дальнейшем связанными), если для специфицированных у них данных выполняется соотношение Ц пЦ ^0, и несвязанными, если Ц пЦ =0. Данные Ц = Ц пЦ будем называть связывающими.

Во-вторых, каждый из Д-операторов, входящих в композицию, в общем случае обрабатывает и продуцирует некоторое подмножество данных, на которые другой Д-

оператор не влияет. В частном случае производные Д-операторы могут обрабатывать различные данные.

В связи со второй особенностью обработки данных введем следующее определение. Определение 4. В композиции Д-операторов (Д)Х1(Д[) *(Е2)Х2(Е2) множества

данных ЦСБ = Д\ Е3, Д£ = ДЛ ЕР13 будем называть собственными. Для данных Д£, которые Д-оператором (Ц)Х1(Б[) не обрабатываются, выполняется соотношение Д£ пД=0. Для данных ЦСБ, которые не обрабатываются Д-оператором (Е2)Х2(Е2), - ЦСБ пЕ2 =0. Множества данных Д£ и Е[СВ могут быть пустыми.

Проиллюстрируем данные, введенные в определениях 3 и 4, с помощью рис. 2.

Принципиально важным для декомпозиции Д-операторов является то, что результат выполнения производных Д-операторов

должен полностью совпадать с результатом выполнения исходного. В связи с этим введем понятие их эквивалентности.

Определение 5. Д-

D1СБ D2СБ

Dl і D2

X! DСВ DСВ Х2 02

Рис. 2. Связывающие и собственные данные

оператор (О)ХО), переводящий ВП из состояния Д в состояние О+ эквивалентен композиции Д-операторов (Д)Х/О') *(Д)Х2(О'2), переводящей ВП из состояния О в состояние О+2, если при равенстве исходных состояний ВП Д = ОТ в результате их выполнения будут получены результирующие состояния 0+' = О+2.

Прежде чем приступить к доказательству реализуемости декомпозиции Д-операторов, остановимся на понятии элементарного Д-оператора.

Поскольку для общего случая сложно оценить трудность программной реализации Д-оператора, будем полагать, что Д-оператор, реализующий одну операцию целевого языка программирования, элементарный. Этот выбор весьма просто обосновывается: такой Д-оператор не нуждается в декомпозиции. Кроме того, будем полагать, что элементарный Д-оператор выполняется за один элементарный шаг ВП.

Теорема. Произвольный Д-оператор (О)Х(О), если он не элементарный, может быть декомпозирован, то есть представлен в виде эквивалентной ему композиции двух других Д-операторов (О')Хх(О[) * (02)Х2(02).

Доказательство.

Если Д-оператор (О)Х(О ) не элементарный, то он реализует, по крайней мере, две операции целевого языка программирования, каждая из которых может быть описана с помощью Д-оператора. Таким образом, этот Д-оператор может быть декомпозирован.

В общем случае будем полагать, что исходный Д-оператор, переводящий вычислительный процесс из состояния Д, такого, что Ос Д, в состояние Д', такое, что ДсДр

выполняет этот переход за несколько шагов в общем случае не элементарных. На каждом шаге выполняется некоторая последовательность операций, а в результате выполнения

указанной последовательности шагов данные Е, специфицированные на входе Д-оператора, преобразуются в данные Е', специфицированные на его выходе.

Предположим, что после некоторого I -го шага обработки получены данные, подлежащие дальнейшей обработке Е°, и результирующие данные, которые дальнейшей обработке не подлежат, Ег с Е'. А на следующем I +1 -ом шаге продолжается обработка данных Е° и начинается обработка множества данных Е” с Е, которые до этого момента не обрабатывались.

Разобьем последовательность операций на два этапа таких, что первый завершается I -ым шагом, а второй начинается с I +1 -го. Будем полагать, что каждый из этих этапов выполняется одним из производных Д-операторов.

В результате выполненного разбиения получаем композицию Д-операторов (Е1)Х1(Е'1) *(Е2)X2(Е2), для которых выполняется Е1 е Е и Е'2 с Е', а Е = Е1 и Е” и

Е' = Е[ и Ег. При этом данные множества Ег, в соответствии с определением 4, становятся собственными результирующими данными Д-оператора (Е1)Х1(Е[), то есть Ег = Е'СБ с О'. А множество данных Ех - собственными входными данными Д-оператора (Е2)Х2(Е'2), то есть Е” = ЕСБ с Е2. Данные множества Е°, в соответствии с

определением 3, являются связывающими, то есть Е° = Есв .

Из утверждения следует, что композиция Д-операторов переводит вычислительный процесс из состояния Б последовательно в состояния Е+1 и ЕТ+2, где Е{сб, Еб сЕГ+1. Однако в связи с тем фактом, что данные Б2б остались неизменными в состоянии Е^, а данные Е'СБ остаются неизменными при переходе ВП в состояние ЕТ+2, в соответствии с определением 2, ЕСБ с Е, а ЕСБ с Ет+2.

2 — 1 — ,/+2

Таким образом, Е с(Е1 иЕ) = (Е1 иЦСБ) сЕ., то есть Ц = Е. А с учетом того, что

последовательность операций, выполняемых над данными, в исходном и производных Д-операторах совпадает, то £>+1 сЕ2 иЕ = Е2 иЕ(СБ сЕТ+2, то есть £>+1 = Е+г

Отсюда, в соответствии с определением 5, следует, что полученные производные Д-операторы эквивалентны исходному, а декомпозиция Д-операторов реализуема.

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

Следствие. Для обеспечения эквивалентности исходного и производных Д-операторов на входе и выходе последних необходимо специфицировать собственные и связывающие данные. Если собственные данные у производных Д-операторов, в соответствии с определением 4, отсутствуют ( Е'СБ = 0, Е“ =0 ), то Е1 = Е , Е'2 = Е'.

4. Заключение

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

Процесс проектирования - творческий процесс, в существенной мере зависящий от класса решаемой задачи, о трудностях формализации которого говорил ещё Дейкстра. На текущий момент задача формализации этого процесса не решена и решение этой задачи, по крайней мере, частичное, является перспективным направлением дальнейших исследований.

СПИСОК ЛИТЕРАТУРЫ

1. Алгеброалгоритмические модели и методы параллельного программирования / Ф.И. Андон, А.Е. Дорошенко, Г.Е. Цейтлин, Е.А. Яценко. - Киев: Академпериодика, 2GG7. - 634 с.

2. Шнейдерман Б. Психология программирования: человеческие факторы в вычислительных и информационных системах / Шнейдерман Б. - М.: Радио и связь, 1984. - 3G4 с.

3. Bastani F.B. The effect of data structures on the logical complexity of programs / F.B. Bastani, S.S. Iyengar // CACM. - 1987. - Vol. 3G, N 3. - P. 25G - 259.

4. Акуловский В.Г. Основы алгебры алгоритмов, базирующейся на данных / В.Г. Акуловский // Проблеми програмування. - 2G1G. - № 2, 3. - С. 89 - 96.

5. Дорошенко А.Е. Алгебра алгоритмов с данными и прогнозирование вычислительного процесса / А.Е. Дорошенко, В.Г. Акуловский // Проблеми програмування. - 2G11. - № 3. - С. 3 - 1G.

6. Вирт Н. Алгоритмы + структуры данных = программы / Вирт Н. - М.: Мир, 1985. - 656 с.

Стаття надійшла до редакції 07.06.2012