Файл: Алферова, З. В. Математическое обеспечение экономических расчетов с использованием теории графов.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2024

Просмотров: 84

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

где

ti

— время реализации t-й операции,

 

 

 

 

 

t3

— время

реализации

эталонной

операции

сложения.

Тогда

количество условных

элементарных операций

составит:

 

 

 

 

 

 

N3=

£

Bi-Qi

,

 

 

 

а общее время их реализации —

 

 

 

 

 

 

 

 

 

 

 

 

 

T,=N,-ta

 

 

 

 

 

Объем

информации,

используемой

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

как

суммарный

объем,

необходимый

для

размещения

програм­

мной, исходной, промежуточной и выходной информации:

 

 

 

 

 

 

И = Ип

+ Ии

+ И в + И п р

,

 

 

где

И — общий объем информации,

 

 

 

 

 

Ип

 

объем программной информации,

 

 

 

 

Ии

 

— объем исходной информации,

 

 

 

 

 

Ив

 

— объем выходной информации,

 

 

 

 

И п р

— объем промежуточной информации.

 

 

 

На

 

основании этих параметров оценки сложности в

работе [74]

вводится

обобщенный параметр — коэффициент

сложности К, оп-

^Na

ределяемыи отношением А

С л =

- ~

 

 

 

Таким образом, коэффициент сложности характеризуется чис­

лом эталонных

 

операций,

выполняемых

при обработке

единицы

информации.

 

 

 

 

 

 

 

 

Определить

сложность

алгоритма

по

приведенной

методике

можно только

в

том случае,

если

известен вектор встречаемости

операций N={QU

Q2, . . . , Q r } .

Этот показатель может быть полу­

чен в результате

реализации

программы. В работе [75] предложе­

на программа

 

анализа

алгоритмов,

представленных

в языке

АЛГЭК. В результате работы по этой программе определяется частота использования следующих групп операций:

1)

+

, —

7)

:

=

(текстовое)

2)

X ,

/

8)

:

=

(арифметическое)

3)

= ,

Ф

9)

 

переход

4)

>

10)

 

обращение к библиотеке

5)

<

^

11)

 

элемент

6)

условный

оператор

 

 

 

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

Желательно иметь такой метод оценки сложности алгоритмов, который позволял бы оценить алгоритм до его представления в алгоритмическом языке. Это необходимо и на этапе проектирова­ ния механизированной обработки информации, и на этапе проекти­ рования АСУ, и на этапе проектирования вычислительных центров.

137


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

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

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

При построении графа алгоритма каждой элементарной опе­ рации (сложение, вычитание, умножение, деление, переадресация, сравнение и т. п.) сопоставляется вершина графа G(X,U). Вер­ шина графа Xi соединяется с вершиной Xi+\ в том и только в том случае, если операция, соответствующая вершине х%+\, выполняет­ ся непосредственно после операции х\. Таким образом, в графах, отражающих алгоритм, из каждой вершины, соответствующей операционному элементу, будет исходить точно по одной дуге, а из каждой вершины, соответствующей решающему элементу, — точно по две дуги.

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

жены друг в друга в соответствии

с их

соподчиненностью.

Для определения числа операций по

графу ориентация дуг в

нем меняется на противоположную.

 

 

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

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

Число операций для каждой из вершин графа G (X, U) опре­ деляется в результате умножения значения параметра mit соот­ ветствующего данной вершине, на произведение параметров 1} по пути, ведущему от заданной вершины к конечной:

Ni~miY\lj >

138


где / соответствует номерам тех дуг, которые ведут из вершины Xi в конечную вершину.

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

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

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

Рис. 26. Граф алгоритма для расчета числа операций

139


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

Для

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

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

Пр

(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