Реферат на тему: Алгоритм – понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма Реферат

Описание алгоритмов с использованием блок-схем

Для разработки структуры программы удобнее использовать обозначение алгоритма в виде блок-схемы (в английской литературе используется термин flow – chart). Для представления основных алгоритмических структур и блоков на блок-схемах используются специальные графические символы. Они приведены на рисунке

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма

Составим алгоритм вычисления квадратного корня из произвольного положительного вещественного числа х методом Герона и запишем его на естественном языке, а также в виде блок-схемы. Метод основан на многократном применении формулы:

при

Числовая последовательность Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма

А теперь займёмся самым любимым занятием школьников всех времён и народов – решением квадратного уравнения:

Будем полагать, что коэффициенты этого уравнения Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма

возможны три случая:

1. Если Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма

Блок схема алгоритма приведена на рисунке:

Следует отметить, что данный алгоритм предназначен для решения узкого класса задач – квадратичных уравнений с “хорошими” коэффициентами. Если предположить, что коэффициенты могут принимать любые реальные значения, то существует риск того, что при определенных значениях коэффициента (например, ) возникнет аварийная ситуация (деление на ноль).

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

Реферат на тему: Алгоритм - понятие алгоритма

i

z

0

1,00000

1

1,50000

2

1,41666

3

1,41421

4

1,41421

5

1,41421

Как видно из таблицы, уже после третьей итерации приближенное значение квадратного корня отличается от точного 1,414213 лишь в шестом знаке после запятой.

Описание алгоритмов на естественном языке

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

Предположим, что программа, составленная для такого процессора, содержит числовые данные и символы для арифметических операций с такими данными. Приведем пример такой программы для вычисления двух чисел 2 и 3:

2, 3,

Давайте продолжим эту программу. Первая операция заключается в считывании значения 2 в стек. Затем второе значение (3) считывается в стек. Первое значение перемещается во вторую ячейку памяти. На третьем этапе выполнения программы вычисляется сумма двух прочитанных значений (они называются операндами). Результат этой операции – значение 5 – записывается в первую ячейку стека.

Рассматривался пример самой простой программы. Это запись алгоритма решения класса задач – задач для вычисления суммы двух чисел. Давайте назовем эти номера a и b. Тогда алгоритм можно записать следующим образом:

  1. Считать число a .
  2. Считать число b .
  3. Выполнить суммирование c := a   b .
  4. Вывести число c .

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

Основными объектами программирования являются переменные . Переменные в программе отличаются от переменных, используемых при записи математических формул. Несмотря на сходство терминов, правила использования переменных в компьютерных программах отличаются от правил работы с математическими переменными.

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

 Именно поэтому конструкция

а := а 1

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

a = a  1

математик сочтёт неверным. В первом случае это означает вычисление суммы содержимого ячейки a и числовой константы 1 и введение результата в ту же ячейку a. Второй случай равен ложной идентификации 0 = 1.

Оставим алгоритм для решения следующей задачи. Давайте установим два значения x и y. Сравним эти значения и выведем имя более крупной переменной. Для этого достаточно сравнить оба значения и в зависимости от результата сравнения распечатать символ “х” и “у”:

  1. Ввести значение x .
  2. Ввести значение y .
  3. Если x < y , то напечатать «у», иначе напечатать «х».

В данном алгоритме используются алгоритмические структуры – линейная последовательность операций и ветвей (шаг 3, условный оператор). Последняя структура называется так потому, что после передачи ей управления алгоритм может быть выполнен на одной из двух возможных ветвей.

Для написания алгоритмов использовался естественный язык. Иногда используется полуофициальный язык с ограниченным словарным запасом (часто основанным на английском языке), промежуточный язык между естественным языком и языком программирования. Такой язык называется псевдокодом.

История развития понятия алгоритма

Понятие алгоритма является одним из основных понятий современной математики. Еще на самых ранних ступенях развития математики (Древний Египет, Вавилон, Греция) в ней стали возникать различные вычислительные процессы чисто механического характера. С их помощью искомые величины ряда задач вычислялись последовательно из исходных величин по определенным правилам и инструкциям. Со временем все такие процессы в математике получили название алгоритмов.

Термин алгоритм происходит от имени средневекового узбекского математика Аль-Хорезми, который еще в ІХ в. дал правила выполнения четырех арифметических действий в десятичной системе счисления.

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

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

В двадцатых годах прошлого века задача такого определения понятия алгоритма стала одной из центральных математических проблем. Решение ее было получено в середине тридцатых годов в работах известных математиков: Гильберта, Геделя, Черча, Клини, Поста и Тьюринга.

В 50-е годы прошлого столетия существенный вклад в развитие теории алгоритмов внесли работы Колмогорова и Маркова. Формальные модели алгоритмов Поста, Тьюринга и Черча, равно как и модели Колмогорова и Маркова, оказались эквивалентными в том смысле, что любой класс проблем, разрешимых в одной модели, разрешим и в другой.

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

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

2. Общие требования к алгоритму

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

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

Пусть Реферат на тему: Алгоритм - понятие алгоритма – множество исходных данных задачи Реферат на тему: Алгоритм - понятие алгоритма , а Реферат на тему: Алгоритм - понятие алгоритма – множество возможных результатов. Тогда можно говорить, что алгоритм осуществляет отображение

Реферат на тему: Алгоритм - понятие алгоритма .

Алгоритм называется частичным, если мы получаем результат только для некоторых Реферат на тему: Алгоритм - понятие алгоритма , и полным, если алгоритм получает правильный результат для всех Реферат на тему: Алгоритм - понятие алгоритма .

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

Определение 1.(Колмогоров): Алгоритм – это всякая система вычислений, выполняемых по строго определенным правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи.

Определение 2.(Марков): Алгоритм – это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату.

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

  • исполнителем предписаний,
  • вычислительными возможностями исполнителя,
  • указанием, какие именно операции для исполнителя являются «элементарными».

Более того, если даже алгоритм заведомо существует, его может быть очень трудно описать в некоторой зараннее заданной форме. Например, алгоритм завязывания шнурков.

Однако, несмотря на имеющиеся неопределенности и неоднозначности, различные определения алгоритма в явной или неявной форме постулируют следующие общие требования [Макконнелл]:

· Алгоритм должен содержать конечное количество элементарно выполнимых предписаний, т.е. удовлетворять требованию конечности записи;

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

· Алгоритм должен быт единым для всех допустимых исходных данных, т.е. удовлетворять требованию универсальности;

· Алгоритм должен приводить к правильному по отношению к поставленной задаче решению, т.е. удовлетворять требованию правильности.

Необходимо отметить, что сравнение алгоритмов по их эффективности, проверка их правильности и эквивалентности, определение областей применимости возможны только на основе формализации понятия алгоритма. В связи с этим чрезвычайно важно наличие формально строгого определения понятия алгоритма. Формализации данного понятия связаны с введением специальных математических конструкций – формальных алгоритмических систем или моделей вычислений, каковыми являются машина Поста, машина Тьюринга, рекурсивно-вычислимые функции Черча, и постулированием тезиса об эквивалентности такого формализма и понятия «алгоритм». Несмотря на принципиально разные модели вычислений, использующиеся в теории алгоритмов для определения термина «алгоритм», интересным результатом является формулировка гипотез об эквивалентности этих формальных определений.

§

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

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

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

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

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

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

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

Формально машина Тьюринга может быть описана следующим образом:

Пусть заданы

· Конечное множество состояний Реферат на тему: Алгоритм - понятие алгоритма , в которых может находиться машина Тьюринга;

· Конечное множество символов ленты Реферат на тему: Алгоритм - понятие алгоритма ;

· Функция Реферат на тему: Алгоритм - понятие алгоритма (функция переходов или программа), которая задается отображением пары из декартова произведения Реферат на тему: Алгоритм - понятие алгоритма (например, машина находится в состоянии Реферат на тему: Алгоритм - понятие алгоритма и обозревает символ Реферат на тему: Алгоритм - понятие алгоритма ) в тройку из произведения Реферат на тему: Алгоритм - понятие алгоритма (машина переходит в состояние Реферат на тему: Алгоритм - понятие алгоритма , заменяет символ Реферат на тему: Алгоритм - понятие алгоритма на Реферат на тему: Алгоритм - понятие алгоритма и пердвигается влево или вправо на одну ячейку ленты), т.е. Реферат на тему: Алгоритм - понятие алгоритма : Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма ;

· Существует выделенный пустой символ Реферат на тему: Алгоритм - понятие алгоритма ;

· Подмножество Реферат на тему: Алгоритм - понятие алгоритма – входной алфавит, Реферат на тему: Алгоритм - понятие алгоритма , определяется как подмножество входных символов ленты, причем Реферат на тему: Алгоритм - понятие алгоритма ;

· Одно из состояний Реферат на тему: Алгоритм - понятие алгоритма является начальным состоянием машины.

Решаемая проблема задается путем записи на ленту конечного количества символов Реферат на тему: Алгоритм - понятие алгоритма образующих слово Реферат на тему: Алгоритм - понятие алгоритма в алфавите Реферат на тему: Алгоритм - понятие алгоритма .

Реферат на тему: Алгоритм - понятие алгоритма

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

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

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

4. Алгоритмически неразрешимые проблемы: их существование и примеры

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

Сегодня при доказательстве алгоритмической неразрешимости некоторой задачи принято сводить ее к ставшей классической задаче – «задаче останова» машины Тьюринга.

Имеет место следующая теорема [Макконнелл].

Теорема. Не существует алгоритма (машины Тьюринга), позволяющего по описанию произвольного алгоритма и его исходных данных, при этом и алгоритм и данные заданы символами на ленте машины Тьюринга, определить, останавливается ли этот алгоритм на этих данных или работает бесконечно.

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

Примеры алгоритмически неразрешимых проблем.

Пример 1.Распределение девяток в записи числа Реферат на тему: Алгоритм - понятие алгоритма .Определим функцию Реферат на тему: Алгоритм - понятие алгоритма , где Реферат на тему: Алгоритм - понятие алгоритма – количество девяток подряд в десятичной записи числа Реферат на тему: Алгоритм - понятие алгоритма, а Реферат на тему: Алгоритм - понятие алгоритма– номер самой левой после запятой девятки из Реферат на тему: Алгоритм - понятие алгоритма девяток подряд. Поскольку Реферат на тему: Алгоритм - понятие алгоритма, то Реферат на тему: Алгоритм - понятие алгоритма . Задача состоит в вычислении функции Реферат на тему: Алгоритм - понятие алгоритма для произвольного Реферат на тему: Алгоритм - понятие алгоритма .

Поскольку число Реферат на тему: Алгоритм - понятие алгоритмаявляется иррациональным, мы не знаем распределение девяток, равно как и любых других цифр. Вычисление Реферат на тему: Алгоритм - понятие алгоритма связано с вычислением последующих цифр в разложении числа Реферат на тему: Алгоритм - понятие алгоритмадо тех пор, пока мы не обнаружим Реферат на тему: Алгоритм - понятие алгоритма девяток подряд. У нас нет общего метода вычисления Реферат на тему: Алгоритм - понятие алгоритма , для некоторых Реферат на тему: Алгоритм - понятие алгоритма вычисления могут продолжаться бесконечно – мы даже не знаем в принципе (по природе числа Реферат на тему: Алгоритм - понятие алгоритма) существует ли решение для всех значений Реферат на тему: Алгоритм - понятие алгоритма .

Пример 2. Вычисление совершенных чисел. Совершенные числа – это числа, которые равны сумме своих делителей, за исключением самого числа, например: 28=1 2 4 7 14. Определим функцию Реферат на тему: Алгоритм - понятие алгоритма = Реферат на тему: Алгоритм - понятие алгоритма -ое по счету совершенное число. Задача: вычислить Реферат на тему: Алгоритм - понятие алгоритма для произвольного Реферат на тему: Алгоритм - понятие алгоритма . Нет общего метода вычисления совершенных чисел, неизвестно даже, конечно или счетно множество совершенных чисел.

Пример 3.Десятая проблема Гильберта. Пусть задан Реферат на тему: Алгоритм - понятие алгоритма – многочлен степени Реферат на тему: Алгоритм - понятие алгоритма с целыми коэффициентами. Существует ли алгоритм, который определяет имеет ли уравнение Реферат на тему: Алгоритм - понятие алгоритма решение в целых числах. Ю.В.Матиясевич показал, что такого алгоритма не существует, т.е. отсутствует общий метод определения целых корней уравнения Реферат на тему: Алгоритм - понятие алгоритма по его целочисленным коэффициентам.

Пример 4.Проблема останова машины Тьюринга.

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

Пример 6.Проблема тотальности. По записи произвольного заданного алгоритма определить, будет ли он останавливаться на всех возможных наборах исходных данных. Другая формулировка этой задачи: является ли частичный алгоритм А всюду определенным алгоритмом?

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

Вопросы

1. Интуитивные определения понятия алгоритма, их недостатки.

2. Определения алгоритма по Колмогорову, по Маркову. Сравнение этих определений.

3. Общие требования к алгоритму, не зависящие от используемого определения алгоритма.

4. В чем заключается требование конечности записи алгоритма?

5. В чем заключается требование конечности действий алгоритма?

6. В чем заключаются требования универсальности и правильности алгоритма?

7. Постройте алгоритм получения положительной оценки на экзамене.

8. Постройте алгоритм для процесса завязывания шнурков, проверте его работу на своем коллеге.

9. Для чего служит машина Тьюринга?

10. Что представляет из себя алгоритмически неразрешимая проблема?

11. Является ли алгоритмически неразрешимой проблема решения уравнения: Реферат на тему: Алгоритм - понятие алгоритма , где Реферат на тему: Алгоритм - понятие алгоритма – многочлен степени n? Почему?

Література

1. Дж. Макконнелл. Основы современных алгоритмов. 2-е дополненное издание. – М.: Техносфера, 2004. – 368 с.

2. Воеводин В.В. Параллельные вычисления / В.В.Воеводин, Вл.В.Воеводин. — СПб.: БХВ-Петербург, 2002. — 608 с.

§

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

При решении произвольной реальной задачи в общем случае невозможно получить точное значение искомого численного результата [53,55,60]. Существование неустранимой погрешности в математической модели объекта или процесса, фигурирующего в задаче (математическое описание задачи является неточным), погрешности входных данных, многие из которых в реальных условиях получены экспериментально, погрешность численного алгоритма, используемого для решения, и вычислительная, погрешности, возникающие при каких-либо дополнительных воздействиях на объект, которые часто трактуются как возмущения входных данных, приводят к необходимости их совокупного учета при оценке погрешности результата. Даже в случае, когда входные данные математической модели не имеют погрешностей, а алгоритм, выбранный для решения полученной математической задачи является точным [54], избежать вычислительной погрешности при проведении вычислений в системе чисел с плавающей точкой, а значит и погрешности в полученном результате, невозможно [69]. После построения математической модели реального процесса, которая необходимо удовлетворяет требованию адекватности (решение математической задачи, полученное с ее помощью, незначительно отличается от истинного решения реальной задачи), исходная задача и ее математическая формализация в процессе решения и анализа полученного результата, как правило, не разделяются. Однако, в силу особенностей машинной арифметики, невозможно в общем случае получить точное решение даже смоделированной математической задачи (пренебрегая неустранимой погрешностью и погрешностью метода) [53,60]. Действительно, для конечной системы чисел с плавающей точкой Реферат на тему: Алгоритм - понятие алгоритма , реализованной в ЭВМ для представления бесконечного множества вещественных чисел Реферат на тему: Алгоритм - понятие алгоритма , арифметические операции обладают своими особенностями: основные законы арифметики могут нарушаться. Рассмотрим это подробнее.

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

Реферат на тему: Алгоритм - понятие алгоритма , (200)

где Реферат на тему: Алгоритм - понятие алгоритма – целые числа, такие, что Реферат на тему: Алгоритм - понятие алгоритма , а Реферат на тему: Алгоритм - понятие алгоритма .

Часть Реферат на тему: Алгоритм - понятие алгоритма в (200) – дробная часть, или мантисса числа Реферат на тему: Алгоритм - понятие алгоритма . Система Реферат на тему: Алгоритм - понятие алгоритма нормализованная, если для Реферат на тему: Алгоритм - понятие алгоритма выполняется: Реферат на тему: Алгоритм - понятие алгоритма .

Таким образом, очевидно, что точно в системе Реферат на тему: Алгоритм - понятие алгоритма могут быть представлены лишь конечное множество действительных чисел. Если число Реферат на тему: Алгоритм - понятие алгоритма находится в границах представления чисел данной системы Реферат на тему: Алгоритм - понятие алгоритма , однако не совпадает ни с одним из них, то оно приближается одним из чисел Реферат на тему: Алгоритм - понятие алгоритма за счет операции округления (усечения) [Бахвалов], получая в результате определенную погрешность.

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

Идеальным для выполнения арифметических операций в системе Реферат на тему: Алгоритм - понятие алгоритма является ситуация, когда сама операция над числами Реферат на тему: Алгоритм - понятие алгоритма выполняется точно, а затем результат, при необходимости, либо усекается, либо округляется. На практике при выполнении арифметических операций обычно выделяются дополнительные разряды, полученный результат нормализуется, и лишь затем выполняется округление (усечение).

Рассмотрим гипотетическую систему Реферат на тему: Алгоритм - понятие алгоритма , для которой Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма , и вычислим в этой системе сумму 0.12 0.17 0.87. В точной арифметике 0.12 (0.17 0.87)=(0.12 0.17) 0.87. В системе Реферат на тему: Алгоритм - понятие алгоритма результат левой части равен:

Реферат на тему: Алгоритм - понятие алгоритма

при этом результат правой части:

Реферат на тему: Алгоритм - понятие алгоритма

Очевидно, результат даже такого простого выражения зависит от порядка выполнения операций. Таким образом, одному алгоритму, записанному «на бумаге», соответствует множество «машинных» алгоритмов, в каждом из которых свой порядок выполнения действий, а значит, может быть и другой результат.

Полученное приближенное (в силу перечисленных выше причин) решение некоторой вычислительной задачи Реферат на тему: Алгоритм - понятие алгоритма может рассматриваться как точное решение, но другой, возмущенной задачи Реферат на тему: Алгоритм - понятие алгоритма ( Реферат на тему: Алгоритм - понятие алгоритма отличается от Реферат на тему: Алгоритм - понятие алгоритма возмущением входных данных) [60]. В этом случае для определения качества полученного приближения необходимо иметь возможность оценить степень зависимости решения от возмущений исходных данных.

§

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

Пусть Реферат на тему: Алгоритм - понятие алгоритма — некоторая вещественная функция. Через Реферат на тему: Алгоритм - понятие алгоритма обозначим непосредственно выбранный численный алгоритм для вычисления Реферат на тему: Алгоритм - понятие алгоритма . Необходимо отметить, что результат Реферат на тему: Алгоритм - понятие алгоритма содержит вычислительную погрешность. Предположим, что Реферат на тему: Алгоритм - понятие алгоритма является обратно устойчивым алгоритмом для Реферат на тему: Алгоритм - понятие алгоритма [53], т.е. для всякого Реферат на тему: Алгоритм - понятие алгоритма найдется малое Реферат на тему: Алгоритм - понятие алгоритма , такое, что:

Реферат на тему: Алгоритм - понятие алгоритма .

Величина Реферат на тему: Алгоритм - понятие алгоритма называется обратной ошибкой. Иначе говоря, Реферат на тему: Алгоритм - понятие алгоритма – это точный ответ для слабо возмущенной задачи Реферат на тему: Алгоритм - понятие алгоритма .

Для погрешности вычисленного значения Реферат на тему: Алгоритм - понятие алгоритма , исходя из соотношения (2.8), становится возможной оценка:

Реферат на тему: Алгоритм - понятие алгоритма ,

являющаяся произведением абсолютного числа обусловленности Реферат на тему: Алгоритм - понятие алгоритма и величины обратной ошибки Реферат на тему: Алгоритм - понятие алгоритма .

При обратной устойчивости Реферат на тему: Алгоритм - понятие алгоритма величина Реферат на тему: Алгоритм - понятие алгоритма мала, тогда если абсолютное число обусловленности Реферат на тему: Алгоритм - понятие алгоритма невелико, то мала будет и погрешность. Если же число обусловленности большое (или бесконечно большое), то несмотря на малое значение обратной ошибки [53] Реферат на тему: Алгоритм - понятие алгоритма , результирующая погрешность может оказаться неприемлемо большой.

Рефераты:  Реферат: Происхождение Солнечной системы -

Программирование численных алгоритмов

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

· Простота использования,

· Надежность,

· Временные затраты.

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

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

Второй формой являются программные среды, значительно «более дружественные к пользователю» по сравнению с библиотеками типа LAPACK. Это достигается ценой утраты производительности. Эту форму представляет коммерческая система Matlab и ряд подобных ей систем. Matlab можно рассматривать как простую интерактивную программную среду, где большинство операций линейной алгебры реализованы как встроенные функции. Однако Matlab принимает ряд алгоритмических решений автоматически, не консультируясь с пользователем, поэтому получаемые этим путем программы могут работать медленнее, чем удачно выбранные библиотечные программы.

Третья форма – это шаблоны или, иначе говоря, рецепты для сборки сложных алгоритмов из более простых «строительных блоков». Шаблоны полезны в ситуации, когда алгоритм можно построить многими разными способами, но при этом отсутствует простое правило выбора наилучшей конструкции для конкретной входной задачи. Таким образом, значительная роль в конструировании оставлена пользователю. Примером подобного подхода может служить книга «Шаблоны для решения линейных систем. Строительные блоки для итерационных методов».

Вопросы

  1. Какие алгоритмы называются численными, логическими?
  2. Почему численным алгоритмом практически невозможно получить точное решение задачи?
  3. Особенности машинной арифметики. С чем связаны эти особенности?
  4. Как можно рассматривать приближенное решение вычислительной задачи?
  5. Число обусловленности задачи. Абсолютное и относительное число обусловленности функции.
  6. Вывести формулу абсолютного числа обусловленности функции одной переменной, многих переменных?
  7. Какой алгоритм является обратно устойчивым?
  8. Чем, как правило, руководствуются при машинной реализации численных алгоритмов или выборе готовой программы?

Литература

  1. Дж. Макконнелл. Основы современных алгоритмов. 2-е дополненное издание. – М.: Техносфера, 2004. – 368 с.

2. Кобозєва А.А., Мачалін І.О., Хорошко В.О. Аналіз захищеності інформаційних систем. – К.: Вид. ДУІКТ, 2021. – 316 с.

3. Кобозева А.А., Хорошко В.А. Анализ информационной безопасности. – К.: Изд.ГУИКТ, 2009. – 251 с.

4. Деммель Дж. Вычислительная линейная алгебра / Дж.Деммель; пер.с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 430 с.

5. Бахвалов Н.С. Численные методы / Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков. — М.: БИНОМ. Лаборатория знаний, 2006. — 636 с.

6. Каханер Д. Численные методы и программное обеспечение / Д.Каханер, К.Моулер, С.Нэш; пер. с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 575 с.

7. E.Anderson, Z.Bai, C.Bischof, J.Demmel, J.Dongarra, J.Du Croz, A.Greenbaum, S.Hammarling, A.McKenney, S.Ostrouchov, and D.Sorensen. LAPACK Users’ Guide (2nd edition). SIAM, Philadelphia,PA, 1995.

§

Одну и ту же задачу может решать множество алгоритмов. Эффективность работы каждого из них описывается разнообразными характеристиками. Основные характеристики – это

· Вычислительная сложность;

· Запросы к памяти.

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

При анализе алгоритма определяется количество «времени» для его выполнения. Это не реальное число секунд или других промежутков времени, а число операций, выполняемых алгоритмом. Число операций измеряет относительное время выполнения алгоритма или его вычислительную сложность. Фактическое количество секунд работы алгоритма непригодно для его анализа, т.к.

а) нас интересует относительная эффективность алгоритма;

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

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

Два самых больших класса алгоритмов – это

  • алгоритмы с повторением,
  • рекурсивные.

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

Рекурсивные алгоритмы разбивают большую задачу на фрагменты и применяются к каждому фрагменту отдельно. Такие алгоритмы называются иногда «разделяй и властвуй». В процессе решения большой задачи путем деления ее на меньшие создаются небольшие простые и понятные алгоритмы. Анализ рекурсивного алгоритма требует подсчета количества операций, необходимых для разбиения задачи на части, выполнения алгоритма на каждой из частей и объединения отдельных результатов для решения задачи в целом. Объединяя эту информацию и информацию о числе частей, мы можем вывести рекурентное соотношение для сложности алгоритма.

Анализируя алгоритм, можно получить представление о том, сколько времени займет решение данной задачи при помощи данного алгоритма. Для каждого алгоритма необходимо оценивать, насколько быстро решается задача на множестве (массиве) входных данных длины Реферат на тему: Алгоритм - понятие алгоритма .

Одну и ту же задачу можно решить при помощи различных алгоритмов. Анализ алгоритмов дает инструмент для выбора алгоритма.

Пример. Выбрать наибольшую из трех величин Реферат на тему: Алгоритм - понятие алгоритма .

Реферат на тему: Алгоритм - понятие алгоритма

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

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

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

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

Классы входных данных

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

Реферат на тему: Алгоритм - понятие алгоритма

Если список изначально упорядочен в порядке убывания, то перед началом цикла будет сделано одно присваивание, а в теле цикла присваиваний не будет вообще. Если список первоначально упорядочен по возрастанию, то всего будет сделано Реферат на тему: Алгоритм - понятие алгоритма присваиваний. При анализе необходимо рассмотреть различные возможные множества входных данных, поскольку при ограничении одним множеством, оно может оказаться тем самым, на котором решение самое быстрое (медленное). В результате можно получить ложное представление об алгоритме. Вместо этого, как правило, рассматриваются все типы входных множеств. Для этого различные входные множества разбиваются на классы в зависимости от поведения алгоритма на каждом множестве. Такое разбиение позволяет уменьшить количество рассматриваемых возможностей. Например, число различных расстановок 10 различных чисел в списке есть 10!=3628800. Применим к списку из 10 чисел алгоритм поиска наибольшего элемента. Имеется 362880 входных множеств, у которых первое число является наибольшим; они все помещаются в один класс. Для любого множества из этого класса алгоритм сделает единственное присваивание. Если наибольшее по величине число стоит на втором месте, то алгоритм сделает ровно два присваивания. Все такие множества (их 362880) можно поместить в другой класс. Очевидно, число присваиваний будет на единицу возрастать при последовательном изменении положения наибольшего числа от 1 до Реферат на тему: Алгоритм - понятие алгоритма . Таким образом можно разбить все входные множества на Реферат на тему: Алгоритм - понятие алгоритма разных классов по числу производимых присваиваний. Очевидно, нет необходимости выписывать или описывать детально все множества, оказавшиеся в одном классе.

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

§

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

Все алгоритмы разделяются на такие, которым достаточно ограниченной памяти, и те, которым нужно дополнительное пространство [Макконнелл]. Иногда программистам приходится выбирать более медленный алгоритм лишь потому, что он обходится имеющейся памятью и не требует внешних устройств.

Спрос на компьютерную память велик, поэтому и важен вопрос, какие данные необходимо хранить, а также эффективные способы хранения. Проиллюстрируем сказанное на примере. Предположим, что производится запись вещественного числа из сегмента [-10,10], имеющего один десятичный знак после запятой. При записи вещественного числа большинство компьютеров потратит от 4 до 8 байтов памяти. Однако если предварительно умножить число на 10, то для хранения полученного целого числа из сегмента [-100,100] потребуется всего 1 байт.

При взгляде на программное обеспечение, предлагаекмое на рынке сегодня, ясно, что необходимый подробный анализ памяти во многих случаях проведен не был. Объем памяти, необходимый даже для сравнительно простых программ, измеряется мегабайтами. Разработчики программ часто не отдают себе отчет в необходимости экономии места, полагая, что если у пользователя недостаточно памяти, то он может ее приобрести и установить дополнительно. Этот подход является крайне неправильным и негативным, в результате его компьютеры приходят «в негодность» задолго до того, как они действительно устаревают.

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

Вопросы

1. Какие основные характеристики алгоритма оцениваются при его анализе?

2. Как целесообразно оценивать «время» выполнения алгоритма? Почему? Что такое вычислительная сложность алгоритма?

3. В каких случаях сравнивается эффективность работы разных алгоритмов?

4. Должен ли анализ алгоритма учитывать особенности компьютера, на котором этот алгоритм реализован? Почему?

5. Влияют ли входные данные задачи на последовательность действий алгоритма? Привести пример.

6. Что представляют из себя классы входных данных?

7. Насколько значимым в настоящее время является вопрос используемой алгоритмом памяти?

Литература

1. Дж. Макконнелл. Основы современных алгоритмов. 2-е дополненное издание. – М.: Техносфера, 2004. – 368 с.

2. Гуц А.К. Математическая логика и теория алгоритмов: Учебное пособие. – Омск: Изд-во Наследие. Диалог-Сибирь, 2003. – 108 с.

3. Деммель Дж. Вычислительная линейная алгебра / Дж.Деммель; пер.с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 430 с.

4. Бахвалов Н.С. Численные методы / Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков. — М.: БИНОМ. Лаборатория знаний, 2006. — 636 с.

5. Каханер Д. Численные методы и программное обеспечение / Д.Каханер, К.Моулер, С.Нэш; пер. с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 575 с.

Лекция 4. Оценка вычислительной сложности алгоритма

План

Предварительные шаги для оценки вычислительной сложности алгоритма

Скорость роста алгоритма

Анализ подходов, связанных с поиском информации

Предварительные шаги для оценки вычислительной сложности алгоритма

Подсчет вычислительной сложности алгоритма состоит из двух основных шагов:

Шаг 1. Выбор значимой операции или группы операций.

Шаг 2. Определение, какие из выбранных операций содержатся в теле алгоритма, а какие составляют накладные расходы или уходят на регистрацию и учет данных.

В качестве значимых часто (но не обязательно) выступают операции двух типов:

  • Сравнение,
  • Арифметические операции.

Арифметические операции разбиваются на две группы:

  • Аддитивные,
  • мультипликативные.

Аддитивные операторы (сложения) включают сложение, вычитание, увеличение и уменьшение счетчика.

Мультипликативные операторы (умножения) включают умножение, деление, взятие остатка по модулю.

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

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

Скорость роста алгоритма

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

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

Реферат на тему: Алгоритм - понятие алгоритма

где – Реферат на тему: Алгоритм - понятие алгоритма длина массива входных данных.

Если рассмотреть графики этих функций (рис.4.1)

Реферат на тему: Алгоритм - понятие алгоритма

Рис. 4.1.

например, на промежутке от 1 до 35, то становится очевидным, что несмотря на то, что функция Реферат на тему: Алгоритм - понятие алгоритма сначала растет медленнее всех рассматриваемых функций, при росте аргумента она увеличивает скорость возрастания быстрее всех остальных, что приводит к тому, что, начиная с некоторого значения аргумента Реферат на тему: Алгоритм - понятие алгоритма , ее значения (а значит количество операций и время выполнения соответствующего алгоритма) становятся значительно больше значений всех остальных рассматриваемых функций.

Таким образом, при анализе алгоритмов существенным является поведении функции зависимости количества операций от размера входных данных Реферат на тему: Алгоритм - понятие алгоритма при больших значениях аргумента.

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

Таблица 4.1-

Для иллюстрации последующего вывода рассмотрим пример функции, которая трактуется как закон зависимости количества арифметических операций некоторого гипотетического алгоритма от размера входных данных Реферат на тему: Алгоритм - понятие алгоритма :

Реферат на тему: Алгоритм - понятие алгоритма .

Предложенная функция является суммой нескольких функций, скорость возрастания которых различна. Очевидно, что скорость роста всей Реферат на тему: Алгоритм - понятие алгоритма будет определяться самым быстровозрастающим слагаемым – Реферат на тему: Алгоритм - понятие алгоритма . Иначе говоря, быстрорастущие функции доминируют функции с более медленным ростом, что приводит к тому, что если сложность алгоритма представляет собой сумму двух или нескольких функций, то для оценки алгоритма целесообразно отбрасывать все функции, кроме тех, которые растут быстрее всех.

Определение. Говорят, что функции Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма связаны соотношением (или сравнимы)

Реферат на тему: Алгоритм - понятие алгоритма

(читается: функция Реферат на тему: Алгоритм - понятие алгоритма есть О-большое от Реферат на тему: Алгоритм - понятие алгоритма ), если

Реферат на тему: Алгоритм - понятие алгоритма .

Рассмотрим другой пример:

Реферат на тему: Алгоритм - понятие алгоритма .

Ясно, что скорость возрастания Реферат на тему: Алгоритм - понятие алгоритма будет определяться первым слагаемым – Реферат на тему: Алгоритм - понятие алгоритма , остальными слагаемыми при оценке скорости роста можно пренебречь. Кроме того:

Реферат на тему: Алгоритм - понятие алгоритма ,

Из чего вытекает, что

Реферат на тему: Алгоритм - понятие алгоритма .

Отбрасывая все младшие члены, скорость роста которых меньше, получаем порядок вычислительной сложности алгоритма [Макконнелл]. В предыдущем рассмотренном примере поскольку Реферат на тему: Алгоритм - понятие алгоритма , то соответствующий гипотетический алгоритм имеет вычислительную сложность порядкаРеферат на тему: Алгоритм - понятие алгоритма .

§

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

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

Последовательный поиск. В алгоритмах поиска нас интересует процесс просмотра списка в поисках некоторого конкретного элемента, называемого целевым. Предполагаем, что список неотсортирован. Алгоритмы поиска возвращают индекс записи, содержащей нужный ключ. Если ключевое значение не найдено, то алгоритм поиска может возвращать значение индекса, превышающее верхнюю границу массива. Пусть элементы списка имеют номера от 1 до N. Если целевой элемент отсутствует в списке, будет возвращаться 0. Для простоты предполагается, что ключевые значения не повторяются.

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

Анализ наихудшего случая У алгоритма последовательного поиска два наихудших случая: целевой элемент стоит в списке последним или отсутствует вообще. Здесь потребуется Nсравнений. N– верхняя граница сложности любого алгоритма поиска.

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

Двоичный поиск. При сравнении целевого значения со средним элементом отсортированного списка возможен один из трех результатов: значения равны, целевое значение меньше (больше) элемента списка. В первом, наилучшем случае, поиск завершен. В остальных двух случаях мы можем отбросить половину списка. Когда целевое значение меньше среднего элемента, то если оно имеется в списке, то находится только перед средним элементом, значит половину списка после него можно сразу отбросить. Аналогично, если целевое значение больше среднего. При повторении этой процедуры можно отбросить половину оставшейся части списка и т.д.

Анализ наихудшего случаяДля простоты предположим, что Реферат на тему: Алгоритм - понятие алгоритма . На первом шаге 1 сравнение, после которого остается Реферат на тему: Алгоритм - понятие алгоритма элементов. Затем еще одно сравнение, после которого Реферат на тему: Алгоритм - понятие алгоритма элементов и т.д. Количество сравнений равно количеству шагов. После последнего останется только один элемент, т.е. Реферат на тему: Алгоритм - понятие алгоритма . Количество шагов равно Реферат на тему: Алгоритм - понятие алгоритма .

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

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

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

Вычислительная сложность алгоритма: на первом проходе – N-1сравнение, на втором – N-2 и т.д., т.е. общее количество операций –

Реферат на тему: Алгоритм - понятие алгоритма .

Вопросы

1. Какие предварительные шаги предпринимаются для оценки вычислительной сложности алгоритма?

2. На какие две группы разбиваются арифметические операции? Почему?

3. Какие наборы данных желательно найти при оценке вычислительной сложности алгоритма?

4. Что называется скоростью роста алгоритма?

5. Что такое порядок вычислительной сложности алгоритма? Как он оценивается?

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

Литература

1. Дж. Макконнелл. Основы современных алгоритмов. 2-е дополненное издание. – М.: Техносфера, 2004. – 368 с.

2. Гуц А.К. Математическая логика и теория алгоритмов: Учебное пособие. – Омск: Изд-во Наследие. Диалог-Сибирь, 2003. – 108 с.

3. Деммель Дж. Вычислительная линейная алгебра / Дж.Деммель; пер.с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 430 с.

4. Бахвалов Н.С. Численные методы / Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков. — М.: БИНОМ. Лаборатория знаний, 2006. — 636 с.

5. Каханер Д. Численные методы и программное обеспечение / Д.Каханер, К.Моулер, С.Нэш; пер. с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 575 с.

Лекция 5. Сложностные классы задач

План

1. Класс Р – задачи с полиномиальной сложностью

§

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

Общий вид многочлена:

Реферат на тему: Алгоритм - понятие алгоритма

Будем предполагать, что все коэффициенты известны и записаны в массив Реферат на тему: Алгоритм - понятие алгоритма . Значение нужно вычислить в т. Реферат на тему: Алгоритм - понятие алгоритма .

Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма

Для Реферат на тему: Алгоритм - понятие алгоритма от 1 до Реферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма

Конец цикла

Возврат Реферат на тему: Алгоритм - понятие алгоритма

Вычислительная сложность – 3n.

Схема Горнера.

Реферат на тему: Алгоритм - понятие алгоритма .

Реферат на тему: Алгоритм - понятие алгоритма

Для Реферат на тему: Алгоритм - понятие алгоритма от Реферат на тему: Алгоритм - понятие алгоритма до 0

Реферат на тему: Алгоритм - понятие алгоритма

Конец цикла

Возврат Реферат на тему: Алгоритм - понятие алгоритма

Вычислительная сложность – 2n.

Предварительная обработка коэффициентов. Результат можно еще улучшить, если обработать коэффициенты до начала вычислений. Основная идея: выразить многочлен через многочлены меньшей степени. Например, для вычисления Реферат на тему: Алгоритм - понятие алгоритма можно в цикле выполнить 255 умножений, а можно Реферат на тему: Алгоритм - понятие алгоритма . Положим

Реферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма – 7 раз

Для того, чтобы метод предварительной обработки коэффициентов работал, нужно, чтобы многочлен был унимодальным (т.е. Реферат на тему: Алгоритм - понятие алгоритма ), а степень многочлена на 1 меньше некоторой степени двойки ( Реферат на тему: Алгоритм - понятие алгоритма для некоторого Реферат на тему: Алгоритм - понятие алгоритма ). Преимущества описываемого подхода могут оказаться настолько велики, что иногда стоит добавить к многочлену слагаемые, позволяющие его применить, а затем вычесть добавленные значения из окончательного результата. Например, если мы имеем дело с многочленом 30 степени, то нужно прибавить к нему Реферат на тему: Алгоритм - понятие алгоритма , найти разложение, а затем вычесть Реферат на тему: Алгоритм - понятие алгоритма из каждого результата вычисления. Алгоритм все равно будет работать быстрее остальных методов.

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

Рефераты:  реферат найти Санитарно-гигиенические требования к стоматологическим медицинским организациям

Рассмотрим пример: Реферат на тему: Алгоритм - понятие алгоритма . Определим Реферат на тему: Алгоритм - понятие алгоритма . Поскольку степень многочлена равна 7, то Реферат на тему: Алгоритм - понятие алгоритма . Выберем значение Реферат на тему: Алгоритм - понятие алгоритма таким образом, чтобы оба многочлена Реферат на тему: Алгоритм - понятие алгоритма были унимодальными: Реферат на тему: Алгоритм - понятие алгоритма . Для нашего примера Реферат на тему: Алгоритм - понятие алгоритма . Теперь мы хотим найти Реферат на тему: Алгоритм - понятие алгоритма , удовлетворяющие уравнению

Реферат на тему: Алгоритм - понятие алгоритма .

Многочлены Реферат на тему: Алгоритм - понятие алгоритма – это частное и остаток от деления Реферат на тему: Алгоритм - понятие алгоритма на Реферат на тему: Алгоритм - понятие алгоритма . Деление с остатком дает:

Реферат на тему: Алгоритм - понятие алгоритма

На следующем шаге мы можем применить ту же самую процедуру к каждому из многочленов Реферат на тему: Алгоритм - понятие алгоритма :

Реферат на тему: Алгоритм - понятие алгоритма ; Реферат на тему: Алгоритм - понятие алгоритма

В результате:

Реферат на тему: Алгоритм - понятие алгоритма .

Для вычисления Реферат на тему: Алгоритм - понятие алгоритма – одно умножение. Еще одно умножение для Реферат на тему: Алгоритм - понятие алгоритма .

Способ Умножения Сложения

Стандартный 13 7

Схема Горнера 7 7

Предварительная обработка 5 10

Способ Умножения Сложения

Стандартный 2N-1 N

Схема Горнера N N

Предварительная обработка Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма

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

Решение системы линейных алгебраических уравнений

Система Реферат на тему: Алгоритм - понятие алгоритма уравнений с Реферат на тему: Алгоритм - понятие алгоритма неизвестными: Реферат на тему: Алгоритм - понятие алгоритма .

Один из способов решения СЛАУ – метод последовательной подстановки:

Реферат на тему: Алгоритм - понятие алгоритма

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

Метод Жордана-Гаусса. СЛАУ можно представить матрицей с Реферат на тему: Алгоритм - понятие алгоритма строками и Реферат на тему: Алгоритм - понятие алгоритма столбцами:

Реферат на тему: Алгоритм - понятие алгоритма

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

Реферат на тему: Алгоритм - понятие алгоритма .

Пример.

Реферат на тему: Алгоритм - понятие алгоритма .

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

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма .

Повторим эти действия для второй строки.

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма

Для итерационных методов решения операций меньше, но нужно выполнить условия сходимости итерационного процесса. Рассмотрим метод простой итерации Реферат на тему: Алгоритм - понятие алгоритма

Вопросы

  1. Какие алгоритмы называются численными?
  2. Схемы вычисления значения многочлена, их сравнение, преимущества и недостатки каждой.
  3. Какие из арифметических операций являются предпочтительными при оценке вычислительной сложности алгоритма? Почему?
  4. Методы решения систем линейных алгебраических уравнений, сравнение их вычислительных сложностей.

Литература

  1. Деммель Дж. Вычислительная линейная алгебра / Дж.Деммель; пер.с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 430 с.
  2. Бахвалов Н.С. Численные методы / Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков. — М.: БИНОМ. Лаборатория знаний, 2006. — 636 с.
  3. Каханер Д. Численные методы и программное обеспечение / Д.Каханер, К.Моулер, С.Нэш; пер. с англ. Х.Д.Икрамова. — М.: Мир, 2001. — 575 с.

4. Воеводин В.В. Вычислительные основы линейной алгебры / В.В.Воеводин. — М.: Наука. Гл.ред.физ.-мат.лит., 1977. — 304 с.

Семестровий модуль 2. АНАЛИЗ ПОСЛЕДОВАТЕЛЬНЫХ АЛГОРИТМОВ ДЛЯ ИСПОЛЬЗОВАНИЯ В ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМАХ

Лекция 8.Граф информационной зависимости реализации алгоритма – основной способ представления алгоритма для выявления внутреннего параллелизма

План

§

Основы построения графа алгоритма

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

Цели анализа последовательных алгоритмов

Появление параллельных вычислительных систем и внедрение их в практику решения больших прикладных задач привело к возникновению целого ряда проблем в области численного программного обеспечения. Построение новых численных методов для параллельных вычислительных систем процесс долговременный и сложный. Попытки разработать специальные параллельные методы не всегда оказывались состоятельными [1]. Кроме того, непростительно просто отбросить при работе на параллельных ЭВМ огромный багаж численных методов и программ, накопленный в процессе длительного использования последовательных компьютеров. Актуальны не только исследования “классических” последовательных алгоритмов для определения возможности их использования в параллельных вычислительных системах, но и сведения о параллельных свойствах алгоритмов, а также знания, позволяющие эти сведения получать.

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

Одной из возможных форм записи алгоритмов является их представление в виде графов (грубо говоря, любая блок-схема алгоритма также может с определенными оговорками рассматриваться как граф) [2].

Основы построения графа алгоритма

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

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

Вершины графа, отвечающие операциям ввода (входным данным), не будут иметь входящих дуг, а операциям вывода – выходящих. При этом совсем не обязательно, чтобы одному и тому же входному данному соответствовала одна входная вершина (одна операция ввода). Число подобных операций может выбираться, исходя из конкретных условий. Аналогично с операциями вывода. В тех случаях, когда изображение графа является достаточно громоздким, возможно не изображать входные и выходные вершины, считая их положение ясным по умолчанию.

Описанный граф – граф информационной зависимости реализации алгоритма при фиксированных входных данных [Воев], который для удобства далее называется графом алгоритма.

Граф алгоритма Реферат на тему: Алгоритм - понятие алгоритма, где V — множество вершин графа, а E — множество его ребер, является ориентированным ациклическим мультиграфом (в мультиграфе не допускаются петли, но допускаются кратные ребра).

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

Реферат на тему: Алгоритм - понятие алгоритма . (100)

Порядок выполнения операций в правой части выражения однозначно не определен: например, произведение Реферат на тему: Алгоритм - понятие алгоритма можно вычислить на первом шаге, а можно после нахождения значения Реферат на тему: Алгоритм - понятие алгоритма . Существует и множество других вариантов, некоторые из которых представлены в следующей таблице 8.1. Операции на одном шаге могут выполняться одновременно (параллельно), сами шаги выполняются последовательно.

Таблица 8.1-

Последовательность операций

Реферат на тему: Алгоритм - понятие алгоритма

Очевидно, что графы, отвечающие различным последовательностям операций для рассматриваемого примера (рис.8.1), являются изоморфными.

Реферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма

Рис.8.1

По существу, в (100) фиксирован не один алгоритм, а несколько математически эквивалентных.

Пример 20. Исследовать различные способы вычисления суммы

Реферат на тему: Алгоритм - понятие алгоритма . (150)

В точной арифметике операция сложения обладает свойством коммутативности и ассоциативности. Очевидно, что общее число различных способов вычисления выражения (150) при больших Реферат на тему: Алгоритм - понятие алгоритма будет очень значительным. Какой способ выбрать? С точки зрения точных вычислений все они эквивалентны. Но в условиях влияния ошибок округления появляются значительные различия. Рассмотрим две возможных реализации вычисления (150) при Реферат на тему: Алгоритм - понятие алгоритма :

  • схема последовательного суммирования:

Реферат на тему: Алгоритм - понятие алгоритма ,

которой соответствует граф

Реферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма ,

соответствующий граф которой:

Реферат на тему: Алгоритм - понятие алгоритма

Можно показать, что схема последовательного суммирования хуже по точности, чем схема сдваивания, примерно, в Реферат на тему: Алгоритм - понятие алгоритма раз. Различия есть и в информационных связях между отдельными операциями. Хотя оба графа имеют одно и тоже число вершин и соответствуют одному и тому же вычисляемому выражению (150), эти графы не изоморфны (у них разные длины критических путей), перенос информации в соответствующих им схемах осуществляется принципиально различными способами. Как видно из первого графа, схема последовательного суммирования не имеет никаких параллельных ветвей вычислений. второй граф показывает наличие в схеме сдваивания большого числа информационно не связанных между собой, а значит имеющих возможность выполняться одновременно, операций.

Замечание. Графы алгоритмов примера 10 и схемы сдваивания примера 20 очевидно являются изоморфными, хотя соответствуют решению совершенно разных задач. Алгоритмы с изоморфными графами обладают многими общими свойствами, по крайней мере, в той части, которая касается распределения информации при реализации алгоритмов (хотя призваны решать возможно совершенно разные задачи).

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

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

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

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

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

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

Вопросы

1. Почему исследования “классических” последовательных алгоритмов для определения возможности их использования в параллельных вычислительных системах остаются актуальными в настоящее время?

2. Что такое внутренний параллелизм алгоритма? Любому ли алгоритму присущ внутренний параллелизм?

3. Что представляет из себя граф информационной зависимости реализации алгоритма?

4. Какие ограничения накладывает граф алгоритма на порядок выполнения операций?

5. Какие преобразования алгоритма сохраняют уровень достоверности его результатов?

Литература

1. Воеводин В.В. Параллельные вычисления / В.В.Воеводин, Вл.В.Воеводин. — СПб.: БХВ-Петербург, 2002. — 608 с.

2. Харари Ф. Теория графов / Ф.Харари; пер.с англ. В.П.Козырева. — М.: Мир, 1973. — 300 с.

3. Уилсон Р. Введение в теорию графов / Р.Уилсон. — М.: Мир, 1977. — 207 с.

4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. — М.: Мир, 1978. — 432 с.

5. Новиков Ф.А. Дискретная математика для программистов / Ф.А.Новиков. — СПб.: Питер, 2006. — 364 с.

6. Иванов Б.Н. Дискретная математика. Алгоритмы и программы / Б.Н.Иванов. — М.: Лаборатория Базовых Знаний, 2001. — 288с.

Лекция 9. Топологическая сортировка графа

План

§

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

Утверждение 123. Пусть задан ориентированный ациклический граф, имеющий Реферат на тему: Алгоритм - понятие алгоритма вершин. Существует натуральное число Реферат на тему: Алгоритм - понятие алгоритма , для которого все вершины графа можно так пометить одним из индексов Реферат на тему: Алгоритм - понятие алгоритма , что если дуга идет из вершины с индексом Реферат на тему: Алгоритм - понятие алгоритма в вершину с индексом Реферат на тему: Алгоритм - понятие алгоритма , то Реферат на тему: Алгоритм - понятие алгоритма [Воев].

Доказательство. Выберем в графе любое число входных вершин и пометим их индексом 1. Удалим из графа помеченные вершины и инцидентные им ребра. Оставшийся граф также ориентированный и ациклический. Выберем в нем любое число входных вершин (в соответствии с утверждением 111 хотя бы одна такая вершина есть) и пометим их индексом 2. Снова удалим помеченные вершины и инцидентные им ребра. Продолжим этот процесс, пока не исчерпаем весь граф. Так как при каждом помечивании помечается не менее одной вершины, то число различных индексов не превышает числа вершин.

Следствие 1. Никакие две вершины с одинаковыми индексами не являются смежными.

Следствие 2. Минимальное число индексов, которыми можно пометить все вершины графа, на 1 больше длины его критического пути.

Следствие 3. Для любого натурального числа Реферат на тему: Алгоритм - понятие алгоритма , большего длины критического пути, существует такая разметка вершин графа, при которой используются все Реферат на тему: Алгоритм - понятие алгоритма индексов.

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

Если при топологической сортировке графа некоторая вершина помечена индексом Реферат на тему: Алгоритм - понятие алгоритма , то длина всех путей, оканчивающихся в этой вершине, меньше Реферат на тему: Алгоритм - понятие алгоритма .

Пример. Построить топологическую сортировку графа Реферат на тему: Алгоритм - понятие алгоритма (рис.9.1(а)). На рис.9.1(б-к) отражены последовательные шаги построения сортировки в соответствии с доказательством утверждения 123. В результате получено разбиение множества вершин графа на следующие топологические уровни:

Номер топологического уровня Вершины графа
1, 2
3, 4, 5
6, 8
7, 10
14, 15

Реферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма

Рис.9.1. Исходный граф Реферат на тему: Алгоритм - понятие алгоритма (а), последовательные шаги построения топологической сортировки (б-к)

Если на каждом шаге построения топологической сортировки помечать все возможные вершины, то количество уровней будет минимальным и равным 7 (рис.9.2) (сравнить с длиной критического пути графа, которая равна 6), при этом разбиение множества вершин графа на топологические уровни будет иметь следующий вид:

Номер топологического уровня Вершины графа
1, 2, 6
3, 4, 5
7, 8, 10
12, 13
14, 15

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

Реферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма

рис.9.2. Топологическая сортировка графа, содержащая минимальное количество уровней

Замечание 1000. Утверждение 123 остается в силе, если неравенство Реферат на тему: Алгоритм - понятие алгоритма заменить неравенством Реферат на тему: Алгоритм - понятие алгоритма , однако ни одно из следствий уже выполняться не будет. Такая разметка вершин графа называется обобщенной топологической сортировкой.

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

Топологическая сортировка называется линейной, если индексы любых вершин различны. В этом случае говорят, что граф линейно упорядочен. Если топологическая сортировка (или обощенная топологическая сортировка) не являются линейными, то из нее легко получить другие сортировки с бóльшим числом индексов.

§

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

Предлагается алгоритм построения топологической сортировки графа алгоритма по сортировкам подграфов его разбиения; приводятся результаты вычислительного эксперимента, дающие возможность сравнить предлагаемый алгоритм с используемым ранее непосредственным построением топологической сортировки графа большой размерности [Воев].

Пусть граф Реферат на тему: Алгоритм - понятие алгоритмаявляется сложным для исследования и обработки в силу своей размерности или других причин, некоторые из которых уже указаны. Разложим граф на подграфы. Построим разбиение Реферат на тему: Алгоритм - понятие алгоритма множества вершин Реферат на тему: Алгоритм - понятие алгоритма : Реферат на тему: Алгоритм - понятие алгоритма Ø, для Реферат на тему: Алгоритм - понятие алгоритма .Каждое подмножество Реферат на тему: Алгоритм - понятие алгоритма , определяет порожденный подграф Реферат на тему: Алгоритм - понятие алгоритма графа Реферат на тему: Алгоритм - понятие алгоритма. Для любого множества Реферат на тему: Алгоритм - понятие алгоритма порожденным подграфом называется максимальный подгаф графа Реферат на тему: Алгоритм - понятие алгоритма , множеством вершин которого является Реферат на тему: Алгоритм - понятие алгоритма . Построение сортировки графа Реферат на тему: Алгоритм - понятие алгоритмапроведем на основе сортировок подграфов Реферат на тему: Алгоритм - понятие алгоритма . Заметим, что Реферат на тему: Алгоритм - понятие алгоритма , поскольку при выделении подграфов Реферат на тему: Алгоритм - понятие алгоритма , происходит потеря ребер, инцидентных вершинам из разных подмножеств Реферат на тему: Алгоритм - понятие алгоритма . Вследствие такой потери разрываются связи между вершинами графа Реферат на тему: Алгоритм - понятие алгоритма, проход по которым может определить топологический индекс вершины. Отметим, что связный граф невозможно разбить на непересекающиеся подграфы, объединение которых давало бы исходный. Например, Реферат на тему: Алгоритм - понятие алгоритма (рис.1), т.к. объединение не содержит ребро Реферат на тему: Алгоритм - понятие алгоритма , а значит при построении топологической сортировки графа Реферат на тему: Алгоритм - понятие алгоритмапо топологическим сортировкам Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма не учитывается возможность получения Реферат на тему: Алгоритм - понятие алгоритма вершинами исходного графа с индексами 5 и 6 топологических номеров по цепочке 1, 5, 6.

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

Определение 1. Множество

Реферат на тему: Алгоритм - понятие алгоритма

называется

множеством теряемых ребер графа Реферат на тему: Алгоритм - понятие алгоритмапри разбиении Реферат на тему: Алгоритм - понятие алгоритма множества Реферат на тему: Алгоритм - понятие алгоритма .

Реферат на тему: Алгоритм - понятие алгоритмаОпределение 2. Вершины графа Реферат на тему: Алгоритм - понятие алгоритма, являющиеся концевыми вершинами теряемых ребер, называются граничными вершинами.

Во избежание потери ребер при разбиении графа Реферат на тему: Алгоритм - понятие алгоритмазаменим каждый его порожденный подграф Реферат на тему: Алгоритм - понятие алгоритма на другой порожденный подграф Реферат на тему: Алгоритм - понятие алгоритма , где множество Реферат на тему: Алгоритм - понятие алгоритма содержит вершины, входящие в Реферат на тему: Алгоритм - понятие алгоритма , и дополнительно граничные вершины графа Реферат на тему: Алгоритм - понятие алгоритма, каждая из которых смежна хотя бы с одной вершиной из множества Реферат на тему: Алгоритм - понятие алгоритма . Полученная новая система порожденных подграфов, очевидно, обладает свойством:

Реферат на тему: Алгоритм - понятие алгоритма

но пересечение этих подграфов не обязательно равно Ø. Например, для графа Реферат на тему: Алгоритм - понятие алгоритма,(см. рис.10.3) можно построить систему подграфов Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма . Построим сортировки наименьшей длины для каждого подграфа в отдельности, при этом каким-либо образом пометив граничные вершины. Без ограничения общности рассуждений, принимается, что запись каждого топологического уровня сортировки содержит сначала индексы всех вершин, не являющихся граничными, а если присутствуют граничные вершины, их индексы завершают запись. Такие топологические сортировки будут иметь минимальное количество уровней, равное длине критического пути подграфа плюс единица (следствие 2 утверждения 123).

При построении сортировки произвольного графа Реферат на тему: Алгоритм - понятие алгоритмадля простоты изложения предположим, что количество определенных выше порожденных подграфов равно двум: Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма , а Реферат на тему: Алгоритм - понятие алгоритма — их топологические сортировки, представляющие массивы, в которых последовательно выписаны топологические уровни, начиная с первого. Обозначим Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма — топологические номера вершины в Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма соответственно, Реферат на тему: Алгоритм - понятие алгоритма — топологический номер граничной вершины в результирующей сортировке графа Реферат на тему: Алгоритм - понятие алгоритма ,Реферат на тему: Алгоритм - понятие алгоритма , — корректировочные разности для Реферат на тему: Алгоритм - понятие алгоритма . Корректировочной разностью подграфа Реферат на тему: Алгоритм - понятие алгоритма , назовем разность между топологическим индексом вершины в сортировке Реферат на тему: Алгоритм - понятие алгоритма и ее индексом в сортировке Реферат на тему: Алгоритм - понятие алгоритма .

Предлагаемый алгоритм содержит следующие основные этапы:

инициализуются значения корректировочных разностей для подграфов Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма и определяется порядок просмотра топологических сортировок: Реферат на тему: Алгоритм - понятие алгоритма ; Реферат на тему: Алгоритм - понятие алгоритма ; Реферат на тему: Алгоритм - понятие алгоритма ;

последовательный просмотр топологической сортировкиРеферат на тему: Алгоритм - понятие алгоритма .

Пусть Реферат на тему: Алгоритм - понятие алгоритма — индекс очередной вершины в сортировке Реферат на тему: Алгоритм - понятие алгоритма .

Если индекс Реферат на тему: Алгоритм - понятие алгоритма соответствует неграничной вершине,

то

Реферат на тему: Алгоритм - понятие алгоритма = Реферат на тему: Алгоритм - понятие алгоритма Реферат на тему: Алгоритм - понятие алгоритма , возврат в начало этапа;

иначе

переход на следующий этап;

последовательный просмотр топологической сортировкиРеферат на тему: Алгоритм - понятие алгоритма .

Пусть Реферат на тему: Алгоритм - понятие алгоритма — индекс очередной вершины в сортировке Реферат на тему: Алгоритм - понятие алгоритма .

Если индекс Реферат на тему: Алгоритм - понятие алгоритма соответствует неграничной вершине,

то

Реферат на тему: Алгоритм - понятие алгоритма = Реферат на тему: Алгоритм - понятие алгоритма Реферат на тему: Алгоритм - понятие алгоритма , возврат в начало этапа;

иначе

М:если Реферат на тему: Алгоритм - понятие алгоритма ,

то

Реферат на тему: Алгоритм - понятие алгоритма ;обновление корректировочных разностей:

Реферат на тему: Алгоритм - понятие алгоритма ; Реферат на тему: Алгоритм - понятие алгоритма ; переход на предыдущий

этап;

если Реферат на тему: Алгоритм - понятие алгоритма ,

то

если в пределах рассматриваемого топологического уровня

Реферат на тему: Алгоритм - понятие алгоритма существует такая граничная вершина с индексом

Реферат на тему: Алгоритм - понятие алгоритма , что Реферат на тему: Алгоритм - понятие алгоритма ,

то

вывести вершину с индексом Реферат на тему: Алгоритм - понятие алгоритма на первое место в списке

граничных вершин данного топологического уровня;

переход на метку М;

иначе

Реферат на тему: Алгоритм - понятие алгоритма ( Реферат на тему: Алгоритм - понятие алгоритма )- Реферат на тему: Алгоритм - понятие алгоритма ,

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма ; Реферат на тему: Алгоритм - понятие алгоритма ; переход на

предыдущий этап.

Обобщение предложенного алгоритма на граф с большим числом подграфов не вызывает труда: для присвоения окончательного топологического номера каждой граничной вершине необходимо будет исследовать не два, а более подграфов, что потребует и большего общего количества арифметических операций. Таким образом, можно ожидать, что эффективность предложенного алгоритма будет зависеть от числа подграфов, а наибольший выигрыш во времени по сравнению с непосредственным построением топологической сортировки исходного графа, очевидно, будет наблюдаться, когда количество подграфов минимально (два, три), что и подтверждается результатами проведенного вычислительного эксперимента.

В вычислительном эксперименте исследовалась эффективность с точки зрения временных затрат предложенного алгоритма построения топологической сортировки графа по топологическим сортировкам его подграфов по сравнению с непосредственным построением сортировки графа. Эксперимент проводился на графах различных по структуре последовательных алгоритмов. При этом изменялась размерность и количество подграфов, на которые разбивался граф. При проведении эксперимента фиксировалась размерность графа, начиная с которой новый алгоритм работал быстрее. Представлены примеры некоторых графов небольшой размерности (рис.10.4).

Из полученных результатов вычислительного эксперимента, проведенного в среде MATLAB (табл.10.1), очевидно, что даже при сравнительно небольшом количестве вершин графа построение его топологической сортировки по топологическим сортировкам его подграфов происходит быстрее, чем непосредственное построение топологической сортировки всего графа. Это количество вершин фиксировалось, как только преимущество во времени достигало порядка Реферат на тему: Алгоритм - понятие алгоритма с. С увеличением размерности графа преимущество возрастает. Например, для графа 1, количество вершин которого равно 250, а количество подграфов равно двум, время построения сортировки по предложенному алгоритму уже на 5 с меньше, чем при использовании алгоритма непосредственного построения топологической сортировки всего графа в целом. Кроме того, как следует из результатов эксперимента, чем больше количество подграфов разбиения графа, тем при большей его размерности достигается преимущество во времени по сравнению с построением топологической сортировки целого графа, как и предполагалось ранее.

Реферат на тему: Алгоритм - понятие алгоритма

Рис.10.4. Примеры используемых графов

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

Таблица 10.1 –

Результаты вычислительного эксперимента

Граф Кол-во подграфов Кол-во вершин в подграфах Количество вершин графа, начиная с которого достигается преимущество предложенного алгоритма по времени
96 / 105
97 / 92 / 101
122 / 76 / 62 / 60
256 / 257
161 / 161 / 161 / 160
176 / 175
139 / 138 / 139 / 138
105 / 296
150 / 173 / 177
288 / 289
217 / 218 / 216
177 / 177 / 178 / 178
98 / 139
102 / 128 / 96 / 133

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

Вопросы

1. Когда возникает семейство «похожих» алгоритмов?

2. Всегда ли можно точно построить граф алгоритма, содержащего условные операции? Почему?

3. Можно ли по имеющейся топологической сортировке графа получить топологические сортировки его подграфов? Как это сделать? Когда возникает такая необходимость? Привести пример.

4. Что назыв ется множеством теряемых ребер графа, когда это множество возникает? Привести примеры.

5. Какие вершины графа называются граничными вершинами? Привести примеры.

6. Написать программу, реализующую алгоритм построения топологической сортировки объединения двух графов по имеющимся топологическим сортировкам этих графов.

Литература

1. Воеводин В.В. Параллельные вычисления / В.В.Воеводин, Вл.В.Воеводин. — СПб.: БХВ-Петербург, 2002. — 608 с.

2. Харари Ф. Теория графов / Ф.Харари; пер.с англ. В.П.Козырева. — М.: Мир, 1973. — 300 с.

3. Уилсон Р. Введение в теорию графов / Р.Уилсон. — М.: Мир, 1977. — 207 с.

4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. — М.: Мир, 1978. — 432 с.

5. Новиков Ф.А. Дискретная математика для программистов / Ф.А.Новиков. — СПб.: Питер, 2006. — 364 с.

6. Иванов Б.Н. Дискретная математика. Алгоритмы и программы / Б.Н.Иванов. — М.: Лаборатория Базовых Знаний, 2001. — 288с.

7. Кобозева А.А., Нариманова Е.В. Метод построения топологической сортировки объединения графов, используемый при распараллеливании последовательных алгоритмов / Труды Одесского политехнического университета. – 2006. – №2(26). – С. 156-161.

Лекция 11. Использование операций гомоморфизма при построении топологических сортировок графов

План

§

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

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

Рефераты:  Развитие цифровых сквозных технологий

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

Использование внутреннего параллелизма имеет

· достоинство: не нужно тратить дополнительные усилия на изучение вычислительных свойств вновь создаваемых алгоритмов;

· недостатки: необходимость определять и исследовать графы алгоритмов.

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

Пример. Необходимо вычислить произведение

Реферат на тему: Алгоритм - понятие алгоритма ,

где Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма -матрицы с элементами Реферат на тему: Алгоритм - понятие алгоритма соответственно. Элементы матрицы Реферат на тему: Алгоритм - понятие алгоритма будем обозначать Реферат на тему: Алгоритм - понятие алгоритма :

Реферат на тему: Алгоритм - понятие алгоритма . (25)

Формула (25) не определяет алгоритм вычисления элементов матрицы Реферат на тему: Алгоритм - понятие алгоритма однозначно, т.к. не определен порядок суммирования произведений Реферат на тему: Алгоритм - понятие алгоритма . Отсутствие указания о соблюдении какого-либо порядка перебора индексов Реферат на тему: Алгоритм - понятие алгоритма говорит о возможном параллелизме вычислений.

Допустим, что выбран следующий алгоритм реализации (25):

Реферат на тему: Алгоритм - понятие алгоритма (35)

Построим граф алгорима (35). Будем считать, что вершины графа соответствуют операциям вида Реферат на тему: Алгоритм - понятие алгоритма . При построении графа не будем сначала показывать вершины и инцидентные им дуги, связанные с вводом элементов матриц Реферат на тему: Алгоритм - понятие алгоритмаи с присвоением элементам матрицы Реферат на тему: Алгоритм - понятие алгоритма вычисленных значений Реферат на тему: Алгоритм - понятие алгоритма Чтобы не вносить в исследование графа алгоритма дополнительные трудности, вершины графа нельзя располагать произвольно. Рассмотрим прямоугольную решетку в трехмерном пространстве с координатами Реферат на тему: Алгоритм - понятие алгоритма . Во все целочисленные узлы решетки для Реферат на тему: Алгоритм - понятие алгоритма поместим вершины графа. Анализируя (35), видно, что в вершину с координатами Реферат на тему: Алгоритм - понятие алгоритма для Реферат на тему: Алгоритм - понятие алгоритма будет передаваться результат выполнения операции, соответствующей вершине с координатами Реферат на тему: Алгоритм - понятие алгоритма .

Граф алгоритма распадается на Реферат на тему: Алгоритм - понятие алгоритма не связанных между собой подграфов. Каждый подграф содержит Реферат на тему: Алгоритм - понятие алгоритма вершин и представляет один путь, расположенный параллельно оси Реферат на тему: Алгоритм - понятие алгоритма . Для Реферат на тему: Алгоритм - понятие алгоритма граф алгоритма представлен на рис. 12.1(а). В полном графе имеется множественная рассылка данных. Элемент Реферат на тему: Алгоритм - понятие алгоритма рассылается по всем вершинам, имеющим те же самые значения координат Реферат на тему: Алгоритм - понятие алгоритма . Элемент Реферат на тему: Алгоритм - понятие алгоритма рассылается по всем вершинам, имеющим те же самые координаты Реферат на тему: Алгоритм - понятие алгоритма . Для Реферат на тему: Алгоритм - понятие алгоритма все рассылки учтены на рис. 12.1(б).

Этот пример хорошо иллюстрирует, насколько важно правильно выбрать расположение вершин графа алгоритма. Если, например, расположить вершины на прямой без какой-либо связи с индексами Реферат на тему: Алгоритм - понятие алгоритма , то вряд ли в таком графе удалось бы разглядеть параллелизм. При выбранном расположении вершин параллелизм очевиден. Легко описать любой ярус любой параллельной формы.

Реферат на тему: Алгоритм - понятие алгоритма

Рис. 12.1

§

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

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

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

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

Если из Реферат на тему: Алгоритм - понятие алгоритма ой вершины графа алгоритма идет дуга в Реферат на тему: Алгоритм - понятие алгоритма ую вершину, то этому факту можнодать следующую трактовку. Некоторая информация рождается в Реферат на тему: Алгоритм - понятие алгоритма ой вершине в момент Реферат на тему: Алгоритм - понятие алгоритма и передается Реферат на тему: Алгоритм - понятие алгоритма ой вершине для использования. В какой-то момент времени между Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма эта информация начинает использоваться устройством, относящимся к Реферат на тему: Алгоритм - понятие алгоритма ой вершине, и ее использование заканчивается в момент Реферат на тему: Алгоритм - понятие алгоритма . Следовательно, с каждой дугой графа можно связать не только какую-то информацию, передаваемую от одной вершины к другой. Любая временная развертка однозначно определяет время Реферат на тему: Алгоритм - понятие алгоритма ее появления и время Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма ее существования, частично в неизменном, частичнов преобразованном в Реферат на тему: Алгоритм - понятие алгоритма ой вершине виде. Будем считать, что в момент Реферат на тему: Алгоритм - понятие алгоритма старая информация полностью заканчивает свое существование и рождается новая. Если в момент Реферат на тему: Алгоритм - понятие алгоритма одна и та же информация начинает распространяться одновременно по нескольким дугам, то будем предполагать, что на каждой дуге возможна ее самостоятельная жизнь со своими процессами передачи и преобразования.

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

Рассмотрим временные ограничения, возникающие в процессе ввода-вывода информации. Обозначим через Реферат на тему: Алгоритм - понятие алгоритма вектор, координатами которого являются координаты вектора развертки Реферат на тему: Алгоритм - понятие алгоритма , соответствующие входным вершинам. Задача может состоять в изучении множества разверток, удовлетворяющих дополнительным ограничениям вида Реферат на тему: Алгоритм - понятие алгоритма , где Реферат на тему: Алгоритм - понятие алгоритма – заданный вектор, неравенство между векторами означает систему неравенств между соответствующими их координатами. Это говорит о том, что исследуются временные характеристики процессов реализации алгоритмов при условии, что заданы ограничения на моменты ввода информации. Вектор Реферат на тему: Алгоритм - понятие алгоритма называется вектором граничных или начальных условий.

Пусть фиксирован алгоритм и определен его граф. Обозначим через Реферат на тему: Алгоритм - понятие алгоритма множество всех обощенных временных разверток для этого алгоритма. Через Реферат на тему: Алгоритм - понятие алгоритма обозначим множество всех существующих и не существующих, реальных и гипотетических вычислительных систем, на которых алгоритм может быть реализован. Ясно, что любая конкретная ЭВМ входит во множество Реферат на тему: Алгоритм - понятие алгоритма и этой ЭВМ соответствует во множестве Реферат на тему: Алгоритм - понятие алгоритма некоторое подмножество, описывающее все возможные реализации на ней заданного алгоритма.

Если определены какие-то ограничения на параметры вычислительных систем, то тем самым определяется во множестве Реферат на тему: Алгоритм - понятие алгоритма какое-то подмножество временных разверток. Например, задание вектора Реферат на тему: Алгоритм - понятие алгоритма или Реферат на тему: Алгоритм - понятие алгоритма определяет подмножества Реферат на тему: Алгоритм - понятие алгоритма или Реферат на тему: Алгоритм - понятие алгоритма . В свою очередь в подмножествах Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма выделяются подмножества в зависимости от векторов начальных условий. Возможны и другие ограничения. Ясно, что в рассмотренных случаях Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма , а также Реферат на тему: Алгоритм - понятие алгоритма = Реферат на тему: Алгоритм - понятие алгоритма для некоторого вектора Реферат на тему: Алгоритм - понятие алгоритма , выбираемого по вектору Реферат на тему: Алгоритм - понятие алгоритма . Все эти множества и подмножества зависят от рассматриваемого алгоритма.

Время реализации алгоритма

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

Алгоритмы, считавшиеся эффективными на однопроцессорных ЭВМ, нередко становятся очень неэффективными на многопроцессорных системах.

Как оценивать время реализации алгоритма? Очевидно, что прямое его измерение на конкретной ЭВМ дает возможность сравнивавть временные характеристики различных алгоритмов только по отношению к данной ЭВМ. По отношению к другой ЭВМ аналогичное сравнение, вообще говоря, дает другие результаты. Поэтому необходимо абстрагироваться от вычислительной системы. Для однопроцессорных ЭВМ это происходит за счет сравнения количества арифметических операций. Формально можно считать, что число операций – это время реализации алгоритма на абстрактной однопроцессорной машине, у которой время реализации любой операции равно 1, а время выполнения всех других процедур (ввод-вывод данных, взаимодействие с памятью, передача данных по каналам связи и т.п.) равно 0. При этом предполагается, что операции выполняются подряд без какого-либо простоя в работе ЭВМ.

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

Есть одно принципиальное отличие между абстрактной последовательной ЭВМ и граф-машиной. Именно, на первой реализуются все алгоритимы, на второй – только один.

Будем исследовать множество временных разверток Реферат на тему: Алгоритм - понятие алгоритма , определяемым временем задержек Реферат на тему: Алгоритм - понятие алгоритма , поскольку частным выбором векторов Реферат на тему: Алгоритм - понятие алгоритма можно описать развертки других типов. Например, Реферат на тему: Алгоритм - понятие алгоритма определяет совокупность обобщенных временных разверток. Задание вектора реализации Реферат на тему: Алгоритм - понятие алгоритма также эквивалентно заданию некоторого вектора Реферат на тему: Алгоритм - понятие алгоритма . При этом основной целью является изучение в Реферат на тему: Алгоритм - понятие алгоритма точек минимума функционала времени реализации алгоритма.

Вопросы

1. Можно ли любой ориентированный ациклический граф считать графом некоторого алгоритма? Почему?

2. Как должны соотносится между собой время работы алгоритма и время, которое затрачивается на его анализ?

3. В чем состоит основная проблема анализа алгоритмов при помощи соответствующих им графов?

4. Что представляет из себя вектор обобщенной временной развертки, чем он отличается от вектора временной развертки?

5. Что такое вектор реализации алгоритма? Когда вектор реализации нулевой?

6. Как временная развертка определяет время появления и время существования информации?

7. Как определяется время задержки информации на дуге? Определение вектора задержек.

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

9. Как связаны между собой Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма ? Пояснить.

10. От чего зависит время реализации алгоритма на вычислительной системе?

11. Есть ли прямая связь между эффективностью алгоритма на однопроцессорных ЭВМ и многопроцессорных системах? Пояснить.

Литература

1. Воеводин В.В. Параллельные вычисления / В.В.Воеводин, Вл.В.Воеводин. — СПб.: БХВ-Петербург, 2002. — 608 с.

2. Харари Ф. Теория графов / Ф.Харари; пер.с англ. В.П.Козырева. — М.: Мир, 1973. — 300 с.

3. Уилсон Р. Введение в теорию графов / Р.Уилсон. — М.: Мир, 1977. — 207 с.

4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. — М.: Мир, 1978. — 432 с.

5. Новиков Ф.А. Дискретная математика для программистов / Ф.А.Новиков. — СПб.: Питер, 2006. — 364 с.

6. Иванов Б.Н. Дискретная математика. Алгоритмы и программы / Б.Н.Иванов. — М.: Лаборатория Базовых Знаний, 2001. — 288с.

§

Утверждение 3.При фиксированном векторе задержек множество временных разверток обладает следующими свойствами:

Пусть векторы Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма являются временными развертками для вектора задержек Реферат на тему: Алгоритм - понятие алгоритма . Тогда:

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма ,

Следовательно Реферат на тему: Алгоритм - понятие алгоритма Реферат на тему: Алгоритм - понятие алгоритма .

Реферат на тему: Алгоритм - понятие алгоритма ,

Следовательно Реферат на тему: Алгоритм - понятие алгоритма .

Для любого Реферат на тему: Алгоритм - понятие алгоритма имеем:

Реферат на тему: Алгоритм - понятие алгоритма ,

Т.е. вектор Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма – выпукло.

При фиксированном ненулевом векторе задержек Реферат на тему: Алгоритм - понятие алгоритма множество временных разверток Реферат на тему: Алгоритм - понятие алгоритма не является конусом. Однако при любом Реферат на тему: Алгоритм - понятие алгоритма развертки из Реферат на тему: Алгоритм - понятие алгоритма входят во множество Реферат на тему: Алгоритм - понятие алгоритма . Несмотря на то, что множество Реферат на тему: Алгоритм - понятие алгоритма содержит в себе все множества Реферат на тему: Алгоритм - понятие алгоритма , само оно, в свою очередь, содержится в некотором смысле в каждом Реферат на тему: Алгоритм - понятие алгоритма .

Утверждение 4.Пусть Реферат на тему: Алгоритм - понятие алгоритма – какая-нибудь фиксированная временная развертка из Реферат на тему: Алгоритм - понятие алгоритма . Тогда для любой обобщенной временной развертки Реферат на тему: Алгоритм - понятие алгоритма вектор Реферат на тему: Алгоритм - понятие алгоритма .

Действительно: Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма для всех подходящих пар Реферат на тему: Алгоритм - понятие алгоритма . Тогда

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма .

Таким образом, конус обобщенных временных разверток Реферат на тему: Алгоритм - понятие алгоритма , сдвинутый параллельно на любую развертку из Реферат на тему: Алгоритм - понятие алгоритма , содержится в Реферат на тему: Алгоритм - понятие алгоритма при любом Реферат на тему: Алгоритм - понятие алгоритма .

Надо выяснить, когда множества Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма совпадают с точностью до параллельного переноса.

Утверждение 5.Пусть СЛАУ

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма (3)

совместна и вектор Реферат на тему: Алгоритм - понятие алгоритма является ее решением. Тогда множества Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма совпадают с точностью до параллельного переноса на вектор Реферат на тему: Алгоритм - понятие алгоритма .

Действительно, Реферат на тему: Алгоритм - понятие алгоритма . Тогда в силу утверждения 4, множество Реферат на тему: Алгоритм - понятие алгоритма , сдвинутое на вектор Реферат на тему: Алгоритм - понятие алгоритма , содержится в Реферат на тему: Алгоритм - понятие алгоритма . Остается показать, что любую развертку из Реферат на тему: Алгоритм - понятие алгоритма можно представить, как некоторую обобщенную развертку из Реферат на тему: Алгоритм - понятие алгоритма , сдвинутую на вектор Реферат на тему: Алгоритм - понятие алгоритма . Пусть Реферат на тему: Алгоритм - понятие алгоритма – произвольная развертка из Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма . Рассмотрим вектор Реферат на тему: Алгоритм - понятие алгоритма . Имеем Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма . Вычитая отсюда (3), получим Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма , т.е. Реферат на тему: Алгоритм - понятие алгоритма .

Совместимость (3) дает достаточное условие совпадения Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма . Какие необходимые условия? Предположим, что множество Реферат на тему: Алгоритм - понятие алгоритма получается из множества Реферат на тему: Алгоритм - понятие алгоритма с помощью параллельного переноса на вектор Реферат на тему: Алгоритм - понятие алгоритма . Чем характерна временная развертка Реферат на тему: Алгоритм - понятие алгоритма ?

Какова бы ни была развертка Реферат на тему: Алгоритм - понятие алгоритма , она получается как сумма развертки из Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма , тогда вектор Реферат на тему: Алгоритм - понятие алгоритма является обобщенной временной разверткой. Пусть дуга идет из Реферат на тему: Алгоритм - понятие алгоритма в Реферат на тему: Алгоритм - понятие алгоритма . Т.к. Реферат на тему: Алгоритм - понятие алгоритма – замкнутое, то при фиксированных Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма существует развертка, на которой величина Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма достигает в Реферат на тему: Алгоритм - понятие алгоритма своего минимального значения. В силу того, что вектор Реферат на тему: Алгоритм - понятие алгоритма является обобщенной временной разверткой, выполняется Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма . Отсюда вытекает Реферат на тему: Алгоритм - понятие алгоритма . Это означает, что имеет место

Утверждение 6.Пусть множество Реферат на тему: Алгоритм - понятие алгоритма получается из множества Реферат на тему: Алгоритм - понятие алгоритма с помощью параллельного переноса на вектор Реферат на тему: Алгоритм - понятие алгоритма . Тогда для любых пар Реферат на тему: Алгоритм - понятие алгоритма , Реферат на тему: Алгоритм - понятие алгоритма , соответствующих дугам графа алгоритма, минимальное значение Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма для всех разверток Реферат на тему: Алгоритм - понятие алгоритма равно Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма .

Таким образом, координаты развертки Реферат на тему: Алгоритм - понятие алгоритма обеспечивают наилучшее удовлетворение неравенств (1), максимально приближая каждое из них к равенству. При совместимости СЛАУ (3) все неравенства (1) становятся на развертке Реферат на тему: Алгоритм - понятие алгоритма равенствами.

Вопросы

1. Сформулировать критерий того, что вектор Реферат на тему: Алгоритм - понятие алгоритма является вектором временной развертки, соответствующим вектору Реферат на тему: Алгоритм - понятие алгоритма .

2. Как связана временная развертка для суммы векторов задержек с временными развертками слагаемых? Показать.

3. Как связана временная развертка для для вектора задержек Реферат на тему: Алгоритм - понятие алгоритма с временной разверткой для вектора задержек Реферат на тему: Алгоритм - понятие алгоритма ? Показать.

4. Показать, что множество Реферат на тему: Алгоритм - понятие алгоритма обобщеных временных разверток является линейным конусом.

5. Показать, что множество Реферат на тему: Алгоритм - понятие алгоритма обобщеных временных разверток выпукло и замкнуто.

6. Свойства множества временных разверток при фиксированном векторе задержек. Доказать.

Литература

1. Воеводин В.В. Параллельные вычисления / В.В.Воеводин, Вл.В.Воеводин. — СПб.: БХВ-Петербург, 2002. — 608 с.

2. Харари Ф. Теория графов / Ф.Харари; пер.с англ. В.П.Козырева. — М.: Мир, 1973. — 300 с.

3. Уилсон Р. Введение в теорию графов / Р.Уилсон. — М.: Мир, 1977. — 207 с.

4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. — М.: Мир, 1978. — 432 с.

5. Новиков Ф.А. Дискретная математика для программистов / Ф.А.Новиков. — СПб.: Питер, 2006. — 364 с.

6. Иванов Б.Н. Дискретная математика. Алгоритмы и программы / Б.Н.Иванов. — М.: Лаборатория Базовых Знаний, 2001. — 288с.

Лекция 15. Векторные свойства временных разверток (продолжение)

План

  1. Ориентированная задержка цикла. Уравновешенный цикл.
  2. Условие совпадения множеств Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма с точностью до параллельного переноса.
  3. Пространственно-временные развертки

§

Задание вектора реализации Реферат на тему: Алгоритм - понятие алгоритма порождает некоторый вектор задержек Реферат на тему: Алгоритм - понятие алгоритма . В этом случае величину невязки Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма можно трактовать как время незапланированного простоя в процессе использования в качестве аргумента Реферат на тему: Алгоритм - понятие алгоритма -ой операции результата, полученного Реферат на тему: Алгоритм - понятие алгоритма -ой операцией. Аналогичная трактовка имеет смысл и в случае произвольного вектора задержек Реферат на тему: Алгоритм - понятие алгоритма . Если какой-то результат не используется, то его надо где-то хранить, поэтому невязки Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма характеризуют времена дополнительного хранения данных, как входных, так и промежуточных, обусловленные взаимной «несогласованностью» развертки Реферат на тему: Алгоритм - понятие алгоритма и вектора задержек Реферат на тему: Алгоритм - понятие алгоритма . Согласно утверждению 6, временная развертка Реферат на тему: Алгоритм - понятие алгоритма минимизирует каждое из таких времен.

Выясним, какие свойства графа алгоритма приводят к совместимости системы (3).

Реферат на тему: Алгоритм - понятие алгоритма Пусть задан вектор задержек Реферат на тему: Алгоритм - понятие алгоритма . Выберем какую-нибудь последовательность вершин графа, образующую цикл: любые две соседние вершины связаны дугой, а также связаны дугой первая и последняя вершины. Установим в цикле направление обхода вершин. Будем считать, что дуга проходится в положительном направлении, если сначала встречается ее начальная вершина, а затем конечная. В противном случае считаем, что дуга проходится в отрицательном направлении.Пусть при обходе цикла Реферат на тему: Алгоритм - понятие алгоритма -ая дуга проходится Реферат на тему: Алгоритм - понятие алгоритма раз в положительном направлении и Реферат на тему: Алгоритм - понятие алгоритма раз в отрицательном. Сумму величин Реферат на тему: Алгоритм - понятие алгоритма по всем Реферат на тему: Алгоритм - понятие алгоритма , соответствующим дугам цикла, будем называть ориентированной задержкой цикла. Цикл, у которого ориентированная задержка равна 0, будем называть уравновешенным.

Пример. Пусть Реферат на тему: Алгоритм - понятие алгоритма . На рис.15.1(а) дан пример уравновешенного цикла, а на рис. 15.1(б) – неуравновешенного.

2. Условие совпадения множеств Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма с точностью до параллельного переноса

Утверждение 7.СЛАУ (3) совместна тогда и только тогда, когда все циклы графа алгоритма уравновешены, или граф алгоритма не имеет циклов.

Доказательство. Предположим, что СЛАУ (3)

Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма

Реферат на тему: Алгоритм - понятие алгоритма совместна и вектор Реферат на тему: Алгоритм - понятие алгоритма задает ее решение. Выберем в графе алгоритма любой цикл, если он в нем имеется, и установим направление обхода. Каждому проходу Реферат на тему: Алгоритм - понятие алгоритма -ой дуги в положительном направлении поставим в соответствие равенство Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма , каждому проходу той же дуги в отрицательном направлении поставим в соответствие равенство Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма . Просуммируем все равенства согласно обходу дуг цикла. В правой части суммы будет стоять ориентированная задержка цикла. Левая часть суммы будет равна нулю, т.е. цикл уравновешенный. Действительно, при каждом проходе соседних дуг цикла инцидентная им вершина учитывается дважды. Соответствующая этой вершине величина Реферат на тему: Алгоритм - понятие алгоритма всегда будет встречаться в двух соседних или последнем и первом уравнениях также дважды: сначала со знаком « », а затем со знаком «-» (рис.15.2). На рис.15.2(а): дуге Реферат на тему: Алгоритм - понятие алгоритма соответствует Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма , следующей дуге Реферат на тему: Алгоритм - понятие алгоритма : Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма . При сложении в левой части Реферат на тему: Алгоритм - понятие алгоритма взаимно уничтожается.

На рис 15.2(б): дуге Реферат на тему: Алгоритм - понятие алгоритма также соответствует Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма , следующей дуге Реферат на тему: Алгоритм - понятие алгоритма : Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма . Но поскольку эта дуга обходится в отрицательном направлении, то ей ставится в соответствие Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма . При сложении в левой части Реферат на тему: Алгоритм - понятие алгоритма снова взаимно уничтожается.

Пусть теперь граф алгоритма либо не имеет циклов, либо все его циклы уравновешены. Покажем, что СЛАУ (3) будет совместной. Не ограничивая общности будем считать граф алгоритма односвязным. Возьмем, например, первую вершину и припишем Реферат на тему: Алгоритм - понятие алгоритма какое-нибудь значение. Предположим, что построен односвязный подграф, и его вершинам приписаны такие значения Реферат на тему: Алгоритм - понятие алгоритма , что уравнения из (3) выполняются для всех дуг подграфа. Добавим новую дугу, у которой хотя бы одна вершина принадлежит построенному подграфу. Если вторая вершина не принадлежит подграфу, то соответствующее ей значение Реферат на тему: Алгоритм - понятие алгоритма однозначно определяется из того уравнения (3), которое соответствует добавленной дуге .

Пусть вторая вершина также принадлежит подграфу. В силу сделанного предположения об односвязности подграфа это означает, что добавленная дуга образует с некоторыми дугами подграфа какие-то циклы. Выберем любой из таких циклов и установим в нем направление обхода, при котором добавленая дуга проходится в положительном направлении. Пусть начальная вершина добавленной дуги иммет номер Реферат на тему: Алгоритм - понятие алгоритма , конечная – номер Реферат на тему: Алгоритм - понятие алгоритма . Соответствующие значения Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма определены раньше.Обойдем все дуги цикла, начиная с Реферат на тему: Алгоритм - понятие алгоритма -ой вершины и кончая Реферат на тему: Алгоритм - понятие алгоритма -ой вершиной. Снова поставим в соответствие каждому проходу Реферат на тему: Алгоритм - понятие алгоритма -ой дуги в положительном направлении равенство Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма , в отрицательном направлении – равенство Реферат на тему: Алгоритм - понятие алгоритмаРеферат на тему: Алгоритм - понятие алгоритма . Просуммируем эти равенства. Согласно сделанному выше замечанию, сумма левых частей даст выражение Реферат на тему: Алгоритм - понятие алгоритма . Сумма правых частей, принимая во внимание уравновешенность цикла, даст Реферат на тему: Алгоритм - понятие алгоритма . Следовательно, уравнение (3) для Реферат на тему: Алгоритм - понятие алгоритма -ой дуги уже выполнено. Продолжая процесс присоединения новых дуг, припишем в конце концов всем вершинам графа алгоритма такие значения Реферат на тему: Алгоритм - понятие алгоритма , что будут выполняться все уравнения (3). Тем самым получено какое-то решение (3), т.е. установлено совместность этой системы.

Решение системы (3) в случае односвязности графа однозначно определяется при фиксации значения любой из его координат Реферат на тему: Алгоритм - понятие алгоритма и остается решением при добавлении вектора (1,1,…,1).

§

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

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

Для повышения эффективности исследований необходимо более тесно связывать как граф алгоритма, так и формы представления временных разверток с формами записи алгоритмов.

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

Будем считать, что вершины графа алгоритма размещены в некоторой области Реферат на тему: Алгоритм - понятие алгоритма . Если задана какая-то временная развертка, то тем самым каждой из точек вершин Реферат на тему: Алгоритм - понятие алгоритма приписывается вполне определенное число, совпадающее с времененм выполнения соответствующей операции. Таким образом, временные развертки – это функции Реферат на тему: Алгоритм - понятие алгоритма , определенные на некотором дискретном множестве точек Реферат на тему: Алгоритм - понятие алгоритма из области Реферат на тему: Алгоритм - понятие алгоритма . Множество значений Реферат на тему: Алгоритм - понятие алгоритма также будет дискретным. Временные развертки, представленные в таком виде, будем называть пространственно-временными.

Одна из основных задач исследования структуры алгоритма – изучение множества параллельных форм. Каждая параллельная форма определяет группы одновременно выполняемых операций, называемые ярусами. В целом любая параллельная форма определяет некоторое множество временных разверток. Если же развертки задавать функциями Реферат на тему: Алгоритм - понятие алгоритма , то элементы параллельных форм, в частности их ярусы будут иметь четкий геометрический смысл. Действительно, рассмотрим поверхность уровня Реферат на тему: Алгоритм - понятие алгоритма . Пусть это множество содержит какие-то вершины графа алгоритма. Тогда соответствующие этим вершинам операции выполняются в один и тот же момент, т.е. образуют ярус параллельной формы. Различные ярусы задаются различными поверхностями уровня пространственно-временных разверток.

Исследование параллельных форм будет осуществляться тем эффективнее, чем проще устроено множество допустимых функций Реферат на тему: Алгоритм - понятие алгоритма .поэтому очень неудобно задавать эти функции поточечно с точки зрения удобства их обработки. При чина – огромное число выполняемых операций, совпадающих с числом точек, на которых определяются пространственно-временные развертки. Поэтому надо задавать пространственно-временные развертки не поточечно, а с помощью некоторых правил.

Предположим, что пространственно-временные развертки каким-то приемлемым образом продолжены на всю область Реферат на тему: Алгоритм - понятие алгоритма , содержащую вершины графа алгоритма.

Будем считать, что пространственно-временные развертки Реферат на тему: Алгоритм - понятие алгоритма обладают определеными свойствами гладкости.

Реферат на тему: Алгоритм - понятие алгоритма Пусть для простоты область Реферат на тему: Алгоритм - понятие алгоритма односвязная. Рассмотрим поверхности уровней Реферат на тему: Алгоритм - понятие алгоритма пространственно-временные развертки Реферат на тему: Алгоритм - понятие алгоритма . Поверхности уровней могут иметь сложное строение, в том числе, они могут быть многосвязными. Однако, если с изменением Реферат на тему: Алгоритм - понятие алгоритма они меняются непрерывно, то по одну их сторону всегда будут находиться вершины, для которых выполнение соответствующих операций происходит до момента Реферат на тему: Алгоритм - понятие алгоритма , а по другую сторону – вершины, для которых выполнение операций происходит после момента Реферат на тему: Алгоритм - понятие алгоритма . Тогда перенос информации от вершин одной группы к вершинам другой группы осуществляется лишь теми дугамиграфа алгоритма, которые пересекают поверхности уровней развертки Реферат на тему: Алгоритм - понятие алгоритма нечетное число раз. Очевидно, что совокупность всех таких дуг для любой поверхности уровня пространственно-временной развертки определяет ориентированный разрез графа алгоритма. Поверхности уровней показывают в области Реферат на тему: Алгоритм - понятие алгоритма распределение потоков информации, перенос которой осуществляется в процессе реализации алгоритма.

Предположим, что граф алгоритма имеет хотя бы одну подходящую временную развертку. Она определяет систему поверхностей уровней. Эти поверхности могут быть односвязными (рис.15.3(а)), многосвязными (рис.15.3(б)). Здесь цифрами отмечены поверхности уровней, соответствующие последовательным значениям Реферат на тему: Алгоритм - понятие алгоритма . Т.к. Реферат на тему: Алгоритм - понятие алгоритма есть время, то систему поверхностей уровня можно трактовать как систему фиксированных состояний некоторой перемещающейся во времени поверхности.

Системам поверхностей уровней одной пространственно-временной развертки определяет некоторую параллельную форму алгоритма.

Вопросы

1. Что характеризует время дополнительного хранения данных?

2. Что называется ориентированной задержкой цикла?

3. Какой цикл называется уравновешенным?

4. Сформулировать и доказать критерий совпадения множеств Реферат на тему: Алгоритм - понятие алгоритма и Реферат на тему: Алгоритм - понятие алгоритма с точностью до параллельного переноса.

5. Какие временные развертки называются пространственно-временными?

Литература

1. Воеводин В.В. Параллельные вычисления / В.В.Воеводин, Вл.В.Воеводин. — СПб.: БХВ-Петербург, 2002. — 608 с.

2. Харари Ф. Теория графов / Ф.Харари; пер.с англ. В.П.Козырева. — М.: Мир, 1973. — 300 с.

3. Уилсон Р. Введение в теорию графов / Р.Уилсон. — М.: Мир, 1977. — 207 с.

4. Кристофидес Н. Теория графов. Алгоритмический подход / Н.Кристофидес. — М.: Мир, 1978. — 432 с.

5. Новиков Ф.А. Дискретная математика для программистов / Ф.А.Новиков. — СПб.: Питер, 2006. — 364 с.

6. Иванов Б.Н. Дискретная математика. Алгоритмы и программы / Б.Н.Иванов. — М.: Лаборатория Базовых Знаний, 2001. — 288с.

Оцените статью
Реферат Зона
Добавить комментарий