Letsia-_11_T3_-nn.ppt
- Количество слайдов: 25
Содержательные определения алгоритма Алгоритм – конечная “последовательность общепринятых предписаний, формальное, не требующее проявления человеческой изобретательности, исполнение которых позволяет за конечное время получить решение некоторой задачи или любой задачи из некоторого класса задач”; алгоритм - это “четкое предписание, определяющее вычислительный процесс, которое, исходя из вводных данных, приводит к решению поставленной задачи; алгоритм - “совокупность правил, задающих эффективную процедуру решения любой задачи из заданного класса задач”.
Конструктивное определение алгоритма. Примем, что алгоритм – это формальная математическая система, описывающая решение задачи или класса задач, которая характеризуется следующими статическими категориями данных: а) множеством объектов / данных (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 , результаты выполнения которых использует 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, 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 = ( D , Р , S , W ), в которой D - подмножество операторов - данных (формально трактуемых далее как «невыполняемые» операторы); Р = {Pj}, (j= 0, 1, 2, . . . , p) подмножество «выполняемых» операторов, S - сопряженное и W внешнее множества для алгоритма S_A.
Параллельные алгоритмы Последовательные алгоритмы Алгоритмы, в которых определены подпоследовательности действий, предназначенные для независимого параллельного исполнения Алгоритмы, действия которых определены для строго последовательного их исполнения
множество объектов (данных), над которыми должны выполняться действия Временной алгоритм множество действий (операторов), которые должны выполняться над объектами множество статических связей, задающих отношения упорядоченност и операторов выполнена временная параметризация, определяющая упорядоченност ь операций над объектами в динамике вычислительно го процесса
# include <stdio> # include <math. h> void main(void) { double x, y, z; double z 1, z 2 ; scanf(“%e% 5 en”, &x, &y) ; z 1=sin(x); z 2=cos(y); z=z 1+z 2 ; printf(“%en”, z); } Параметр начала tjн оператора Рj - это значение дискретного времени, соответствующее моменту начала выполнения оператора Рj Р. Ти п 0 c = tj 2. 0 + sin 1. 0 os 2. 0 v var sto p x 2. 0 v ix 1. 2. 0 1. 0 Временная глубина tj 0 оператора Рj - характеризует временную задержку между началом выполнения оператора Рj Р и моментом tjк получения результатов выполняемого преобразования
Интервал оператора. активности Определим для произвольного одновыходного (kjвых= 1) оператора Рj Р с параметрами tjн и tjк интервал активности dtj как временной интервал, началом которого является момент времени tjн и концом которого является момент времени tjк завершения выполнения оператора Рj dtj = ( tjн , tjн +td, tjн +2 td, . . . , tjк ) , где td – выбранное значение приращения дискретного модельного времени. В последующем будем называть произвольный оператор Р j временным оператором (ВО) и обозначать Рj (t) , если для него определены ( tjн , tjк ), либо (tjн , T 0(Рj )) или интервал активности dtj
Временная параметризация множества операторов алгоритма. Примем, что задано множество Р = {Pj }, j =0, 1, 2, . . . , р ( р =| P |) операторов некоторого алгоритма. Формирование для множества Р = {Pj } соответствующего множества Р (t) временных операторов Pj (tjн , tjк ) Р (t) = {Pj ( tjн , tjк )}, где j = 0, 1, 2, . . . , p , назовем временной параметризацией исходного множества Р = {Pj }. Введем множество NT = { tjн } параметров начала выполнения операторов алгоритма. Будем называть исходное множество Р = {Pj } абстрактным множеством операторов, а множество Р (t) временных операторов Множественный временной оператор. Примем, что имеются множества Pj ( t н , tjк н t к )} и/или Р (t) = {Р ( t н , j T 0(Р ) – параметризованным во Р (t) = {Рj (tj , j j j )}. Назовем множественным времени множеством операторов. временным оператором (МВО) подмножество Р (tjr ) Р (t ) операторов Рj (tjн) , имеющих одно и то же значение tjн = tjr (tjr NT) и, следовательно, начинающих выполняться одновременно в момент времени tjr.
Параллельный алгоритм Определим параллельный алгоритм как временной алгоритм, в котором имеется хотя бы одна пара операторов Рj (tjн , tjк ) и Рi (tiн, tiк ) c частично или полностью перекрывающимися интервалами активности dtj и dti , для которых выполняется условие dtj dti Последовательный алгоритм Определим последовательный алгоритм как временной алгоритм, имеющий единичное значение ширины h = 1.
ПРОИЗВОЛЬНЫЙ ВРЕМЕННОЙ ПАРАЛЛЕЛЬНЫЙ АЛГОРИТМ Си-программы, представляющих текстовую и графическую спецификации статического алгоритма Множество Тн = {tjн} , j = 0, 1, 2, …, p , определяющего для каждого временного оператора параметр tjн начала его выполнения
Uj Pj Kjвх Kjвых Временная Параллельная Граф - Схема для временного алгоритма А -конструкция Г (t) = (D , U , C , Y), содержащая множество U = {Uj} вершин, множество С = {Ci} стрелок (связей), множество прямых – временных ярусов Y = {Yt}, отмеченных значениями дискретного времени t , удовлетворяющую следующим условиям: • имеется взаимно однозначное соответствие между вершинами Uj и операторами Pj Uj Pj , ( j = 0, 1, 2, . . . , p ; р = | P |) ; • если вершине Uj поставлен во взаимно однозначное соответствие оператор Рj функционального, временного, пространственного или комбинированного преобразования, то из данной вершины Uj исходят kjвых стрелок (kjвых - число выходов оператора Рj) и в данную вершину Uj входят kjвх стрелок ( kjвх -число входов оператора Рj);
Lj Kjвх if . . Kjвых Pj Wj Sj Y MBO U(t. H) t. H • если вершине Uj поставлен во взаимно однозначное соответствие условный управляющий оператор Lj , проверяющий (в общем случае) выполнение одного из m логических условий, то из данной вершины Uj исходят m стрелок и в данную вершину Uj входят kjвх стрелок ( kjвх-число входов оператора Lj); • связи между вершинами конструкции Г (t) = (D , U , C , Y), определяются заданными для множества Р = {Pj } операторов алгоритма А = ( D , Р(t ), S , W , DТ )) сопряженным S и внешним W множествами; • все вершины Uj ВПГС Г (t) = (D , U , C , Y), поставленные во взаимно однозначное соответствие временным операторам Рj (tjн , tjк ) Р(t ) алгоритма А = ( D , Р(t), S , W , DТ )), имеющим значение параметра начала tjн = tн и образующим множественный временной оператор (МВО) Р (tн ) , расположены на временном ярусе Y со значением дискретного времени t = tн и образуют МВО U (tн ) ВПГС Г (t) = (D , U , C , Y ).
Ранг временного оператора Для произвольного временного оператора Р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δ = 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 ; 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 n bp l. o a. o * <= upl +, ++ bpv = var tj 0 1. 0 35. 0 10. 0 3. 0 1. 0 2. 0 1. 0
Файлы, задающие граф задачи на уровне операторов
ВПГС циклической Си-программы
ЛИТЕРАТУРА 1. Поляков Г. А. , Умрихин Ю. Д. Автоматизация проектирования сложных цифровых систем коммутации и управления. - М. : Радио и связь, 1988. - 304 с. 2. Воеводин В. В. , Воеводин Вл. В. Параллельные вычисления. – СПб. : БХВ-Петербург, 2002. – 608 с. 3. Новиков Ф. А. Дискретная математика для программистов: Учебник для вузов. 3 -е изд. - СПб. : Питер, 2008. - 384 с.
Letsia-_11_T3_-nn.ppt