Научная статья на тему 'Эквивалентные преобразования структур алгоритмов'

Эквивалентные преобразования структур алгоритмов Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
311
45
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
àëãîðèòìû / ïðåîáðàçîâàíèÿ àãîðèòìîâ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Иванова Г. С.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Эквивалентные преобразования структур алгоритмов»

Первые публикации

Программы и программные системы

Учебные программы

Студенческая

Общие проблемы инженерного образования

Инженер в современной России

Экобионика

Зарубежное образование

История технического прогресса

Будущий инженер

Вне рубрик

Расширеный поиск Подписаться на новости

ПОИСК

Ред.совет Специальности Рецензентам Авторам Архив

ВХОД

регистрация забыли пароль?

электронное научно-техническое издание

НАУКА и ОБРАЗОВАНИЕ

_Эл № ФС 77 - 30569. Государственная регистрация №0420900025. ISSN 1994-0408

Эквивалентные преобразования структур алгоритмов

# 11, ноябрь 2009 Статья в PDF автор: Иванова Г. С.

УДК 004.3 +519.6

qsivanova@qmail.com МГТУ им. Н.Э. Баумана

При разработке и/или анализе сложных программ достаточно часто возникает необходимость осуществить эквивалентное преобразование структуры уже имеющегося алгоритма [1-5 и др.]. Такие преобразования могут осуществляться с целью приведения алгоритмов к структурному виду, для последующего их распараллеливания, а также для распознавания типовых алгоритмических фрагментов при автоматическом анализе текстов программ.

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

В качестве модели алгоритма в настоящей работе будет использоваться графовая модель, предложенная в [5]. Эта модель отличается тем, что ее базис помимо вершин, соответствующих операторам обработки данных и ветвления, включает также вершины, соответствующие слиянию потоков управления. Такое слияние может быть вызвано завершением ветвления, замыканием циклической конструкции или выполнением оператора безусловной передачи управления.

Выполнение оператора ветвления приводит к тому, что множество возможных комбинаций значений данных для дальнейшей обработки делится на два: для элементов одного из них предикат условия принимает значение «истина», для элементов другого - «ложь». Слияние, в свою очередь, означает, что объединяемые множества комбинаций значений данных далее будут обрабатываться одинаково.

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

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

1. Инверсия условий передачи управления.

Данное преобразование может понадобиться для согласования условия выхода из цикла с типом цикла. В основу преобразования инверсии условий положим аксиому А2 из [5] - см. рис. 1.

Рис. 1. Эквивалентные куски уграфа при инверсии условия передачи управления

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

,

соответствующих альтернативным передачам управления (см. рис. 2, а).

СОБЫТИЯ

На сайте еНЬгагу доступна новая услуга - "обсуждение статьи"

Фестиваль мехатроники и робототехники

НОВОСТНАЯ ЛЕНТА

25.11.2009

Олимпиада МГТУ им. Н. Э. Баумана по программированию для школьников старших классов

24.11.2009

Торжественная Церемония вручения "Премии Рунета-2009"

18.11.2009

Список 500 самых мощных компьютеров мира: 34-я редакция

17.11.2009

«Сименс» объявил о начале IV Всероссийского конкурса научно-инновационных проектов для старшеклассников

17.11.2009

17 ноября 2009 года состоится крупное мероприятие для преподавателей и студентов МГТУ им. Н.Э. Баумана «ДЕНЬ ТЕХНОЛОГИЙ MICROSOFT:

Пресс-релизы Библиотека Конференции Выставки оска объявлений рхив

Ассоциация технических Университетов Информация о проекте Авторы

Координационный совет

Рис. 2. Преобразование «Инверсия условий передачи управления»:

весна

Логин

а - модель исходного фрагмента; б- модель преобразованного фрагмента

Исходный 0/1 и полученный бфу1 куски уграфа эквивалентны, если во всех возможных реализациях для этих кусков совпадают множества комбинаций значений данных, при которых осуществляются передачи управления на метки т\,

т'-

0)

где Z(mi), Z<f(mi), Z(m2), Z<f(m2) - множества комбинаций значений данных, при которых происходит передача управления на указанную метку в исходном и преобразованных фрагментах алгоритма.

Причем, если управление было передано на метку mg, то оно обязательно будет передано на метку mi или на метку m2: Z(mi) E Z(m2) = Z<t(mi) E Zf(m2) = Z(mo), (2)

Z(mi) g Z(m2) = Z<f(mi) g Zifm = /i, (3)

где Z(mg) - множество комбинаций значений данных, при которых происходит передача управления на метку mg. С учетом (1) - (2) для эквивалентности кусков уграфа достаточно выполнения любого равенства из условия (3).

В соответствии со схемами фрагментов

Z(mi) = {z(mo): bki « pk},

Z<t(mi) = {z(mg): bifki « Pfk},

где pk, pfk- предикаты условий вершин ветвлений исходного и полученного кусков уграфа; bki, b^2, —I {true, false} -логические переменные, совпадение значений которых с результатами вычисления предикатов условий приводит к осуществлению соответствующих переходов.

Совпадение множеств комбинаций значений данных, при которых происходит передача управления на указанные метки, для единственного входного потока обеспечивается тождественностью условий передачи управления на эти метки в обоих уграфах. Так для метки mi получаем:

Из (4) окончательно получаем, что преобразование эквивалентно, если .iXDli'n^^!

(4)

Первое условие тривиально, оно означает, что куски уграфа экви

переходов совпадают. Второе - определяет, что при изменении переменных переходов на ин

должен быть изменен на инверсный или, что то же самое, при изменении предиката на инверсный, переменные

переходов также должны быть изменены на инверсные.

При изменении физической структуры может потребоваться поменять местами любые две из указанных вершин уграфа (управляющего графа) (см. таблицу 1).

Таблица 1

№ Переставляемые элементы алгоритма Модель исходного фрагмента Влияние на последовательность обработки данных Примечание

i Оператор изменения данных - оператор изменения данных Г Меняет последовательность обработки данных Возможность преобразования определяется отсутствием зависимости по данным. Структура алгоритма не меняется.

2 Оператор изменения данных - оператор ветвления X Меняет последовательность обработки данных Предполагает внесение оператора изменения данных в ветвление или проверку условия выхода из цикла до изменения данных.

3 Оператор изменения данных - точка слияния 'f" Не меняет последовательность обработки данных Не структурирующее преобразование.

4 Оператор ветвления -оператор изменения Меняет последовательность Вынесение оператора изменения данных из

данных Ж обработки данных ветвления или изменение данных до выхода из цикла.

5 Оператор ветвления -оператор ветвления Меняет последовательность обработки данных Изменение последовательности ветвления потоков.

Таблица 1 (окончание)

Переставляемые элементы

алгоритма

Модель исходного фрагмента

Влияние на последовательность

обработки

_данных_

Примечание

Оператор ветвления -точка

Не меняет последовательность обработки данных

Вынесение начала ветвления или условия выхода из цикла из конструкции ветвления.

Точка слияния -оператор изменения данных

Не меняет последовательность обработки данных

Расщепление потока управления в точке слияния.

Точка слияния -оператор ветвления

Не меняет последовательность обработки данных

Расщепление потока управления в точке слияния.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Точка слияния - точка слияния

Не меняет последовательность обработки данных

Изменение

последовательности слияния потоков.

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

2. Изменения последовательности слияния потоков управления.

Данное преобразование (см. рис. 3) может применяться и к кон комбинациям .

Рис. 3. Преобразование «Изменения последовательности слияния потоков управления»

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

6

слияния

7

8

9

где - комбинации (п-ки) значений данных на выходе, по

преобразованному алгоритмам в конкретных реализациях; I/ - комбинация значений данных на одном из входов фрагмента алгоритма (т))1 или т))2 или тдз в зависимости от реализации) в силу несовместности событий передачи управления на эти входы в конкретной реализации^(т^) - множества комбинаций значений данных в указанных точках алгоритма, полученных во всех возможных реализациях, причем 7(то1) Ё Z(m))2) Ё Z(moз) = Дт1)-

Из (5) - (6) получаем, что

"*/1{Дт()1), Дто2), Дтоз)> ¿(т^ = лКт1),

т. е. преобразование эквивалентно на всех комбинациях исходных данных.

3. Вынесение начала ветвления или условия выхода из цикла из конструкции ветвления.

Преобразование (см. рис. 4) позволяет вынести начало ветвления или условие выхода из цикла - вершину хп из

ветвления, завершающегося вер

структурен.

Рис. 4. Преобразование «Вынесение начала ветвления или условия выхода из цикла из конструкции ветвления»

Исходный 0/1 и полученный бфу1 куски уграфа эквивалентны, если во всех возможных реализациях для этих кусков совпадают множества комбинаций значений данных, при которых осуществляются передачи управления на метки т1,

т2'.

г -г-

^ " fa-,) = Z\m,)

(7)

где Z(ml), 7ф(т1), Z(m2), Z<t(m2) - множества комбинаций значений данных, при которых происходит передача управления на указанную метку в исходном и преобразованных фрагментах алгоритма.

Аналогично преобразованию 1, если управление было передано на метки т)1 или т)2, то оно обязательно будет передано на метку т1 или на метку т2:

Z(mi) Е Z(m2) = Z<t(mi) Е Z^m) = z(m0i) EZ(m02),

Z(mi) Ç Z(m2) = Z<t(mi) Ç Z<t(m2) = /Ï,

(8)

(9)

где Z(moi) и Z(mo2) - множества комбинаций значений данных, при которых происходит передача управления на метки moi или mo2, причем события передачи управления на эти метки не совместны. С учетом (8) - (9) для эквивалентности кусков уграфа достаточно выполнения любого равенства из условия (7).

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

Z(mi) = {Zmoi): Pn « 6п2>,

Z(mi) = {z(moi): pit п « b(tn2}E{z(m02): ptn « b(tn2}/

(10)

(ii)

где pn, p<tn - предикаты условий вершин ветвления исходного и результирующего уграфов; bn\, bn2, ...I {true, false} -логические переменные, совпадение значений которых с результатами вычисления предикатов условий приводит к осуществлению соответствующих переходов.

Из (10-11) получаем, что

>Ь'^ = fiihe, есжн zeZ(mm)

Откуда

Из (12) следует, что предикат p<fn для наборов Z(moi) и Z(mo2) принимает различные значения, поэтому вычисление значений p<fn будем осуществлять в соответствующих ветвях алгоритма (см. вершины хги xj) и записывать полученное значение в дополнительную память (вершина y<fn графа данных, соответствующая добавленной переменной).

4. Разделение потока управления в точке слияния, за которой следует оператор изменения данных.

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

значений данных, приходящих через входы moi и mo2. Обработка выполняется оператором изменения данных (см. рис. 5).

Рис. 5. Преобразование «Разделение потока управления в точке слияния, за которой следует оператор изменения данных»

Исходный Су1 и преобразованный С|у1 куски уграфа эквивалентны, если любая комбинация данных исходных данных

соответствующими фрагментами алгоритмов преобразуется одинаково:

,

где 2(т//)\1(т/к), 1$(т/) 17ф(т/) - комбинации значений данных на выходах исходного и преобразованного фрагментов соответственно;

Дт/), ?$(т/) - множество комбинаций значений данных, полученных в указанном месте алгоритма во всех возможных реализациях соответственно исходного и преобразованного фрагментов;

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

Соответствие комбинаций данных обеспечивается идентичными по комбинаций данных.

Определим 4т1) и л|:(т1): №

г(|ц)

{

Ffei С ^(иьЖесми ¿On,) = <2.

F-Azi £ zO^WXecMi = 0, FAZ, С z(i»^j)),ecM zfm«) - 0-

Откуда следует эквивалентность преобразования при любых исходных данных.

5. Разделение потока управления в точке слияния, за которой следует оператор ветвления.

Данное преобразование может использоваться как для ветвлений, при необходимости разделить ветви, так и для циклов, если необходимо вынести оператор ветвления из цикла. Оно предполагает разделение обработки комбинаций значений данных, приходящих через входы moi и mo2. Обработка выполняется оператором ветвления (см. рис. 6).

Рис. 6. Преобразование «Разделение потока управления в точке слияния, за которой следует оператор ветвления»

Исходный Су1 и преобразованный С|у1 куски уграфа эквивалентны, если во всех возможных реализациях для этих кусков совпадают множества комбинаций значений данных, при которых осуществляются передачи управления на метки

m1, m2:

71 \z<mj = Z\m$

где Z(mi), Zif(mi), Z(m2), Z<f(m2) - множества комбинаций значений данных, при которых происходит передача управления на указанную метку в исходном и преобразованных фрагментах алгоритма.

Аналогично преобразованиям i и 3, если управление было передано на метки moi или mo2, то оно обязательно будет передано на метку mi или на метку m2:

Z(m1) Е Z(m2) = Z^) Е Z<t(m2) = Z(m01) ÈZ(m02), Z(m1) Ç Z(m2) = Zt(m1) Ç Ztm = /ï,

(14) (15)

где Z(m01) и Z(m02) - множества комбинаций значений данных, при которых происходит передача управления на метки m01 или m02, причем события передачи управления на эти метки не совместны.

С учетом (14) - (15) для эквивалентности кусков уграфа достаточно выполнения любого равенства из условия (13).

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

Z(m1) = {z(m0): Pn « ¿п1>, (16)

Z<t(m1) = {z(m01): Pn « bn1>È{z(m02): Pn « bn1>, где pn - предикат условия вершины ветвления уграфа;

bn1, bn2, ...Î {true, false> - логические переменные, совпадение значений которых с результатами вычисления предикатов условий приводит к осуществлению соответствующих переходов.

С учетом того, что в (16) z(m0) Î Z(m01) ÈZ(m02) - элемент объединенного множества комбинаций значений данных, поступающих через оба входа, получаем, что преобразование эквивалентно при любых исходных данных.

6. Изменение последовательности ветвления потоков управления.

При преобразовании меняется порядок разделения множества комбинаций значений данных на входе на три множества, передаваемые на различные выходы (см. рис. 7), т. е. последовательность вычисления предикатов ветвлений, хотя сами данные во фрагменте не меняются.

Рис. 7. Преобразование «Изменение последовательности ветвления потоков управления»

Исходный Эу1 и полученный 0у1 куски уграфа эквивалентны, если во всех возможных реализациях для этих кусков совпадают множества комбинаций данных, при которых осуществляются передачи управления на метки т1, т2 и тз:

где Z(mk), Zif(mk) - множества комбинаций значений данных, при которых происходит передача управления на соответствующие метки в исходном и преобразованном фрагментах. С учетом того, что, как и в предыдущих случаях,

Z(mi) E Z(m2) E Z(m3) = Z(mQ),

Z(mi) g Z(m2) = Z(m2) 5 Дтз) = Z(mi) g Дтз) = /Е,

для эквивалентности кусков уграфа достаточно выполнения любых двух равенств из условия (17).

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

Z(m3) = {z(mo): (pk« bk2)&(Pn « bn2)},

Z<t(m3) = {z(mo): pifkn « b<tn2},

где Pr- предикат условия соответствующей вершины ветвления уграфа;

bri, br2, .I {true, false} - логические переменные, совпадение значений которых с результатами вычисления предикатов условий приводит к осуществлению соответствующих переходов;

z(mo)I Z(mo) - комбинация значений данных на входе фрагментов.

Откуда, переходя к тождественности условий передачи управления на метку тз, получаем условие эквивалентности кусков уграфа:

или окончательно:

А^А.« Рк&Ря? и

Аналогично для метки т,

Ж(т1) = {2(то) I 7(то): (р/« 6/1)},

^Ф(т1) = {г! 7(то)и(тз): (р/ « 6/1)},

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

л) = Р Г ,

АГЯ2 =

^ =

(18) (19)

Для комбинаций значений данных в исходной схеме значение предиката р6^2- Но = следовательно,

для комбинаций значений данных 1(тз) условие р/« Ь/\ не выполняется и эти комбинации из 1(т§) в (3.27) можно исключить, записав вместо 1(т§) выражение 1(то)\2(тз).

Тогда выражения (18) и (19) становятся идентичными, подтверждая эквивалентность выполняемого преобразования.

7. Вынесение оператора изменения данных из ветвления или изменение данных до выхода из цикла.

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

Рис. 8. Преобразование «Вынесение оператора изменения данных из ветвления или изменение данных до выхода из цикла» Исходный Су1 и преобразованный С|у1 куски уграфа на рисунке 8 эк

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

Гуг €Е г(щ) [Мт,) - & ООО -

(20)

где 2(т/)Щт/), г|(т/) И$(т/) - комбинации значений данных на выходах исходного и преобразованного фрагментов соответственно^ т/), 1§(т//) - множество комбинаций значений данных, полученных в указанном месте алгоритма во всех возможных реализациях исходного и преобразованного фрагментов, причем с учетом того, что, как и в предыдущих случаях,

Дт1) Е Кт2) = Дт(), Кт!) д Цт^) = Л.

для выполнения второго условия выражения (20) достаточно выполнения одного любого равенства из этого условия. Определим г(т1), г(т2) и г|(т1) гф(т2):

„ ч [ФъХ е™ с^И,)) < > Ъа

-

гТСи,)

е™ А^с^ж,)) < > ¡^ сын с^яц)) кш р1(г1сг(ж1У) <-> й13

= ^з .

Т. е. при любых исходных данных комбинации на выходах фрагментов равны.

Теперь определим множество комбинаций значений данных, при которых управление передается на метку т-у. Дт1) = {2(то)1Е(то): (Рк(1к 1 ¿(то)) « Ьк1)}, (21)

^(т-) = {2(то)11(то): (Рк(-^к I ¿(тфо)) « Ьк1)}, (22)

где 1к I ¿(то) и I ¿(тфо) - аргументы предиката условия вершины ветвления в исходном и преобразованных фрагментах.

Из (21) - (22) следует, что 1(т-) = 7ф(т1), если ¿к = ¿Фк,

т. е. после выполнения фрагмента операторов изменения данных, соответствующих вершине х, значения аргументов предиката условия не меняются. Это возможно только, если множество результатов фрагмента операторов изменения данных У, соответствующих вершине х, и множество аргументов предиката условия Уд не пересекаются: У/£ Уд =

Таким образом, данное преобразование получается ограниченно применимым. Однако его можно сделать тождественным, если повторно не вычислять предикат, запомнив предыдущее значение ¿фф к в дополнительной памяти уфк(см. рис. 9).

Рис. 9. Тождественный вариант преобразования В этом случае (22) будет записываться как ¿$(т1) = {2(то)11(то): (Рк(?к 1 ¿(то)) « ьк1)}, и преобразование станет эквивалентным при любых исходных данных.

8. Внесение оператора изменения данных в ветвление или проверка условия выхода из цикла до изменения данных.

Внесение оператора изменения данных в ветвление или перенесение его за проверку условия выхода из цикла требует дублирования этого оператора и добавления его копий в обе ветви (см. рис. 1о).

Рис. 1о. Преобразование «Внесение оператора изменения данных в ветвление или проверка условия выхода из цикла до изменения данных»

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

^ - С?

У1

е гЦ) [(гСяО - г'О^)) - г'^Ж

К^ю - х'Оч)) & (*(»»,)-*■(»«,)).

где 2(т/)И(т/), и^(т/) Иф(т/) - комбинации значений данных на выходах исходного и преобразованного фрагментов соответственно;

Дт/), 1§(т/) - множество комбинаций значений данных, полученных в указанном месте алгоритма во всех возможных реализациях исходного и преобразованного фрагментов, причем с учетом того, что, как и в предыдущих случаях,

Дт1) Е Дт2) = Дто), Дт1) д 2(тг) = Л,

для выполнения второго условия выражения (23) достаточно выполнения одного любого равенства из этого условия.

Определим г(т1), г(т2) и л|:(т1) лКт2):

,

.

Т. е. при любых исходных данных комбинации на выходах фрагментов равны.

Теперь определим множество комбинаций значений данных, при которых управление передается на метку т1: Дт1) = {2(то)11(то): (Р/(г/ 1 г(тфо)) « 6/1)}, (24)

^Ф(т1) = {¿(то)11(то): (р/(г|/ 1 ¿(то)) « 6/1)}, (25)

где г/ 1 г(тфо) и гф/ 1 г(то) - аргументы предикатов операторов ветвления в исходном и преобразованном фрагментах.

Из (23) - (25) следует, что Дт1) = 7ф(т1), если гф/,

т. е. после выполнения фрагмента операторов изменения данных, соответствующих вершине х, значения аргументов предиката условия не меняются. Это возможно только, если множество результатов фрагмента операторов изменения данных Уд, соответствующих вершине х,, и множество аргументов предиката условия У] не пересекаются:

У д Уд = л.

Заключение.

Анализ полученных условий эквивалентности преобразований показал, что при их реализации возможны следующие варианты:

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

2) меняется последовательность операций анализа данных в таких фрагментах алгоритма, в которых отсутствуют операторы изменения данных, - эквивалентность таких преобразований обеспечивается изменением предикатов условий;

3) меняется порядок обработки данных во фрагментах, включающих операторы изменения данных, - эквивалентность преобразований может быть достигнута:

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

б) сохранением в дополнительных ячейках памяти копий изменяемых значений.

Таким образом, преобразования типов 1, 2 и 3 б применимы независимо от связей операторов по данным, т. е. универсальны. В то же время пре

отличие от преобразований 2-го типа, предусматривающих изменение предикатов, или преобразований типа 3 б, использующих дополнительную па

Преобразования типа 3 а с рассматриваемой точки зрения назовем ограниченно применимыми.

Окончательно получаем классификацию преобразований по условиям эквивалентности, представленную на рис. 11.

П p« >6раЗОва hihi

Универсальные

Ограниченно применимые

Не меняющие

операторов OÖpilOOTh'K

данных

-Издание

TÜJIbllftCJäi

олитжя ттжоп

VISpfiK-JCHHH

rtrv-

Ейка упраилгння в гочжкаинния,

:SÜ KOli^WÖ чЖ-

ду« алорагор иэмоиинид

-Р'аид^йНй!" потока упрм.-кч-шя Ii точкийлзвпш«, и которой (,Tät',3>vT цпуратор иитнленкя

Мсняюшис операторы обработки данных

1 [СГОЯЬ'1>'Ю1Г1П^ 1 Со сфор-

дополнительную ; мированиями

память предикатами

■■Взлнйям) I« начала.

BÜIWJWiiHJl MJiSt

уелвдшя

fii,[Miifi H'l

цикла ач

ktüK'fpy^Hffäl

Bll'rBJk-HISfl

■■fiSiIHiÄUHMli

ИЗ StilüXfltfHÖft HflH IHMKISÖSK® ЗЙШйЖ

до HUAtoia n:ä i.utäi.iiü (эярияш' 2)

f-MiSfuSpfHA

; уик-анй j п^таач ; упрЙИЖНИЯ

1ЯИ!;8Ж1' ■эчт.мгют! SiirUilÜJlHi) ШШШМ-!

¡г'прйииьимл

- Выжччжие (iritpfi'filpJt и.шеислин данных из ветвления или изменение данных до

('вариант ! s

- Внсчкяше

ÖSKpüKIpSt лгшттых к

ECTBIIL-HIK' IUI И

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

проверка условия

аыходл srs цикла ло

П.] MOtliJjSffi

Рис. 11. Классификация структурирующих преобразований по условиям эквивалентности

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

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

Ограниченно применимые условные преобразования требуют дополнительной памяти для дублирования операторов программы .

Литература:

1. Мартынюк В.В. Об изменении порядка выполнения операторов в операторной схеме // ЦВТ и программирование. -М.: Советское радио, 1967. - Вып. 2. - С. 67-72.

2. Ершов А.П. Современное состояние теории схем программ // Проблемы кибернетики (М.). - 1973. - Вып. 27 (4). -С. 87-111.

3. Цейтлин Г.Е. Формальная трансформация структурированных алгоритмов сортировки // Программирование. - 1985. - № 2. - С. 88-100.

4. Касьянов В.Н., Евстигнеев В.А. Графы в программировании: обработка, визуализация и применение. - СПб.: БХВ -Петербург, 2003.- 1104 с.

5. Иванова Г.С. Формальная постановка задачи структуризации алгоритмов // Вестник Московского государственного технического университета им. Н.Э. Баумана. Приборостроение. - 2005. - № 3(60). - C. 64-73.

6. Овчинников В.А., Иванова Г.С. Информационно-логическая модель алгоритма // Вестник Московского государственного технического университета им. Н.Э. Баумана. Приборостроение. - 2005. - № 2(59). - C. 109-121.

7. Ершов А.П. Операторные алгоритмы. III (Об операторных схемах Янова) // Проблемы кибернетики (М.). - 1968. -Вып. 20. - С. 25-43.

Публикации с ключевыми словами: алгоритмы, преобразования агоритмов Публикации со словами: алгоритмы, преобразования агоритмов Смотри так же:

• Сжатие таблиц решений

• Состояние и перспективы развития исследований в области обработки и распознавания видеоинформации (аналитический обзор)

• Об одном методе тестового диагностирования сложных систем

Тематические рубрики:

• Наука в образовании: Электронное научное издание

Ассоциация технических Университетов Вузы

Координационный совет Новости

Наука и Образование: научно-техническое издание: Эквивалентные преобразования структур алгоритмов Информационное агентство

УМО Вузов

j'" 1 maaazine@xware.i

телефон (8499) 263"68 "67 . RSS

STUCK GROUP

© 2003-2009 «Наука и образование: электронное научно-техническое издание»

i Надоели баннеры? Вы всегда можете отключить рекламу.