Файл: Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов.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