Файл: Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2024

Просмотров: 79

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

В теории алгоритмов проблема эквивалентных преобразований алгоритмов ставится как проблема отыскания конечной и полной

системы правил преобразования.

Система

называется

полной,

если, применяя правила к данной схеме, через конечное

число ша­

гов ее можно преобразовать в любую эквивалентную

и только

эквивалентную ей схему [26, 27].

 

двух алгоритмов Ах и

В общем виде понятие эквивалентности

Л 2 будем определять следующим

образом. Для каждого

алгоритма

вводятся понятия входа и выхода. Для каждого входа из области

определения алгоритма выполнение

алгоритма

может

приводить

к

некоторому

выходу.

 

 

 

 

 

 

 

 

 

Пусть

Х\

и х2

входы

алгоритмов

Ах

и А2

соответственно.

Алгоритмы Аг

и А2

будем

считать

эквивалентными,

если из усло­

вия хх2

следует,

что если хотя

бы

один алгоритм,

например

Л ь

имеет

выход у\,

то и другой

алгоритм

также

имеет

выход у2,

причем У\=у2.

Таким образом,

эквивалентность

в

общем виде

имеет место тогда, когда равенство входов приводит к равенству выходов.

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

Для этого необходимо задать различные классы эквивалентно­

сти как для

алгоритмов, записанных

с помощью формализован­

ных языков,

так и для схем алгоритмов

и программ. На практике

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

ды и выходы, а лишь находящиеся

в соответствии с задаваемым

изоморфизмом.

 

 

хх алгоритма Ах и

В этом случае между

некоторыми входами

входами х2 алгоритма А2

конструктивно задается некоторый изо­

морфизм I (в данном случае понимаемый просто как однозначное

соответствие).

 

 

 

 

Аналогично задается

некоторый

изоморфизм

/ между

выхода­

ми ух и у2 алгоритмов Ах

и А2 соответственно.

Предикат

от двух

63


конструктивных объектов А и В «быть в соответствии, заданном изоморфизмом» будем обозначать через

А~В.

Определение эквивалентности теперь будет следующим. Алго­ ритмы А{ и А2 считаются эквивалентными, если из условия

 

 

 

 

 

 

 

Xi ~

х2

 

 

 

 

 

 

 

 

следует, что если хотя бы один

алгоритм

имеет

выход

уь

то

и

другой

алгоритм

также

имеет

выход

у2,

причем

 

 

 

 

 

 

 

 

 

 

 

У\ ~

У2

 

 

 

 

 

 

 

 

 

Разные виды эквивалентности различаются тем, как определя­

ются входы и выходы алгоритма, а

также

тем,

как

фактически

выбираются

изоморфизмы I и /. •

 

 

 

 

 

 

 

 

 

 

Между

различными

видами

эквивалентности

можно

ввести

частичное

отношение

порядка, выражающееся

словами

«сильнее»

и

«слабее».

Будем

 

считать, что

отношение

эквивалентности

Эх

слабее

отношения

эквивалентности

Э2, если любые алгоритмы А\

и А2, эквивалентные

в смысле

Э2,

эквивалентны и

в

смысле

Э ь

в то же время есть хотя бы одна пара

таких

алгоритмов

А\

и

А^

которые эквивалентны в смысле Э\

и не эквивалентны

в

смыс­

ле

Э2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

руктивные объекты,

которые

формально объявляются

результата­

ми по окончании выполнения

алгоритма. В

некоторых случаях

важна

информация

о каких-либо промежуточных

результатах

или о том, в какой

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

выполнялись

элементар­

ные акты алгоритма

и т. д. Поэтому в

самом

общем

смысле

под

выходом

алгоритма

следует понимать

какую-то запись всей

той

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

64


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

Два алгоритма будем

называть

слабо эквивалентными,

если

они имеют одну и ту же

область определения и

если результаты

переработки одинаковых

слов из

этой области

совпадают.

Два

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

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

последовательность

выполнявшихся

операторов — значение опера­

торного алгоритма.

В этом

случае

алгоритмы считаются

эквива­

лентными, если их

значения

совпадают при одинаковых

входах.

Такое определение

эквивалентности

рассматривалось Ю.

И. Яно-

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

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

Рассмотрим основные типы историй применительно к алгорит­ мам, представленным в виде программ. Так как с точки зрения теории алгоритмов программа — это алгоритм на языке машины, то понятия эквивалентности существуют и для программ.

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

5. Заказ 4230.

65


является сравнение не только значений функций, реализуемых программами, но и некоторой истории их вычисления.

При рассмотрении типов историй реализации программ будем исходить из того факта, что программы в формализованном виде представляются в виде операторных граф-схем. В графе имеются входная и выходная вершины. В них могут находиться операторы ввода аргументов и вывода результатов. Каждая вершина, кроме выхода графа, соединена с одной или двумя другими вершинами (преемниками). Первый тип вершины называется оператором или преобразователем, а второй — распознавателем. Каждому опера­ тору в общем случае соответствует некоторая переработка инфор­ мации. Распознавателем является предикат — логическая функ­ ция, имеющая вид условия. Детально принципы построения граф-

схем программ будут рассмотрены далее

(§ 3.2).

 

На современном этапе

в теории программирования

рассматри­

ваются следующие шесть

типов историй

реализации

программ:

операционная, операционно-логическая, информационная, инфор­

мационно-логическая, термальная, логико-термальная

[29].

Операционная история — история,

включающая последователь­

ность операторов, выполненных при работе программы.

Операционно-логическая

история — операционная

история,

дополненная распознавателями, пройденными

при

работе про­

граммы.

 

 

 

 

Информационная история — информационный

граф реализа­

ции программы, вершинами

которого

являются

операторы. Вер­

шины графа А и В соединяются дугой, если В использует резуль­ тат А в качестве аргумента.

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

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

Логико-термальная

история реализации программы получает­

ся добавлением

к термальному

значению

результативных

пере­

менных последовательности

пройденных распознавателей

вместе

с термальными

значениями

аргументов.

 

 

Следует

заметить,

что термальная история строится по инфор­

мационному

графу, а

логико-термальная — по информационно-ло­

гическому графу. Из

определения

можно

заметить, что истории

группируются

парами: операционная,

операционно-логическая.

66


( Начало )

/вводх,гхд/ /<zb>их/с-"*!*;/

<ZH>1ЕГ

x6t(U-*xsc[il+x6(il

нонец )

j вывод I

x3c{il>x9c[ij+x3{tj\

Рис. 13. Блок-схема формирования сводной специализированной ведомости потребности

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

На рис. 12 приведены примеры операционной и операционно - логической истории некоторой реали­ зации задачи составления сводной специализирован­ ной ведомости потребно­ сти отдела оборудования ГМПСМ. Блок-схема ал­ горитма этой задачи при­ ведена на рис. 13.

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

jei-i-JCg-^- составные реквизиты исходного документа;

Xic-7-Xgc — составные

реквизиты результатного документа;

г —текущий

номер строки

исходного документа;

/ — текущий

номер

строки

результатного документа;

к — количество строк

в исходном документе.

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

68