Содержательные определения алгоритма Алгоритм – конечная “последовательность

Скачать презентацию Содержательные определения алгоритма Алгоритм – конечная “последовательность Скачать презентацию Содержательные определения алгоритма Алгоритм – конечная “последовательность

Леция- 11(Т3)-nn.ppt

  • Количество слайдов: 22

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

>  Конструктивное определение алгоритма.  Примем, что алгоритм – это формальная математическая система, Конструктивное определение алгоритма. Примем, что алгоритм – это формальная математическая система, описывающая решение задачи или класса задач, которая характеризуется следующими статическими категориями данных: а) множеством объектов / данных ( D, Data ), над которыми должны выполняться те или иные действия; б) множеством действий /операторов ( Р, Processing ), которые должны выполняться над объектами/данными; в) множеством статических связей ( C, Communication ), задающих отношения упорядоченности операторов по данным и по управлению.

>Будем называть алгоритм статическим , если его реализация включает выполнение функциональных , управляющих и Будем называть алгоритм статическим , если его реализация включает выполнение функциональных , управляющих и пространственных преобразований и не включает временные преобразования. Используем для статических алгоритмов следующее формальное обозначение S_A = (D, Р, C ) (S_A, Static Algorithm). Алгоритм, содержащий в числе выполняемых преобразований временные преобразования, будем называть временным алгоритмом. Используем для временных алгоритмов следующее формальное обозначение Т_A = ( D, P, C , T) (Т_A, Timing Algorithm), где Т - множество временных параметров, определяющих моменты начала выполнения действий (операторов) над объектами и их длительность.

>Сопряженное множество оператора. Обозначим через Sj =S( Pj ) множество номеров операторов Pi , Сопряженное множество оператора. Обозначим через Sj =S( Pj ) множество номеров операторов Pi , результаты выполнения которых использует Pj при своей реализации. Назовем Sj сопряженным множеством для Pj. Операторы Pi , для которых i Wj , являются сопряженными для Рj. Внешнее множество оператора. Пусть Рj - оператор функционального, временного, пространственного преобразования или безусловный управляющий оператор, Wj - множество номеров операторов Рi , каждый из которых использует при своей реализации результаты выполнения оператора Рj. Назовем Wj внешним множеством для функционального, временного, пространственного или безусловного управляющего оператора Рj. Операторы Рi , для которых i Wj , являются внешними для Рj.

># include <stdio. h> void main(void) { int a, b, c ; int k, # include void main(void) { int a, b, c ; int k, s ; scanf(“%d %d %d”, &a, &b, &c); if( a + b < 0) k=a*c; else k = b + c; s = k % 2; printf(“%4 dn”, s) } Примерами сопряженных множеств являются: для оператора Р 8 S 8 ={0, 3}, для Р 11 S 11= {8, 9} , для Р 15 S 15 = {8, 10, 14}. Примерами внешних множеств являются: для оператора Р 0 W 0 = {8}, для оператора Р 14 W 14 = {15, 17}.

>  Входные, внутренние и выходные операторы     алгоритма.  § Входные, внутренние и выходные операторы алгоритма. § Внутренние § Выходные операторы операторы § Входные операторы § Множество Р = {Рj} произвольного алгоритма является объединением трех подмножеств: входного, выходного и внутреннего подмножеств операторов § Р = Рвх U Рвн U Рвых , § определяемых следующим образом: входное множество Рвх = {Рj }, где для каждого Рj Р имеет место Sj = , выходное множество Рвых = {Рj }, где для каждого Рj Р имеет место Wj = ; внутреннее множество Рвн = {Рj }, где для каждого Рj Р выполняются условия Sj P = , Wj P = , § где § - сопряженное и внешнее множества алгоритма.

>   Статический алгоритм Алгоритм будем называть статическим (S_A), если для него определены: Статический алгоритм Алгоритм будем называть статическим (S_A), если для него определены: а) множество объектов (данных), над которыми должны выполняться действия; б) множество действий (операторов), которые преобразуют входные данные операторов в выходные данные (результаты); в) множество статических связей, задающих отношения упорядоченности операторов по данным и по управлению в форме сопряженных и внешних множеств. В качестве формальной записи статического алгоритма будем использовать форму S_A = ( D , Р , S , W ), в которой D - подмножество операторов - данных (формально трактуемых далее как «невыполняемые» операторы); Р = {Pj}, (j= 0, 1, 2, . . . , p) - подмножество «выполняемых» операторов, S - сопряженное и W - внешнее множества для алгоритма S_A.

>  Параллельные алгоритмы     Последовательные алгоритмы  Алгоритмы, в которых Параллельные алгоритмы Последовательные алгоритмы Алгоритмы, в которых Алгоритмы, действия определены которых определены для подпоследовательности строго последовательного действий, предназначенные их исполнения для независимого параллельного исполнения

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

># include <stdio> # include <math. h>  void main(void)  {  # include # include void main(void) { Параметр начала tjн оператора Рj - это double x, y, z; значение дискретного времени, double z 1, z 2 ; scanf(“%e% 5 en”, соответствующее моменту начала &x, &y) ; выполнения оператора Рj Р. z 1=sin(x); z 2=cos(y); z=z 1+z 2 ; printf(“%en”, z); } Ти c v п = + sin os var sto x ix p t j 1. 2. 1. 0 2. 0 0 0 2. 0 1. 0 0 0 Временная глубина tj 0 оператора Рj - характеризует временную задержку между началом выполнения оператора Рj Р и моментом tjк получения результатов выполняемого преобразования

>     Интервал    активности    Интервал активности оператора. Определим для произвольного одновыходного (k jвых = 1) оператора Р j Р с параметрами t j н и t интервал j к активности dt j как временной интервал, началом которого является момент времени tjн и концом которого является момент времени t j к завершения выполнения оператора Р j dtj = ( tjн , tjн +td, tjн +2 td, . . . , tjк ) , где td – выбранное значение приращения дискретного модельного времени. В последующем будем называть произвольный оператор Р j временным оператором (ВО) и обозначать Рj (t) , если для него определены ( tjн , tjк ), либо (tjн , T 0(Рj )) или интервал активности dtj

>    Временная   параметризация    множества операторов алгоритма. Временная параметризация множества операторов алгоритма. Примем, что задано множество Р = {P j }, j =0, 1, 2, . . . , р ( р =| P |) операторов некоторого алгоритма. Формирование для множества Р = {P j } соответствующего множества Р (t) временных операторов P j (t j н , t j к ) Р (t) = { P j ( t j н , t j к )}, где j = 0, 1, 2, . . . , p , назовем временной параметризацией исходного множества Р = {Pj }. Введем множество NT = { t j н } параметров начала выполнения операторов алгоритма. Будем называть исходное множество Р = { j } абстрактным множеством P операторов , а множество Р (t) временных операторов Множественный временной оператор. Примем, что имеются множества н к )} и/или Р (t) = {Р j( ( tнj , 0 j Р – параметризованным во P t к) н Р (t) = { Р j ( t j , t j t j , T ( j )}. Назовем множественны времени множеством операторов. временным оператором (МВО) подмножество Р (t jr ) Р (t ) операторов Р j (t j н ) , имеющих одно и то же значение t j н = t jr (t jr NT) и, следовательно, начинающих выполняться одновременно в момент времени tjr.

>    Параллельный алгоритм Определим параллельный алгоритм как временной  алгоритм, Параллельный алгоритм Определим параллельный алгоритм как временной алгоритм, в котором имеется хотя бы одна пара операторов Рj (tjн , tjк ) и Рi (tiн, tiк ) c частично или полностью перекрывающимися интервалами активности dtj и dti , для которых выполняется условие dtj dti Последовательный алгоритм Определим последовательный алгоритм как временной алгоритм, имеющий единичное значение ширины h = 1.

>   ПРОИЗВОЛЬНЫЙ     ВРЕМЕННОЙ     ПАРАЛЛЕЛЬНЫЙ ПРОИЗВОЛЬНЫЙ ВРЕМЕННОЙ ПАРАЛЛЕЛЬНЫЙ АЛГОРИТМ Си-программы, представляющих Множество Тн = {tjн} текстовую и , j = 0, 1, 2, …, p , графическую определяющего спецификации для каждого статического временного алгоритма оператора параметр tjн начала его выполнения

>    Временная Параллельная Граф - Схема     для Временная Параллельная Граф - Схема для временного алгоритма А -конструкция Г (t) = (D , U , C , Y), содержащая множество U = {Uj} вершин, множество С = {Ci} стрелок (связей), множество прямых – временных ярусов Y = {Yt}, отмеченных значениями дискретного времени t , удовлетворяющую следующим условиям: • имеется взаимно однозначное соответствие между вершинами Uj и операторами Pj Uj Pj , ( j = 0, 1, 2, . . . , p ; р = | P |) ; • если вершине Uj поставлен во взаимно однозначное соответствие оператор Рj функционального, временного, пространственного или комбинированного Uj Pj преобразования, то из данной вершины Uj исходят kjвых стрелок (kjвых - число Kjвх Kjвых выходов оператора Рj) и в данную вершину Uj входят kjвх стрелок ( kjвх -число входов оператора Рj);

>       • если вершине Uj поставлен во взаимно • если вершине Uj поставлен во взаимно Lj однозначное соответствие условный управляющий оператор Lj , проверяющий (в Kjвх if . Kjвых общем случае) выполнение одного из m логических условий, то из данной вершины Uj исходят m стрелок и в данную вершину Uj входят kjвх стрелок ( kjвх-число входов оператора Lj); Pj • связи между вершинами конструкции Г (t) = (D , U , C , Y), определяются заданными для Sj Wj множества Р = {Pj } операторов алгоритма А = ( D , Р(t ), S , W , DТ )) сопряженным S и внешним W множествами; • все вершины Uj ВПГС Г (t) = (D , U , C , Y), Y поставленные во взаимно однозначное соответствие временным операторам MBO Рj (tjн , tjк ) Р(t ) алгоритма А = ( D , Р(t), S , W , DТ )), имеющим значение параметра U(t. H) начала tjн = tн и образующим множественный временной оператор (МВО) Р (tн ) , расположены на временном ярусе Y со значением дискретного времени t = tн и t. H образуют МВО U (tн ) ВПГС Г (t) = (D , U , C , Y ).

>   Ранг временного оператора Для произвольного  временного оператора Рj  ВПГС Ранг временного оператора Для произвольного временного оператора Рj ВПГС Г(t) понятие ранга rj определяется следующим образом: а) ранг rj = tj 0 при Wj = (случай оператора Рj , являющегося выходным оператором алгоритма); б) rj = max (rλ + tj 0 ) , если Wj (случай, когда оператор Рj представляет собой Pλ Wj внутренний оператор алгоритма, обеспечивающий формирование промежуточного результата, используемого другими, внешними по отношению к Рj , операторами Рλ алгоритма). С содержательной точки зрения ранг rj оператора Рj задает максимальное значение времени от момента начала tjн выполнения оператора Рj до завершения решения задачи (то есть временную длину соответствующего маршрута в ВПГС Г (t)).

> Частный приоритет bj временного оператора Рj (в рамках отдельного алгоритма) [1, 2 ]: Частный приоритет bj временного оператора Рj (в рамках отдельного алгоритма) [1, 2 ]: а) bjδ = 1 при rj = max ri и ri < rj при i≠j; Pi Pδ б) bjδ < biδ при rj = ri и tj 0 < ti 0 ; в) bjδ < biδ при rj = ri , tj 0 = ti 0 и |Wj | > |Wi | ; г) bjδ < biδ при rj = ri , tj 0 = ti 0 и |Wj | = |Wi | , но i < j. Общие приоритеты dj операторов Рj различных алгоритмов будем определять следующим образом dj = bjδ + max (biν), если jδ > min jν , ν Mδ P i P δ ν=1. . . κα dj = bjδ , если jδ = min jν. В последнем соотношении Мδ - множество номеров ν (ν 1. . . κ) алгоритмов, имеющих более высокие приоритеты baν по сравнению с приоритетом baδ рассматриваемого алгоритма, Рδ - множество операторов, относящихся к алгоритму с номером δ, имеющему приоритет f δ.

>Си – программа циклического алгоритма void main(void) {    int s, r Си – программа циклического алгоритма void main(void) { int s, r ; int i, p, q, t, k ; scanf ( “%d %dn “, &s , &r ) ; for (i=1; i<=20; i++) { s = s + 1 ; r = (r + 1) % 2 ; p = s * r ; q = s + r ; t = r – p ; } k = (t * q) / 10 ; } Таблица. Значения времени tj 0 выполнения операторов (в тактах) Тип vx /, % co bp l. o a. o * <= upl +, ++ bpv = var n tj 0 1. 0 35. 0 10. 0 3. 0 1. 0 2. 0 1. 0

>Файлы, задающие граф задачи на уровне операторов Файлы, задающие граф задачи на уровне операторов

>ВПГС циклической Си-программы ВПГС циклической Си-программы

>    ЛИТЕРАТУРА  1. Поляков Г. А. , Умрихин Ю. Д. ЛИТЕРАТУРА 1. Поляков Г. А. , Умрихин Ю. Д. Автоматизация проектирования сложных цифровых систем коммутации и управления. - М. : Радио и связь, 1988. - 304 с. 2. Воеводин В. В. , Воеводин Вл. В. Параллельные вычисления. – СПб. : БХВ-Петербург, 2002. – 608 с. 3. Новиков Ф. А. Дискретная математика для программистов: Учебник для вузов. 3 -е изд. - СПб. : Питер, 2008. - 384 с.