Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Основы теории алгоритмов учеб. пособие

.pdf
Скачиваний:
9
Добавлен:
19.10.2023
Размер:
6.6 Mб
Скачать

- 100 -

[ S ftV iJ o +[-S>h,Yi]o + Pi*Pi-t +€),(<£+r)i

k - * , . . . , 2 ) ;

[ S v t , » f t ] . + [ - S ^ r j e + p 1, S ( Y - 4 ' H ,

 

S ( V - f ) i —> S f e - ^ J o

 

 

*

 

 

 

O ' ~ к ,

 

2 ).

 

Для длинных чисел,

представленных в ячейках памяти ма­

шины в обратных кодах

 

 

 

S * . ^ + Г“ ^ Л ' ] о + p t -

P c - t + O , ( Ч ~ Ч ') * Р f

(4.14)

k-t,...,

2;

р к ~ 0 ) }

 

Siv-vjt -* ‘S(4-*)i ,

S c v +jt, O

f - t y i + P i « р б -i + S ( ( f - 4 ’) 1/

,

(Z - k , k-i.,. . . , 2 j

 

 

5 (v-vj A /

Tj Г + p t - S (

C^ - ‘i'J [ .

 

Если младшие части уменьшаемого и вычитаемого хранят* ся в памяти машины без знаков, то система (4 .14) примет вид

ОМ + 0 ,[{Рс]о +pc~pL-i + 0,('£-i')*i ,

( L~k, k - i , . . . , 2 , рАс-О );

- IOI -

S f i i, +i [-S't'iyVi'jo+Pi ^ 2 f S ( * f - ^ u tf, -C'p) Г,

о , ( У ~ У Г + p i = pi-*-+o , ( # ~ r ) i у

(4.15)

( £ - f c ; k - i , . . . , 2 ; p « = z ) ;

+ pi - •

Формируя в системах (4.14) и (4.15) для каждого олова вычитаемого его обратный код, эти последовательности можно реализовать так же, как и системы (4.9) и (4.10) соответствен но.

Бели в системе (4.15) не учитывать циклический переноо то получим алгоритм о вносимой погрешностью <» 2 ** , при этом (4.15) примет вид

О,

+ 0 ,[^ l]o fP c =рi-i +0, (<£-¥)L,

 

( ь ~ к,

2 )

рк = 0 ) ;

(4Л 6)

< 5 ^ , ^

+

о + Pi -

S ( tf-4,)j., №

- ¥ ) 1 .

Для длинных чисел, представленных в ячейках памяти ма­ шины в дополнительных кодах, вычитание их можно осуществить

че£рз последовательности

 

 

О, ft + 0> [ % ] 0 -t-pL=*pi-i+0,(*£~'>ijl j

(4.1?)

< L ~ K k - i , , . . , 2 ;

=

 

$ 4 i ,

i+l[- 5t i ,4*Je + pi * S(jr-*j1;(if- 4 ? )I .

Система (4.17) может быть реализована, как (4 .1 2 ), ес-

#и олова

вычитаемого инвертировать и

рк

принять равным

2 К!1

.Вносимая ошибка такого алгоритма равна нулю. Если

принять,

что

рк= 0, то система (4.17)

будет

соответствовать

(4 .1 6 ),

ошибка которой ^ 2 ~**,

 

 

Умножение длинных чисел будем осуществлять путём nepe-f

- г а з - множения юс отдельных слов с последующим сложением полученных

частичных произведений.

 

 

 

 

 

 

 

 

 

 

Для длинных чисел

 

 

^

 

 

 

i

 

 

 

i."l

 

 

 

y

-

Z

^

2-j" .

 

j

 

 

 

 

 

 

 

 

i=t

 

отдельных слов

\

представленных в прямых кодах,

произведение

( * * * ) ( % ?

*

)

-

 

(

 

m

 

^

2

 

Произведение отдельного

слова

 

на длинное Число

j

Y* можно найти из йгерационной

носледоватёльности

|

( % 2 ~ in)(4 'i

z *

) + Р а ч , 2 - <С+* " ’

-

 

 

i

 

-

 

 

 

 

П « . л

 

 

,

 

(4.18)

j

 

 

 

 

 

 

 

 

 

 

 

Q - k , k 4 , . . . , 2 , U

Р ( н к ) - 0 ) .

 

 

йлеоь

'<■ -

множитель,

a

T

-множимое.

 

 

 

 

Реализация данной последовательности даст

 

 

№ 2 -“ j T f - f U - ' V Z

 

 

2

 

 

 

 

илиИ

 

 

 

 

 

i " 1

 

 

 

 

 

 

 

 

( f

 

Z

 

 

П

«

*

Л

2 '

^

 

Для

 

j =50

 

 

 

 

 

 

 

 

 

t = К

имеем

 

 

 

 

 

 

 

 

(

*

O

 

к

 

v

 

 

-

П

*

 

 

 

 

 

 

5

первое длинное частичное произведение.

 

f ’ *

 

 

 

Обозначим через

«Д1+1-=-

 

f i t

2'^*

сущу

длинных

 

частичных произведений

 

 

 

*

 

 

 

 

 

Тогда

 

% Y - >

«Лг- i T ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

«И

e

3u*t

г

*fiY .

 

 

 

 

(4.18)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

юз -

 

 

 

 

 

 

 

 

Здесь ЧЬ-ЧГ

реализуется поеледав ат ельностью (4 .1 8 ).

После

 

 

каждой итерации проводим сложение с соответствующим словом

 

 

числа

»ii L+i.

,

С учетом

сказанного

и принимая за

начальное

 

 

условие

L-+-f ■= (Кк+ч =>0

,

произведение длишшх чисел мо­

 

жет быть получено из системы

 

 

 

 

 

 

 

 

 

 

П

 

2

и^

 

) 2 ч”

'

" +

и 2 ^

"

 

-

 

(

,

зи

(Зля j=«k

имеем

irVo-K) = 0

 

>

 

 

(4.19)

 

 

 

флЯ с*к

и j - k ,

 

2 ,f

име«м

f l ( i 4(j)

*“О )

 

 

 

 

 

( Ъ 2 -* Х 'Ч 2 * )+ (> < Щ )2 - < Ъ )Н

 

 

 

+

 

 

 

+

П

2 Ч

 

( ^ (для^ J4

,

P -

(

iп

+

i

о -

o

,

 

В (4.19) для каждого фиксированного

 

i = к

,

к '( .........

 

2, I

параметр

j

принимает

значения

=

,

 

, . . . , 2 , 1 .

 

 

Реализация системы

(4.19) дает

 

 

 

 

 

 

 

 

 

,

 

3

КН

T

 

-

Z

n

 

s

2

-

S

" .

 

 

 

f

 

 

Округляя полуденное произведение по старшему разряду слова Пк-Н ц присваивая знак произведения S П( младшим оловам оиотемой

ПГ Р в - Р г ' + « ^ 5

Sri,

—*■

S c ^ ) l

,

 

(4.20)

где | - k + f , k , . . . , 2 , 1 }

С * 7 0 # и - О

 

р к +ч - 2 “(к" * ° }

р о - О ,

 

;

получим

к

 

 

 

'

O f у ) -

Z .C fy2j j^ ” ■

 

Данное произведе!ие будет получено о абсолютной ошибкой

Л < 0,5 - 2"

к

н

.

Для получения полного произведения о абсолютной погреш­ ностью < 0 .5 -2 -ки итерации системы (4,19) оледует повторить !< раз. Однако это чиояо можно значительно уменьшить, ес­

ли отброоить чнотичные произведения слов

 

 

 

 

- 104 -

 

 

 

 

 

 

 

Тогда в (4.19)

 

i =* к , к - Ь •«- > 2 , ( ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I

В этом случае число обращений к итерациям системы

(4 .I9'1

к ц е т

равно

.

 

 

 

 

 

 

 

 

i

 

4

 

( к + 5 ) Н -

 

 

 

 

 

 

 

|

 

 

С.

 

 

 

 

 

 

 

5

Абсолютная погрешность такого произведения увеличится

 

счет' отброшенных частичных произведений на величину

 

 

 

! г - < ы ' ”[ 2 к - я ,

 

 

 

 

 

 

 

\

 

 

 

д 5 .<2 - ав , + 2 - с “ ‘ ” " 2[ к - з1 .

 

 

 

Ввиду малости второго слагаемого можно считать,

что

 

 

 

i

 

 

 

Л < 0 .5 - 2 ~ кп

 

 

 

 

 

 

 

 

Из системы (4.19) можно получить множество алгоритмов

|

Умножения с различными показателями

А

, Например,

отбрасы-f

вая

И -разрядные члены частичных произведший,меньшие,

чем

:

2 ~ кп , можно получить алгоритм с

абсолютной погрешностью

j

I

 

А < 2 - * и[ 2 М .

 

 

 

.

 

j

V

Если здесь частичные произведения

Ч,. 'f j

,

гд е ^ к -(И );

получать с

округлением, то ошибка такого

алгоритма

 

 

 

 

!

 

д

< 2 ~ * t1( i . s k - i ) .

А . л с

о-ки

 

 

i

Если

 

 

 

 

до

 

:

строить алгоритм о ошибками от Д < U . b d

 

 

2 “K"C2k -0

 

* Т0 МОЖНО получить

 

 

 

 

 

 

 

 

 

 

L - 2 ( 2 k - l )

 

 

 

 

 

 

 

алгоритмов

с различными показателями

эффективности

Л .

 

 

 

Для чисел,

 

представленных в памяти машины в

обратных

i

или в

дополнительных кодах, Для получения

З ч

применяем так­

же систему итераций (4 .1 9 ). Однако при округлении

З ч

. по л у ­

ченного в дополнительных кодах, в системе

(4.20)

будет отсутст-

 

 

 

 

 

- 105

-

 

 

воватьоперация

Sfl<

SCVY)| ,т.к.младшие оловав ячейках

памятихранятояоположительнымзнаком.

 

 

Для* обратного

кода представления чисел

округление

Осуществляется по последовательности

 

 

A s

+ С + Р |

-

P |- i + W Y )'j-,

 

<4-21)

где

4,

+

к

2,

, < .

. .0; , , е

Цтус

д 0> ; и

к

Рк*4 “

2 ”^**^

|

С-*11,(4, • ••, Н,«сим ¥ ¥ < 0 ;

( « ■ * % . « - О . )

 

-ре - О ,

 

 

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

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

Ниже рассмотрим вопрос изменения структуры алгоритма. | Каждая итерационная последовательность характеризуется | набором вполне определенных операций. Для их реализации на ма-; шине выбираются различные коды, которые могут изменяться по | своему содержанию или дополняться новыми, в зависимости от то­

го , какие показатели эффективности желательно получить. Рассмотрим построение ряда алгоритмов с различной эффек­

тивностью на примере проотнх операций в прямом ж дополнительных

кодах представления чисел в ЗУ.

I

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

вводя специальные

команда оложения шедших и старших слов, можно соответственно реализовать выражения (4.4) ж (4 .5 ). При этом для сложения дву*

слов понадобится 3 команды!

- 106 - ......... -

 

 

■ Yi-* X

 

 

 

 

 

 

 

 

<zy® V;

 

 

 

 

 

 

 

 

< 1 > - ( ¥ + Т ) «

,

 

 

 

i

где

I - сумматор, X E ') -

содержимое сумматора, —»

-

епе4

штор первоыдки из ЗУ в сумматор или из

сушатора в

ЗУ,

©

- j

сод специального сложения.

 

 

 

 

 

 

 

 

Выражение (4.6) мохво реализовать программой

 

 

 

|

 

.

n 3 W * Y ) i

 

 

 

 

"

j

 

 

<Х>©0

 

 

 

^де

п .

< Z > - ( V » Y ) i ,

 

 

 

{

115

- код операций присвоения знака числа v* + ж ) <

 

содержимому сумматора.

 

 

а я к

 

 

 

j

!

Однако для улучшения показателей

алгоритма

:

выражение (4.6) можно реализовать о помощью одной опециаль-

i

, . , Ю1ВД1

c „ 5 W t y ) i |

 

 

 

 

 

 

где

С П З -

код операции сложения числа оо значением переноса

И присвоения знака результату числа,

находящегося до этого н а i

сумматоре.

 

 

 

 

 

 

 

 

 

Выражение (4.8) также может быть реализовано программой

 

 

0 * + Y ) t - * Z

 

 

 

 

 

Т

 

 

ГВ < Ч ?+Т ) ,

 

 

 

 

 

!

 

 

< Z > - K ¥ + Y ) i

 

 

 

 

!

или одной командой

 

 

 

 

 

 

J

 

 

Г В

е п О

^

,

 

 

 

[

где ПЗСП _ код операции присвоения знака олову памяти числа,!

находящегося

до зтого на оумматоре.

1

1

Для дополнительных кодов представления чисел в

памяти |

машины можно

составить

алгоритм:

!

для

I - к ’

 

-* £

j

 

 

 

< 2! > ©

!

j

 

 

C d S i t

 

| <РгУ| ( I f +'4f) l ;

 

 

- 107

 

для

t « M , k - 2 , . . . , 3 , 2

 

i

 

< r > ® V i

 

 

 

 

!

 

Сй8 П - *

 

для

U ]

l < P a > | ^ ( ^ + Y ) i ;

,

i

 

 

 

'

 

< I > + ^

 

 

 

< I > - * 0 * + 4 f ) lf

 

где

©

~ код операции оложения без переполнения;

j

-

код операции перенооаС а цифровыхв и разрядов в регистр

Рз , а значения р*н в младший разряд /L {

!ЦРа>| - код операции запиои содержимого Рг по модулю в

 

память машины,

 

 

 

 

 

 

I

Применяя специальный код записи < £ >

 

по модулю в па­

мять машины о последующим обнулением цифровых разрядов

X

 

и перенос значения

Р н в младший разряд

£

(код|<£>{

),

получим алгоритм для t = к

 

 

 

 

 

 

 

 

*Ри -* £

'

 

 

 

 

!

 

 

 

 

 

(4,22)

 

для

3,2.1*

1

 

 

 

 

 

 

 

< I > @

 

 

 

 

 

 

для’

(,«= \

 

 

 

 

 

 

 

 

 

< 2 > - » W + y ) < .

 

 

 

 

 

 

Если ввести

специальные коды оложения младших и отар- 1

тих частей о одновременным сложением значения

Р(,ч

,

кото-f

рпй будем хранить в специальном разряде [48,

67] ,

то для

j

L=k, ы , . . . , 5 , 2

имеем

 

 

 

 

 

 

-» 108 -

<£>®ьчг

(4.23)

для с и

ч»*—» * ;

 

 

 

 

< £ > © i 4 /,

 

 

 

 

< Т > ~ * Q i+ Y h .

 

 

|ЭДеоь

© г -

код операции сложения младших частей о

р н

; |

:

© Г -

код операции сложения старших частей о

ра.

 

>

При составлении набора алгоритмов вычитания в повышен­

ной точностью можно ввести специальные команды вычитания

["67]

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

тивным кодом, улучшающим параметры d mi. , есть код, реализу­ ющий в оистеые (4.19) операции умножения и сложения (умножение

снакоплением).

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

Изменение структуры в зависимости от требуемой степени точнос­ ти значительно влияет на показатели объема программ и быстро­ действия алгоритма,

 

Ооновной показатель

(

i

) алгоритма УВС,

работающей

И реальном масштабе времени, можно определить в зависимости

от степени точности (

к )

следующим образом.

:

 

Для алгоритмов

сложения зависимость i от к

представля­

ется как

 

 

 

 

 

|

 

-

k

i t e

,

 

;

,

 

 

 

 

(4.24)

уде

х-о - время выполнения проотой операции о одинарной

)

точностью;

 

 

 

 

:

^ ~ число простых операций в одной итерации сложения.

 

- 109 -

 

 

Алгоритм вычитания имеет

 

 

I

й « . - k U o

,

:

где

& - число простых операций в

одной итерации вычитания*

!

I

Для прямого и обратного кодов представления чисел в па­

мяти машины величины t

и

S

содержат операции, учитывающие

 

 

циклический перенос и присвоение знаков младшим частям.

 

 

 

 

Длягалгоритмов умножения система итераций (4,19)

повто-

ряетоя

k

 

раз, тогда

-

 

ka m - f e o

+

C

M

'

а

j

 

 

 

Ьунн

 

)

- Ь о

где

 

время выполнения одной итерации системы

(4 .1 9 );

 

 

 

GL -

число простых операций в одной итерации округле­

 

 

 

 

ния (4,20) или (4,21).

 

 

 

 

 

 

 

Если

округление исключить, то

 

 

 

 

 

 

 

 

 

 

£ у МН

«

k w ■to •

 

 

(4.27)

 

 

Если оиотема

(4,19) повторяется -§•(к+з> -1

раз?

то

 

 

 

 

 

 

 

 

 

 

Й и н

 

 

 

.

 

(4.28)

 

 

 

Таким образом, возможность изменения структуры алторатг

ма и его сложности позволяет разработать наборы алгоритмов,

 

 

конкретное использование которых будет зависеть от класса ре­

 

шаемых задач и определится процессом оптимизации.

 

 

 

 

 

В общем случае следует различать рассмотренный метод

 

 

изменения структур] алгоритма от выбранного численного метода

 

ращения задачи,

так как для каждогв численного метода можно

 

 

получить множество отрунтур

с различию»! погрешностями. В то

 

 

же время каждая структура в

зависимости от кодов операций по-

 

зволяетпоотроить прогршшы о разлившей оложноотыз.

 

 

 

 

 

Весь процесс разработки набора алгоритмов представляется

в виде 3-х

уровней:

 

 

 

 

 

 

 

 

 

Соседние файлы в папке книги из ГПНТБ