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

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

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

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

Для

примера произведем детальный расчет операций переад­

ресации, представленных на графе в виде вершины

Пр

(1). Число

операций

будем обозначать буквой N с указанием

операции.

 

Nnp(l)

= 1 X 1 X 1 X 1 X 1 X 1 X 1 = 1.

 

 

Цифра в кружке соответствует значению параметра

для дан­

ной вершины. В произведение параметров входят

шесть единиц,

так как

наиболее длинный путь от вершины Пр (1)

к вершине В

состоит из шести дуг, значения / для которых равны единице. Аналогично число операций сравнения, представленных на гра­

фе вершиной Ср (2), будет равно:

NCP

(2) = 1X12X1 X I X 1 X 1 X 1 X 1 X 1 = 12.

Число всех

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

данного алгоритма, будет определяться суммированием соответ­ ствующих произведений параметров / и т по десяти путям:

NCP

= I X 12X12+ 12X12+ I X 12 + 450X12+ IX12 +12 +

 

+ 1 + 1 + 1 + 1 = 5706.

Для

краткости умножения значения параметров / и т, равные

единице, опущены.

Число операций сложения, деления, умножения, присваивания, переадресации, восстановления, безусловного перехода будет со­ ответственно равно:

Nc= I X 1 1 X 1 2 + 12X12+ I X 1 2 + I X 1 2 + I X 1 2 + I X 12 = 336; Л/д =1X12X12 + 1X12X12 = 288;

NY

= 1 X 12X12+1X12X12+1X12 = 300;

yV„p = l X 12x12+1X11X12+1x12+1X449X12 + 1 = 56895

Nn

= 1 + 1 + 1 + 1=4;

NBC

=1X12X12+1X12X1 2 = 288;

Nnn= I X 12X12 = 144;

NEn

= 1 Х П Х 1 2 + 1 Х 1 I X 12+ 1X12+1X449X12+,

 

+ J X 12 = 5676.

Общее число операций по данной задаче будет равно:

N

= 5706 + 336 + 288 + 300 + 5689 + 4 + 288+144 +

 

+ 5676=18431.

Аналогичным образом можно определять число операций по любой задаче.

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

Глава VI ВЫБОР Я З Ы К А

П Р О Г Р А М М И Р О В А Н И Я

§ 6. 1. МАТЕМАТИЧЕСКАЯ ФОРМУЛИРОВКА

ПРОБЛЕМЫ ВЫБОРА

В настоящее время вычислительные машины стали необходимой частью любой системы обработки информации и тем более любой автоматизированной системы управления. Расшире­ ние сферы вычислительных машин ставит новые проблемы как в теории программирования, так и в теории алгоритмических язы­ ков. Одной из таких проблем является разработка алгоритмов оценки и выбора языков для оптимального программирования за­ дач из заданного класса проблем. Математическая формулировка этой проблемы приведена в работе Т. Я- Данелян [21].

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

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

141

номичностью систем, использующих эти языки. Чем универсальнее

язык,

тем к большему

расходу машинного времени, памяти ведет

он в

каждом случае

его реализации. Поэтому часто бывает це­

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

задания

области проблем, которая может

быть специфицирована

в аспекте трех измерений:

 

 

 

 

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

представления на носителе);

 

 

 

 

функциональное (совокупность операций

основной

и

вспомога­

тельных категорий);

 

 

 

 

модальное,

уточняющее тип алгоритма

и

уровень

применения

алгоритма, т. е. тип информационной системы.

 

 

 

Отсюда основным аспектом, связанным с решением научной

задачи

выбора

языка, является анализ и

исследование

аппарата

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

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

1.Спецификация проблемы.

2.Выбор и уточнение метода решения.

3.Реализация метода решения.

Первые два этапа известны как анализ и проектирование про­ блемы a.i, которыми занимается аналист. Третий этап носит назва­ ние программирования метода решения, которое реализуется про­ граммистом. Разница между этими двумя концепциями в том,что аналист изучает проблему и специфицирует ее решение в языке, доступном для понимания человеку, в то время как программист преобразует данную спецификацию в вид, удобный для передачи метода вычислительной машине. Собственно этап спецификации проблемы расчленяется на шесть самостоятельно поставленных перед аналистом задач:

1. Анализ представительности и типов данных из предметного {/-множества ^-объектов и уточнение множества f'-операций и процедур, определяющих проблему а;.

142

2.Установление всех ограничений на множестве данных V и операций F.

3.Установление всех функциональных связей на предметном множестве U всех тех ^-объектов, которые составляют данную проблему.

4.Определение возможно полного класса А всех проблем, спе­ цифицированных множествами U и F проблемы щ.

5.Решение вопроса о выборе языковых средств и средств ре­ ализации проблемы, т. е. какие требования необходимо предъяв­

лять классу вычислительных машин в специфицированном проб­

лемой

аспекте,

с тем чтобы можно было описать для

машины

метод

решения

проблемы и ожидать, что машина решит

проблему.

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

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

ка — DL.

Процесс исследования области действия языков программиро­

вания DL

базируется на следующих

методологических принципах:

1. Необходимо знать возможности различных языков и харак­

теристику

состава основных средств

применяемых L-языков. Для

этого необходим тщательный анализ и изучение достаточно пред­ ставительного класса /.„-языков программирования. Безусловен тот факт, что внимательное изучение языков программирования с их характеристиками поможет пользователю избежать неправиль­ ного выбора конкретно требуемого L-языка.

2. Необходимо знать все типы алгоритмов выбранного для изу­ чения класса А проблем, их конструктивные особенности, а также типы и категории объектов, с которыми работает исследуемое мно­ жество алгоритмов из класса А. Необходимо в результате изуче­ ния строения L-языков уметь подвести базу под те принципы, ко-

143

торые лежат в основе различия

между «хорошим»

и «плохим»

языками. Эта база строится на детальном изучении как

проблем,

которые

должен описывать L-язык, так и способов

реализации

L-языка

в

языковую систему. На

основании

анализа

строения

алгоритмов

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

проблемного

класса

А

возмож­

но сделать

обобщающие выводы

по основным

факторам,

опреде­

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

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

мерам

качества,

определяющим

оптимальность реализации.

4.

Необходимо

иметь

строгую

классификацию

как языкового

L, так и проблемного А

классов

по их оценочным

характеристи­

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

са

L N языков

программирования. Сведение

класса

L N к некоторо­

му

подклассу

позволяет конкретизировать

набор

основных оце­

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

5. Необходимо иметь единую формальную систему, в рамках которой однозначно определяются L-языки и содержательные ал­ гебры проблем А как алгоритмические системы, т. е. формальная система в таком аспекте интерпретируется как единый способ за­ дания языков программирования и класса изучаемых проблем. Выбранная формальная система должна быть полной в смысле содержательного отображения всех компонент алгоритмических языков и проблемных систем. Кроме того, формальная система должна служить основанием для построения содержательной тео-

144

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

Научный аспект проблемы связан с выявлением факторов и критериев, определяющих сущность алгоритма выбора, и с непо­ средственным конструированием схемы алгоритма. Как первое, так и второе должно базироваться на научном обобщении резуль­ татов анализа и классификации языкового L n и проблемного А классов. Кроме того, построение системы оценочных функций сво­ им основанием имеет оценочные характеристики, получаемые пре­ образованием оценочных параметров в числовые эквиваленты. С помощью этих функций с достаточной степенью вероятности и однозначности можно определить меру качества выбираемого из

семейства языков с одним модусным признаком L-языка

(или

языковой системы). Оценочные параметры возможно

получить

лишь как результат анализа L-программ и проблем из класса А .

Организационный

аспект проблемы — это

способ

организации

входной и рабочей информации для оценочного

алгоритма,

а

так­

же возможный способ заданий общей системы выбора как

некото­

рой операционной системы, работающей в

режиме

диалога.

 

Пусть дан некоторый абстрактный язык L

из

семейства

L n ,

определяемый на множестве констант L-языка и множестве пове­

лительных и декларативных сообщений. Тогда

L-язык

можно

оп­

ределить как параметризированную

систему

 

 

 

 

 

 

 

 

P(L)=P(/, ,

h,

/ 3 ,

/ 4 )

,

 

 

 

 

где

l\, h, h, U — четыре основных параметра

L-языка.

 

 

 

 

Параметр U—универсальное

множество

абстрактных £-объек-

тов,

определяемых

в предметной

области

UE,

например,

числа,

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

Параметр

1% — основное множество соотношений,

заданных на

f/в-множестве.

 

Параметр

/3 — форма базовой структуры L-языка.

Это отно­

сится к основным методам, по которым ассемблируются

сообщения

в L-языке.

Ц — совокупность правил способа представления ба­

Параметр

зовых форм

L-языка, указывающих на соответствие между форма-

10. Заказ 4230.

145

ми базовой структуры и конкретной формой представления сооб­ щения.

Параметр U языковой системы программирования может иметь различные конкретные значения для заданной параметрами l2, h абстрактной схемы языка. В зависимости от фактического значе­ ния /4 одна и та же схема абстрактного языка может принимать различные интерпретации. Но в любой из них конкретно представ­ ляемые L-языки должны быть эквивалентны, если они определены одними и теми же 12, / 3 . Термин «базовая форма» содержательно эквивалентен основному конструктивному представлению выраже­ ний операторов, объявлений, программы в целом для конкретного языка программирования.

Параметр /4 зависит от фактического преемника, т. е. вычис­

лительной

машины

Mj

или

конструктивной

модели носителя

язы­

ка. Если

базовую

структуру языка

представить

как внутренний

L-язык некоторой

абстрактной

машины Mj, то

Ц (или

правила

представления

базовой

структуры)

можно

интерпретировать

как

гипотетический

преобразователь

сообщений

L-языка, а 12 (основ­

ное множество

соотношений) — как

библиотеку стандартных

под­

программ

или

некоторые

информационные

структуры,

которые

включаются при написании сообщений согласно схеме, заданной базовой структурой L-языка. По аналогии параметр h можно от­ нести к совокупности возможных промежуточных и конечных зна­ чений, которые получаются в процессе вычисления строк по задан­

ной схеме

/ 3 .

С тем, чтобы

параметрическая

система Р позволяла

отображать

не

только содержательный

состав алгоритмической

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

формально

через

параметры строение

и смысл функций алгоритма информационной системы / или строе­

ние

и смысл примитивных

процедур, удобно расчленить параметр

на его составляющие

компоненты. Первая будет определять

форму, или синтаксис, вторая — смысл, или семантику.

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

 

Р ( Л ) = Р ( а ь

а2, а3 , а 4 ) .

Параметр

а\ — вся номенклатура

^-объектов, определенных

для класса проблем А.

 

 

Параметр

а2 — конкретное множество ^-объектов, определяю­

щих решаемую проблему at.

всех

форм элементарных проце­

Параметр

аз — совокупность

дур, перерабатывающих информацию, в частности, все выраже­

ния,

функции и операции, применяемые при решении проб­

лемы

CLi.

146

Параметр ой — совокупность всех возможных представлений алгоритмов, решающих проблему аг- или проблемы из класса Л.

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

ванные системы:

языковая

Р

(L)

12, / 3 ,

/ 4 )

и проблемная

Р ( Л ) = Р ( а ь

а2,

«з,

« 4

) .

Назначение

языка

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

заключается

в том, чтобы

 

описывать

алгоритмы Лг -еЛ. Тогда

смысл базовых форм, задаваемых через

параметр /3 , должен со­

ответствовать

смыслу

вычислительного

процесса,

задаваемого

примитивными процедурами. В свою очередь параметр 13 синтези­

рует параметры 1\ и 12, т. е. семантика

декларативных

и

повели­

тельных

сообщений

L-языка

определяется параметрами

1\

и 12.

Константы

L-языка

своим значением определены

на

множестве

L-объектов.

Отсюда

очевидно,

что

параметры

ai

и а2

задают то

множество

объектов

Е, для которых однозначно задаются объек­

ты L-языка. Тогда

правомерным

будет

утверждение,

что

одно­

значное

соответствие

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

и 1\, 12 задается

соответст­

вующей

функцией

фь в том

случае,

если,

с

одной

 

стороны,

рассматриваемый L-язык строго специфицирован

для данной проб­

лемы и, с другой стороны, параметр

/3 , представляемый семантичес­

ким аспектом, должен полностью соответствовать параметру аз. Компонента параметра / 3 определяет направленность сравнитель­ ного анализа между языковыми системами в целях выбора наи­ более удобных ;танструктивных представлений базовых форм и оп­ ределяет L-язык как хороший в аспекте его общности и практи­ ческой реализации для данной проблемы. Компонента U должна соответствовать компоненте 0С4 в смысле способов изобразитель­ ного представления алгоритма Л,-, который является наиболее удобным для решаемой проблемы. В заключение можно отметить, что конкретная оценка применимости L-языка для выбранной проблемы в рамках параметризированной системы Р может быть сведена к сравнительному сопоставлению параметризированных схем языковых и проблемных алгоритмических систем и опреде­ лению степени совместимости характеристических множеств каж­ дого из параметров схемы.

§ 6. 2. АЛГОРИТМ ВЫБОРА ЯЗЫКА ПРОГРАММИРОВАНИЯ ДЛЯ КОНКРЕТНОГО ПРИМЕНЕНИЯ

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

10*

147

В общем виде задача выбора формулируется следующим об­ разом.

Заданы:

1) класс решаемых задач А и основные характеристики в виде набора параметров Р (At) по каждой задаче из этого класса Л,-:

P{At) = P(a,i,ai2, а,з

ain), где Л ^ Л ;

2) множество языков программирования L n с указанием для каждого языка из этого класса L } основных характеристик, так­ же в виде набора параметров Р (а,):

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

Требуется разработать алгоритм выбора из множества языков программирования L n такого языка L h основные характеристики которого в максимальной степени удовлетворяли бы требованиям задач из заданного класса Л.

Схему

решения данной проблемы можно разделить

на два

этапа:

 

 

первый

этап — подготовка информации и критериев отбора;

второй

этап — выбор языка программирования путем

серий

отборов.

 

 

Исходными данными для выбора языка служат:

1)картотека языков программирования — L ;

2)картотека языковых систем — TL;

3)стандартная форма пользователя — СФ.

Алгоритм выбора

языка программирования

можно разделить

на 3 самостоятельных

этапа:

 

I — этап выбора по достаточности множества

основных средств

языка для описания конкретной проблемы, характеристики кото­ рой заданы в СФ;

II — этап апробации языка и отбор языков по оценочным ха­ рактеристикам;

I I I —этап выбора языковой системы.

Первый этап алгоритма выбора имеет целью путем сопоставле­ ния основных характеристик проблемы Ai и языков программиро­ вания выявить подмножество языков, пригодных для описания проблемы А^ Для этого по признакам «общности» и «области применения» из картотеки L n отыскивается подмножество тех языков, у которых значения признаков по таблице соответствия совпадают с указанными в СФ. Далее происходит сужение под­ множества выбранных языков путем исключения тех, которые ли-

148

бо не подходят проблеме, либо множество основных средств ко­ торых является недостаточным для описания проблемы.

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

1. Представительная проблема Л,- из семейства проблем А опи­ сывается средствами всех сравниваемых языков из подмножества,

полученного на первом этапе выбора.

 

2. По полученной информации:

а) о количестве операторов;

б) о величине энтропии текстов; в)

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

писание и

корректировку текстов,

производится

отбор языка.

Если после второго этапа алгоритма выбор языка оказался не­

однозначным, то возможны два направления.

 

Первое

направление — выдать

пользователю

подмножество

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

Второе направление — выполнение этапа выбора языковой си­ стемы. Этот этап выбора связан с квалификационной оценкой внедрения языка программирования, т. е. качеством и организа­

цией компиляции. В силу того, что с одного языка

могут быть

раз­

работаны несколько систем компиляции, схема третьего этапа

со­

стоит из двух частей:

 

 

 

 

 

1—отбор

оптимальных

языковых систем

относительно

всех

внедрений конкретного языка;

 

 

 

 

2 — отбор оптимальной системы из множества языковых

систем,

выбранных при реализации

1 части.

 

 

 

 

Параметры, по которым осуществляется отбор, заданы тремя

предикатными функциями уь Y2, Уз-

 

 

 

 

Блок-схема

алгоритма

выбора языка представлена на

рис. 27.

В блок-схему не включены операции по составлению и офор­

млению на магнитных лентах двух картотек

(LN,

TL/L),

так

как

они относятся к подготовительным операциям.

 

 

 

 

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

Q — количество аннотаций (языков или языковых систем), ос­ тавшихся после очередного выбора;

р-—логический переключатель, где / = 1 , 2, 3, 4, имеющий сле­ дующие значения:

Р\ — имеет ли место дополнительная информация, т. е. запол­ нена ли вторая часть СФ;

Р2 — будет ли активизироваться этап апробации, а если он уже активизировался, то нужен безусловный переход;

149

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