книги из ГПНТБ / Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов
.pdfРассматривая столбец с суммами элементов строк, устанавли
ваем, |
что х0 является выходом |
графа, так как 2а; = 0. |
Строка с |
||||
•суммами элементов столбцов |
позволяет |
выделить входы графа |
|||||
Xi~x9. |
Для этих |
вершин |
l>ai = 0. |
|
|
|
|
Для определения объема информации по матрице рассмотрим |
|||||||
процесс выделения |
путей |
на примерах. |
Первая 2а' = 0 находится |
||||
во втором столбце |
матрицы с номером Х[. Следовательно, |
началом |
|||||
пути |
будет вершина Х\. Фиксируем |
значение параметра k, соответ |
|||||
ствующее этой вершине. В нашем |
случае /[ = 12. Для поиска про |
должения пути обращаемся к строке матрицы с номером Х\. Бэтой строке первым элементом, не равным нулю, является элемент, стоящий в столбце с номером х0. Фиксируем значение этого эле мента, равное единице. Проверяем номер столбца на соответствие
выходу графа. В нашем |
случае х0 |
— выход графа. |
Путь из Х\ в х0 |
|||||||||||||
найден, он состоит из одной дуги |
(х\Х0). |
|
Объем |
информации |
по |
|||||||||||
этому |
пути |
равен: |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
V i = l-12=12. |
|
|
|
|
|
|
|
|
||
В |
качестве следующего |
примера выберем |
2а 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