Задача оценки минимальной и максимальной ставится следующим образом: для каждой вершины i ГСА известны
q i min и q i max ,а также
Pij – вероятности перехода от вершины с номером i к вершине с номером j (i=1,2…,К).
Требуется оценить A=qmin и B=qmax – минимальную максимальную трудоемкость алгоритма по ГСА.
На графе без циклов определить маргинальные( то есть минимальную и максимальную) трудоемкости легко.
Обозначим через Ai и Bi – минимальную и максимальную трудоемкости реализации алгоритма на момент прохождения блока i.
A0=B0=0,
Ai = min{ Aj }+ q i min,
(j,i) ÎD
Bi= max { Bj }+q i max.
(j,i) ÎD
Дойдя до конечной вершины К, получим:
A=Ak= min{ Aj },
(j,i) ÎD
B=Bk= max{Bj}.
(j,i) ÎD
Рассмотрим пример, иллюстрируемый следующей граф-схемой алгоритма:
A0=0, B0=0,
A1=1, B1=3,
A2= A1+2=3, B2=B1+5=8,
A3=min {A1,А2}+1=4, B3=max{В1, В2} +2=10,
A4=A2+1=4, B4=B2+3=11,
A5=min{3,4} +1=4, B5=max{10,11}+4=15,
A6= min{4,4} +1=5, B6=max{11,15}+2=17,
Ak=A6 =5 . Bk=B6=17.
После этих расчетов исходную схему алгоритма можно заменить графом из одной вершины:
Для графа с циклами также применяется сетевой метод, причем вершинам, соответствующим сжимаемым циклам присваиваются маргинальные оценки :
qymin = Ac ncmin,
qymax =Bc ncmax ,
где Ac и Bc – соответственно минимальные и максимальные трудоемкости тела цикла, а ncmin и ncmax –минимальные и максимальные числа прохождения цикла.
Определим эти числа для циклов всех типов:
Цикл типа Ц1:
Здесь ncmin = 1, Ac= q cmin + q ymin.
Чтобы оценить ncmax, предположим, что число прохождений цикла распределено равномерно на интервале [ ncmin, ncmax ] со средним nc=1/P.
Для определения ncmax имеем следующее уравнение:
(ncmin + ncmax)/2 = nc, (1+ ncmax)/2=1/P,
ncmax=2/P-1.
Далее, Bc= q cmax + q ymax , так что
qymax= (q cmax + q ymax)*(2/P-1) ( 1 )
Цикл типа Ц2:
(ncmin + ncmax)/2 = nc, ncmax/2=1/P-1
|
|
qц2max= (q cmax + q ymax)*(2/P-1)
Цикл типа Ц3:
Ac= q c1min + q ymin
Bc=(q c1max + q ymax)(2/P-1) + q c2max(1/P-2),
Или по другому:
Bc=2*(q1max+qymax+qc2max)/P–(qc1max+qymax+2qc2max) (3)
Рассмотрим следующий пример:
q imin =q imax=q i
Цикл типа Ц3:
Используя (3), получим:
Ac=2+2=4,
Bc=2*(6+2+4)/0.4 – (6+2+8) = 44.
После этого цикл заменяем вершиной Ц3:
В результате этих замен получим:
В конечном итоге граф-схема алгоритма имеет вид :
0 коммент.:
Отправить комментарий