Файл: Основы теории алгоритмов учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.10.2024

Просмотров: 97

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

- 114 -

разрядов в память машины, а содержимое

- знаковых равря-j

дев пврешюыв&в* в младше разряды сумматора. Операционная

!

часть прадотавхена на рио.4.3, а микропрограмма команды <Х ^

I

- на рис^ 4 .4 .

г

 

Алгоритм сложения Щ чисел о

к —значиой точностью

 

будет» для l« k

 

!

<£ > © ^ к (J - 2,3,..,»»!)

*< 1 > Я г = Н £ « ^ ) к ,

длл U k - f , * 4 5,2.

 

 

 

F ‘ 4

'

 

 

<иЕ .>© Ф |С

( 1 , 2 , ! . . ,

m )

 

 

 

 

 

;

 

 

( . . и )

для i » 1

 

 

%

 

 

 

.

< I > ®

 

 

 

< I > +

Y i *

 

 

 

 

 

 

 

r<

4

 

 

 

Время сложения

W

чиоел о

к -аначной точностью оа-

раделится ив выражения

 

 

 

 

 

 

I *

 

( m + i ) k ' t o .

 

 

 

"Ьшн ~

 

 

(4.35)

Абсолютный выигрыш во времени

 

 

 

 

 

 

 

д £ т

 

 

= ( m- f ) З

Н

о

* 2 k

Cm-2) t o .

 

 

 

i

Относительный выигрыш

 

 

 

 

 

 

 

 

-

 

2 k ( m - 2 ) t o _

 

 

 

i *

 

 

3K(m-<)to “

I V a m / -

График зависимости

o tm

 

от m

предотавлен иа рио* 4.5, где

 

 


- П5 -

PrS п т

* 4 *

1 2 * * *

п-

* 4 « М

п

( Ц ~ { )

-----ТУ

 

 

 

 

"ZT

У2

УО

У4

Рио.

4.3

 

Ряс. 4.4

1

- 116

k m j t m - U n i

( l

-

£ - 0,,6)6 ( e-) .

1

Покажем относительныйвыигрышв объеме программы. П ре-'

 

водя вооледевательное сложениечисел, получйы

 

dwi — 3 k ( / И - 0 *

 

команд,1

 

Используя метод накопления суш ,

 

 

 

Относительный выигрыш в объеме памяти соотавия

5 d « « Д * О М - к ( м + о

 

 

Отевда

а к С т - 0

Aiс

 

 

 

 

t i m $ c U

tim

2 К ~

т = l

s 0, 66.

м -*<*

 

З к

т

 

 

 

ж

 

Таким образом, при W —т 00

относительный выигрши в

•бьеме памяти составляет 66$.

 

 

 

Если частичные суши членов ряда могут превышать едини­

цу, то алгоритм (4.34)

даот верный результат при условии, что

общий результат ве переполняет разрядную оетку,

т.е.


- 117 -

(4.36)

Это обеспечивается введением специальной команды олокеаня, по

которой блокируется оигнал

|

о переполнения разрядной

ветки. Например, сложим 4 числа о удвоенной точностью.

ф < * +

0,1101

ип

Ф<4=

OO.IIOI

в 00.1Щ

фд.« + 0,1110

0101

Ф»4*

OO.IIIO

Ф и *

00.0101

ф| ж +

0,0001

оно

% ,»

00.0001

Ф и *

00.0110

%• -

ОДНО 0101

 

I I .0001

ф * - ОО.ЮИ

г - +

0,11100101 (

£ = 0 ).

 

 

Алгоритм

 

0

 

 

 

Ф и -+ Z

 

 

 

 

 

 

 

 

 

 

< £ > ©

Фи.

 

 

 

 

 

< £ > © «Ям

 

 

 

< £ > «= > ( Г Ч ^ а < £ > © ф / < Х > ф Ф м

< £ > © Ф * < £ > + ¥ * 4 < £ > - » ■ (

Проведен олокенио чисел ооглаоно алгоритму; 'fit ~ 0 0 ‘. 4 Ш

ФVax « О О. OtCI

©0 1 . 0 1 0 0

Ф»з * 0 0 . 0 1 1 0

Фо Г Ш 0

юн

ш

Lb

<X>*oo*ooli

<f44»0 0 . n 0 1


-

118 -

 

 

©

O O . I I H

 

 

Mil = oo. m o

o

t

©

о j . h

o o . o o o i

oififO

=1 1 . 0001

oo:-H н

= oo.un.

В приведенном примере при сложении старших частей во

2-й и 3-й частичной сумме налицо переполнение,

однако сигнал

| = 1

блокируется, т .к , сложение осуществляется по специа­

льной команде. Четвертая частичная сумма есть

старшая часть

результата.

Она не имеет переполнения и по команде обычного

сложения машиной будет отработан сигнал

|

= О.

Если в (4.30) условие (4.36) не всегда выполняется, то для олучая

сигнал

jj

о переполи един разрядной сетки

аудет равен нулю.

 

Отсвда

следует, что для правильного контроля переполне­

ния разрядной

сетки,

если может быть (4 .37),

необходимо накап­

ливать сумму (

W -

I)

чисел. При атом Р<

т - 2

, а ^

выбирается из условия

(4 .33).

 

 

 

Данный метод накопления суммы можно применить и для чи-

оел *fj

( j

=

1 , 2 , . . . ,

m ), где необходимо провести

ряд сло­

жений и вычитаний. Введение специальных команд вычитания позволит свести время реализации к (4 .3 5 ).

Для прямых и обратных кодов представления чисел алгоритм накопления суммы будет сложнее, т .к . потребует учета сушарного циклического переноса и операции присвоения знака младшим чаотям.


- 119 -

4 . 4 ,

Алгоритмы вы числения линейных Функций

На практике часто приходится решать задачи, в состав ко­

торых входит линейная функция типа

Л * Q &+ 6

. Такими

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

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

р

,

или различные многочле­

ны. Как правило,

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

к схеме Горнера, где линейная функция

Л

есть отдельный

участок, к которому обращается

Р

 

раз.

 

Повышенная точность вычисления линейной функции может быть реализована алгоритмами умножения в отдельности. При этом время реализации линейной функции из (4.24) и (4.27) бу­ дет

га-£КуцН+-Ьсл ■■ k m ^ o t k t i o * k ( k m + E ) t o ^

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

ветствующих олов коэффициента

 

6

й

,

 

 

Перемножение длинных чисел

и ofr даст

к

чао-

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

 

 

 

 

 

 

( с и г - ‘" Щ 2 ' ,н) - ( < » * W o г - <“ * -0 "+

(4.39)

 

 

 

 

 

 

 

 

 

+ ( а з £ ) ( ^ ) Г

^ > и |

 

 

 

j* 1,2,...,к ) ,

 

при вложении которых получим произведение

 

 

 

 

м

 

 

 

 

 

 

 

 

П - 1 П

. 2

-

' "

 

 

 

Для 'Р *

1 , 2 , . . . , к

аз

(4.39)

можно найти

241-i

 

олов частичных произведений. Отбрасывав олова, меньше, чем

 

2 Ч J

,

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

ведений я олова коэффициента

6

 

Но методу накопления оуммы:

для

шеей

 

 

 

 

 

 

+0-10... 0 0 =* Р(к+0+П(к+0 •4.40)