2.5.Оценка максимальной и минимальной трудоемкости алгоритма

Задача оценки минимальной и максимальной ставится следующим образом: для каждой вершины 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

Рассмотрим пример, иллюстрируемый следующей граф-схемой алгоритма:clip_image001

A0=0, B0=0,

A1=1, B1=3,

A2= A1+2=3, B2=B1+5=8,

A3=min {A12}+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.

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

clip_image002

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

qymin = Ac ncmin,

qymax =Bc ncmax ,

где Ac и Bc – соответственно минимальные и максимальные трудоемкости тела цикла, а ncmin и ncmax –минимальные и максимальные числа прохождения цикла.

Определим эти числа для циклов всех типов:

clip_image003Цикл типа Ц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 , так что

clip_image004qmin=q cmin + q ymin

qymax= (q cmax + q ymax)*(2/P-1) ( 1 )

Цикл типа Ц2:

clip_image005 Здесь ncmin=0, qц2min=qymin,

(ncmin + ncmax)/2 = nc, ncmax/2=1/P-1

1

1-P

ncmax=2/P-2

clip_image006 так что , qц2min=qymin (2)

qц2max= (q cmax + q ymax)*(2/P-1)

Цикл типа Ц3:

clip_image007 Здесь, очевидно,

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)

Рассмотрим следующий пример:

clip_image008

q imin =q imax=q i

clip_image009

Цикл типа Ц3:

Используя (3), получим:

Ac=2+2=4,

Bc=2*(6+2+4)/0.4 – (6+2+8) = 44.

После этого цикл заменяем вершиной Ц3:

clip_image010

В результате этих замен получим:

clip_image011

В конечном итоге граф-схема алгоритма имеет вид :

clip_image012

Предлагаю ознакомиться с аналогичными статьями: