Файл: Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2024
Просмотров: 83
Скачиваний: 0
где RM |
(р) — число случаев использования дополнительной памя |
|
|
ти при обработке самого короткого слова. |
|
При |
оценке сложности вычислений могут |
рассматриваться не |
только |
отдельные сигнализирующие функции, |
но и их совокуп |
ность, определяемая сигнализирующим оператором. В общем слу
чае сигнализирующий оператор Ос ставит в соответствие |
некото |
||||||
рой одноместной функции У%{х) ее сигнализирующую |
Ф»(х), где |
||||||
Ф = Т, Е, К, R. В нашей |
терминологии в качестве такой одномест |
||||||
ной функции выступает |
реализуемая |
алгоритмом |
задача |
3* (р), |
|||
а в качестве сигнализирующей — ФА[ |
{р) • |
|
|
|
|
||
Таким образом, сигнализирующие функции предназначены для |
|||||||
количественной |
оценки |
вычислительной |
сложности |
алгоритмов. |
|||
Они дают верхние оценки сложности вычислений. |
|
Нахождение |
|||||
нижних оценок |
является |
более сложным |
делом и |
требует |
специ |
альной теории. Первые оценки сложности вычислений для кон кретных предикатов и функций были получены в конце 50-х — на чале 60-х годов в работах Г. С. Цейтина, М. О. Рабина, Б. А. Трахтенброта и его учеников. Однако здесь сразу пришлось столкнуться с большими трудностями, связанными с получением нижних оце нок, близких к верхним для памяти, и особенно времени вычисле ния. В настоящее время имеется целый ряд работ, в которых по лучены оценки сложности вычислений для булевых функций, для специального класса рекурсивных функций, для классов функций, вычислимых на конечных автоматах, и т. п.
Оценки сложности практически применимы не только для оцен ки вычислительной сложности алгоритмов, но также и для оценки сложности программ и конкретных схем их реализации.
Вопрос о сложности программ привлек внимание многих авто ров. М. Блюм [12] рассматривал соотношение между сложностью программ и временем вычисления. Г. С. Цейтин [78] получил оцен
ку |
сложности кратчайших программ, |
порождающих |
последова |
||
тельности данной длины. Д. Пейджер |
[64] доказал |
алгоритмичес |
|||
кую |
неразрешимость |
проблемы |
нахождения |
минимальных |
|
программ для таблиц. |
Я. М. Барздинь [8] определяет |
верхние и |
нижние оценки сложности программ, распознающих принадлеж ность натуральных чисел, не превышающих п, рекурсивно пере числимому множеству.
Следовательно, под сложностью программы понимается ее длина. Точное определение этого понятия связано с уточнением метода программирования. Если под методом программирования
понимать |
частично рекурсивную |
числовую функцию |
ср (р, х) |
(где |
||||||||
р — программа, |
а х^п |
— любое |
натуральное |
число |
из |
множества |
||||||
М), |
то |
под сложностью |
программ понимается |
числовой |
функцио |
|||||||
нал К |
(М, |
п). |
|
|
|
|
|
|
|
|
|
|
|
Под длиной |
программы |
понимается |
некоторая числовая харак |
||||||||
теристика |
программы Q(p). |
В качестве |
такой |
характеристики |
мо |
|||||||
гут |
выступать |
объем |
памяти, |
занимаемый |
программой, |
или |
||||||
число ее команд. |
|
|
|
|
|
|
|
|
||||
S* |
|
|
|
|
|
|
|
|
|
|
|
131 |
§ 5. 2. АКСИОМАТИЧЕСКИЙ ПОДХОД К ОЦЕНКЕ СЛОЖНОСТИ
Число шагов, требуемых для вычислений значений функций, зависит, вообще говоря, от типа используемой машины, выбора программы вычислений и принципа кодирования входных и вы ходных данных. Однако аксиоматический подход к изучению слож ности алгоритмов и вычислений, предложенный Блюмом, является настолько общим, что почти не зависит от этих условий. Так, функция, которая требует для своего вычисления огромного числа шагов, может иметь более быструю программу. Другая же функ ция может обладать таким свойством, что, как бы быстро ни ра ботала программа для вычисления этой функции, существует дру гая программа, вычисляющая ту же функцию, которая работает значительно быстрее.
Блюм предлагает аксиоматический подход к характеристике сложности вычислимых функций. Выбранные аксиомы служат ос новой для определения того, что является, а что не является за конной мерой функциональной сложности. Наиболее известны такие меры оценки сложности, как число шагов, необходимых для вычисления функции, размер памяти, необходимый машине для вычисления. Эти меры удовлетворяют предложенным аксиомам.
Теория сложности, |
излагаемая Блюмом, |
машинно-независима, |
||||||
т. е. он |
оценивает сложность рекурсивных |
функций |
независимо |
|||||
от типа используемой для их вычисления машины. |
|
|
|
|||||
Для |
ввода |
аксиом |
и доказательства |
теорем, |
основанных на |
|||
этих аксиомах, |
с каждой машиной Mi связывают |
|
две функции: |
|||||
1) частично рекурсивную функцию ф г ( р ) , |
которая |
на |
этой машине |
|||||
вычисляется, и |
2) частично рекурсивную |
функцию |
Ф, |
( р ) , назы |
ваемую сигнализирующей функцией, которую можно понимать как число шагов или размер памяти, используемой машиной Mi, при заданном р (в качестве машины Mi Блюм подразумевает машину Тьюринга).
Теперь аксиомы могут быть сформулированы следующим об
разом: |
|
|
функция ф*(р) определена, |
||
Аксиома |
1. Частично |
рекурсивная |
|||
если определена ее сигнализирующая |
функция |
Ф» (р). |
Другими |
||
словами, при заданном |
р на входе машины Mi |
через |
конечное |
||
число шагов |
вычисляют |
ф* (р), если |
определена |
функция Ф* (р). |
Аксиома 2. Мера вычисления М принимает значения
Таким образом, функция М равна единице, если машина Mi перерабатывает входное слово р точно за т шагов, в противном случае М равна нулю.
132
В качестве т может рассматриваться также число ячеек па мяти.
На основании этих аксиом доказываются две основные теоре мы: ускорения и сжатия, которые определяют, каждой ли маши не, вычисляющей функцию, соответствует другая машина, рабо тающая быстрее.
Теорема ускорения гласит, что, как бы ни была выбрана ма шина для вычисления заданной функции, может быть построена другая машина, которая вычисляет ту же самую функцию за мень шее число шагов для бесконечно многих аргументов.
Тем самым доказывается существование бесконечно оптимизи руемых в смысле сложности классов функций.
К сожалению, теорема ускорения не дает эффективной про цедуры для перехода от машины, вычисляющей М, к машине, де лающей это быстрее, что имело бы большое практическое значе ние. Но в следствии этой теоремы доказывается, что такой эффек тивной процедуры не может быть.
Теорема сжатия представляет собой обращение теоремы уско рения. Эта теорема показывает, что для некоторых весьма слож ных функций число шагов, необходимых для их вычисления, мож но «сжать» между двумя достаточно близкими границами. Несмот ря на то, что аксиоматический подход к оценке сложности явля ется чисто теоретическим, он имеет большое практическое значе ние. Это значение состоит прежде всего в том, что четко определи лись направления дальнейшего развития как теории, так и практики. Теория оценки сложности является тем практическим аппаратом, на основе которого осуществляется разработка раз личных методов эквивалентных преобразований алгоритмов и программ, обеспечивающих их оптимизацию. В результате акси
оматической теории доказано, что нет и не может быть такой |
еди |
|||
ной |
эффективной |
процедуры, |
которая в любом случае позволяла |
|
бы |
осуществить |
оптимизацию |
алгоритмов и программ. Таким |
об |
разом, теория и практика оптимальных преобразований должны
рассматриваться |
только |
в рамках одной |
алгоритмической |
систе |
|
мы, тем самым |
доказана |
тщетность попыток преобразования |
ал |
||
горитмов в различных алгоритмических системах. |
|
|
|||
Кроме того, теоретически доказано существование двух |
оценок |
||||
сложности — нижней и |
верхней. Такие |
оценки имели место |
на |
практике, но они носили скорее интуитивный, а не теоретический характер. Аксиоматическая теория дала обоснование и доказа тельство правомерности таких оценок. Хотя практическое получе
ние |
нижних оценок связано часто с большими трудностями, тем |
|||||
не менее усилия в этом направлении оправданы |
и могут обеспе |
|||||
чить |
получение |
положительного результата, в |
то |
время |
как рабо |
|
ты |
в |
области |
эквивалентных преобразований |
из |
одних |
систем в |
другие не могут дать положительного результата.
133
§ 5. 3. ОЦЕНКА СЛОЖНОСТИ С ИСПОЛЬЗОВАНИЕМ ГРАФОВ
Несмотря на то, что в настоящее время в теории алгоритмов оценкам сложности уделяется большое внимание, исследования в этой области в большинстве своем остаются чисто теоретически
ми. Из работ, имеющих практическую |
направленность, |
следует |
||||
отметить работы Д. А. Поспелова [62] и В. В. Шуракова |
[80], в ко |
|||||
торых используется представление |
алгоритмов в виде графов. |
|||||
Д. А. Поспелов представляет алгоритмы в виде функциональ |
||||||
ного графа, а программы — в виде двух |
графов: функционального |
|||||
графа и графа управления. |
|
|
|
|
|
|
Всякий алгоритм можно представить в виде некоторой после |
||||||
довательности функциональных операторов. |
|
|||||
ФХ(Х, |
У) |
= |
(г/,, |
уа |
,-.-,y1ni); |
|
Ф2(Х, |
Y) |
= |
{yu |
у2 |
у1г)\ |
|
т(Х, |
У) = (уи |
У2 |
Упт). |
|
При этом X означает множество исходных данных, а У— мно жество промежуточных результатов, получаемых в процессе вы полнения функциональных операторов Ф,.
Каждому оператору Ф,- функциональной схемы соответствует вершина графа. Вершина, соответствующая оператору Ф,, соеди няется с вершиной, соответствующей оператору Фу только в том случае, если результат, полученный после работы оператора Фи является одним из аргументов для оператора Фу
На рис. 25а приведена граф-схема для алгоритма, определяе
мого такой последовательностью |
функциональных |
операторов: |
||||||
|
Ф\(хи |
х2) |
= (уи |
yl |
Уз); |
|
|
|
|
Ф г ( 0 2 ) |
= |
{уи |
|
yl); |
|
|
|
|
&ъ(у1 |
0? |
) = |
( # ? ) ; |
|
|
|
|
|
Ф*(Уи |
У и |
У*) = (У\ ) • |
|
|
|||
Такая функциональная граф-схема отражает структуру алго |
||||||||
ритма. |
|
|
|
|
|
|
|
|
В функциональном |
графе программы |
вершины |
графа отожде |
|||||
ствлены с линейными |
фрагментами |
программы, а дуги — с |
функ |
|||||
циональными связями между фрагментами. Две вершины |
графа |
|||||||
Ф, и Ф3- соединяются между |
собой дугой, идущей из Фг- в Ф;- тогда |
|||||||
и только тогда, когда результат |
фрагмента, соответствующего вер |
|||||||
шине Ф,-, используется в качестве оператора во фрагменте, |
соот |
|||||||
ветствующем вершине Фу |
|
|
|
|
|
|
|
|
Аналогично строится граф управления. Совмещение этих |
двух |
134
графов дает мультиграф, на котором указаны функциональные связи и свя зи по управлению. Для каждой верши ны такого графа можно указать ее вес, выражающий в условных еди ницах время реализации соответству ющего фрагмента. На рис. 256 пред ставлен пример графа программы. Сплошные дуги на этом графе соответ ствуют функциональным связям меж ду вершинами графа, а пунктирные дуги — связям по управлению.
В случае реализации программы на вычислительной системе, состоящей из машин различных типов, веса вершин будут представляться векторами. Ком поненты таких векторов будут пред ставлять собой время реализации фрагментов программ на машине со ответствующего типа.
Представление программ в виде граф-схем используется при мульти программном преобразовании алго ритмов с целью их распараллелива ния. Время реализации функциональ ных операторов является одной из мер оценки сложности в таких алгоритмах.
у X?
Рис. 256. Граф программы
25а. Граф-схема алгоритма
135
В качестве других мер оценки сложности при распараллеливании алгоритмов используются: ширина яруса—число параллельных ветвей алгоритма, внутренняя и внешняя связанность, исходная и выходная мощность, характеризующие объем различной информа ции, используемой функциональным оператором.
Если представить алгоритм вычислений в виде графа, то, ис пользуя аналитический аппарат теории графов, можно выполнить расчет ряда характеристик алгоритма, например, вектор встречае мости операций, относительные частоты использования отдельных операций,склонность к распараллеливанию и др.
Сложность алгоритма |
можно характеризовать в основном дву |
|||
мя параметрами: числом |
операций |
N И общим |
объемом |
информа |
ции, используемой алгоритмом, И. |
С числом |
операций |
связано |
время выполнения алгоритма на конкретной машине. Объем ин формации связан с объемом памяти, необходимой машине для реализации этого алгоритма.
Число операций связано прямой зависимостью с временем вы числения алгоритма {Т — ф (N)). Но выполнение различных опе раций требует различного времени. Так, операции сложения и вы читания, как наиболее простые, требуют меньшего машинного вре мени для своего выполнения. Отюда следует, что для определения сложности алгоритма необходимо знать не только общее количест во операций, но также и количество используемых в алгоритме типов операций и количество операций каждого типа в отдельно сти.
Количество операций для заданного алгоритма определяется следующим образом.
На основании анализа графа получаем вектор встречаемости операций в алгоритме
#={<?ь Q 2 . - - - , Q v , Q r } , где Qi — количество операций i-ro типа;
г — количество операций в исследуемом классе задач и отно сительные частоты операций:
Pi= при Л/ = 2 Qi •
Умножая время выполнения каждой операции на количество этих операций и суммируя результаты по всем операциям, полу чим время реализации алгоритма
Т= i Qi-ti • i = l
Принимая за эталон операцию сложения, можно определить общее количество приведенных операций. Для этого необходимо знать относительные веса различных операций по отношению к эталонной операции:
136