Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов

.pdf
Скачиваний:
20
Добавлен:
20.10.2023
Размер:
8.54 Mб
Скачать

Рассматривая столбец с суммами элементов строк, устанавли­

ваем,

что х0 является выходом

графа, так как 2а; = 0.

Строка с

•суммами элементов столбцов

позволяет

выделить входы графа

Xi~x9.

Для этих

вершин

l>ai = 0.

 

 

 

Для определения объема информации по матрице рассмотрим

процесс выделения

путей

на примерах.

Первая 2а' = 0 находится

во втором столбце

матрицы с номером Х[. Следовательно,

началом

пути

будет вершина Х\. Фиксируем

значение параметра k, соответ­

ствующее этой вершине. В нашем

случае /[ = 12. Для поиска про­

должения пути обращаемся к строке матрицы с номером Х\. Бэтой строке первым элементом, не равным нулю, является элемент, стоящий в столбце с номером х0. Фиксируем значение этого эле­ мента, равное единице. Проверяем номер столбца на соответствие

выходу графа. В нашем

случае х0

— выход графа.

Путь из Х\ в х0

найден, он состоит из одной дуги

(х\Х0).

 

Объем

информации

по

этому

пути

равен:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V i = l-12=12.

 

 

 

 

 

 

 

 

В

качестве следующего

примера выберем

3 ' = О

в

шестом

столбце матрицы. Эта сумма расположена

в столбце с номером

х5,

•следовательно,

началом

пути является

вершина

х$.

 

Фиксируем

/5 = 2.

Выбираем

строку

матрицы с номером х5

и ищем

в ней эле­

мент, отличный от нуля. Такой элемент расположен

в

столбце с

номером

хх2

и равен

единице. Поскольку

вершина

xi2

не является

выходом,

фиксируем

единицу и переходим

к рассмотрению

строки

с номером X12, где ищем элемент, отличный от нуля. Таким

являет­

ся элемент, равный единице, в столбце

с номером

хц.

Единицу

фиксируем и переходим к рассмотрению

 

строки

с

номером

хи,

так как хи

не является

выходом

графа.

В строке

с

номером

# п

элемент, отличный от нуля, находится

в столбце

с

номером

х10.

Запоминаем значение этого элемента, равное

единице,

и

перехо­

дим к строке с номером

х10,

поскольку

х 1 0 не является

выходом.

В строке

с номером

х 1 0

не равным нулю является

элемент, стоя­

щий в столбце с номером х0.

Запоминаем

значение этого элемента

и переходим к определению объема информации по данному пути,

так

как вершина ха

является выходом.

Таким

образом,

путь

из х$

в х0

состоит из дуг

(Х5Х12) ( # 1 2 * 1 1 ) (x\\Xw)

( # 1 0 * 0 ) ,

и объем

информа­

ции

по этому

пути равен:

 

 

 

 

 

 

 

 

 

 

V 5 = 2 - M - l - l = 2.

 

 

 

 

Объем информации по другим путям определяется

аналогично.

Общий объем информации по документу получается

суммирова­

нием

объемов

по

всем

путям.

 

 

 

 

 

В рассматриваемом

примере все значения

параметров т ,

ока­

зались

равными единице. Практически

параметр

т может

иметь

любое

значение.

 

 

 

 

 

 

 

 

Структурные графы документов и соответствующие им матри­

цы

смежности

могут использоваться не только

при определении

60

объемов информации по документам, но и

при определении объе­

мов информации по задачам, подсистемам

и системам

в целом.

В этом случае граф должен отражать

не только

структуры

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

Граф для определения объема информации по задаче пред­ ставляет собой структурный граф задачи, расширенный за счет до­ бавления к нему структурных графов документов. Пример такого графа для задачи «Наблюдение за движением материалов по транспортно-складской конторе (ТСК)» приведен на рис. 11.

Рис. 11. Граф состава задачи «Наблюдение за движением материалов ТСК»

Вершина Я 6 первого уровня представляет собой наименование задачи. Вершины второго уровня y&, У\ь, Уч — наименование доку­ ментов, участвующих в задаче, при этом у% и г— исходные доку­ менты, а г/15 — результатный. Вершины третьего уровня Х\-^гх& соответствуют структурным элементам документов. Для одинако­ вых структурных элементов приняты одинаковые обозначения во всех документах.

Порядок расчета объемов информации по задачам, подсисте­ мам или системам аналогичен расчету объемов информации по до­ кументу.

Глава 111

Э К В И В А Л Е Н Т Н Ы Е

 

П Р Е О Б Р А З О В А Н И Я

 

А Л Г О Р И Т М О В

§ 3. 1. ЭКВИВАЛЕНТНОСТЬ АЛГОРИТМОВ И ПРОГРАММ

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

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

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

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

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

быть представлен в формализованном виде

и должны соблюдать­

ся формальные правила для равносильных

преобразований алго­

ритма.

 

62

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

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

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

Система

называется

полной,

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

число ша­

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

и только

эквивалентную ей схему [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

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

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

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

совокупность операторов, образующих схему алгоритма, изоб­

ражается

в схеме явно;

 

 

для каждого оператора

явно

указываются его

преемники и

предшественники

по выполнению

и его аргументы

и результаты

(входы и

выходы

оператора);

 

 

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

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

в частности, если аргументом или результатом оператора ока­ зывается некоторая компонента массива, указываемая индексом, то конкретное значение индекса обычно игнорируется и считается,

что аргументом или результатом оператора

является

весь массив.

В качестве результатов выполнения

операторных

алгоритмов

А. П. Ершов предлагает использовать

S-представления тех пере­

менных, которые нас интересуют на выходе [27].

 

Тогда определение эквивалентности, базирующееся на исполь­

зовании S-представления в качестве выхода,

можно

сформулиро­

вать следующим образом. Два алгоритма эквивалентны по отно­

шению к

выделенным переменным в

том

случае,

если

соответст­

вующие

переменные при совпадающих

входах

вычисляются

по

одинаковым формулам. З-представление

переменного

есть

не

что иное, как явное выражение формулы,

по которой вычислялось

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

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

Для определения эквивалентности операторных алгоритмов рассмотрим два алгоритма Ах и Л2 . Для каждого из алгоритмов выделим те переменные, которые нас интересуют в качестве ре­ зультатов выполнения этих алгоритмов. Выделяемые переменные могут быть различными у алгоритма А, и алгоритма Л2 , но число их должно быть одинаковым и между ними должно быть установ-

69

Соседние файлы в папке книги из ГПНТБ