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

книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах

.pdf
Скачиваний:
16
Добавлен:
25.10.2023
Размер:
13 Mб
Скачать

130

 

ГЛ.

3. МЕТОДЫ

слияния

 

 

адреса

обозначим

соответственно

через

Hl

и Н2, а раз­

меры— через PI и Р2. Оператор

слияния,

обозначаемый

Сл(Н\,

Н2, PI, Р2), должен разместить начало объеди­

ненного

массива

на

участке

памяти

(Hl,

Я 1 + Р 1 —1),

а конец — на участке

(Н2, Н2-\-Р2—1).

 

 

Существование

такого алгоритма

можно доказать

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

подмассивов

находится

в

пределах

между а + 1 и 2а.

Рассмотрим

сливаемые

подмассивы

1 и

2,

изображен­

ные на рис.

3.19. Размер

меньшего

из

них

(допустим,

Рис. 3.19. Пример соотношения между размерами подмассивов при слиянии без резервной памяти.

что это массив 1) лежит в пределах

между а + 1

и 2а.

Разобьем его на два подмассива / '

и 1", размер

каж­

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

разобьем на

два

подмассива

2' и

2" таким

образом,

чтобы размер подмассива

2"

был

не

больше

размера

подмассива

1",

а размер

подмассива

2', следователь­

но, не меньше размера подмассива

V.

Выполним после­

довательно друг за другом операторы слияния подмас­ сивов / ' и 2', 1" и 2", I " и 2'. Согласно индуктивному предположению выполнение всех трех операторов без затрат резервных объемов памяти возможно. В то же

время нетрудно видеть, что

после

слияния

подмассивов

V и 2', содержащих соответственно меньшие элементы

подмассивов 1 и 2, в подмассив

попадут

меньшие

элементы

из объединения

подмассивов

/

и 2. После

слияния подмассивов

/ " и 2" в подмассив

2"

попадут

большие

элементы из

объединения

подмассивов

1 и 2.

Совокупность подмассивов I " и 2'

оказывается

взаимно

упорядоченной с подмассивами V и 2". Поэтому доста­

точно выполнить слияние подмассивов / "

и 2', чтобы со-

§ 3.5. ОГРАНИЧЕНИЯ РЕЗЕРВА ПАМЯТИ

131

вокупность подмассивов 1 и 2 в целом оказалась упо­ рядоченной.

Существование алгоритма слияния, не требующего резервных объемов памяти, очевидно для случая, когда размер меньшего из двух сливаемых массивов равен единице. Это есть алгоритм, отличающийся от описанно­ го в п. 3.5.3 алгоритма вставки только тем, что в резуль­ тате слияния формируется не единый подмассив, а упо­ рядоченная совокупность из одного элемента массива и подмассива. Из сказанного выше по индукции следует, что алгоритм слияния, не использующий резервных объемов памяти, существует при произвольных разме­ рах сливаемых массивов. Оператор слияния, не исполь­ зующий резервных объемов памяти, представляет собой рекурсивную процедуру, описание которой непосредст­ венно вытекает из доказательства существования алго­ ритма. Для описания используем алгоритмический язык АЛГОЛ-60, удобный для описания рекурсивных про­ цедур:

procedure Слі (Hl, /72, PI, Р2); integer HI, Н2, PI, Р2; begin integer a; procedure Вставка

comment формальными параметрами процедуры «Вставка» в порядке их перечисления являются: адрес элемента, объединяемого с подмассивом, базовый адрес подмассива, с которым элемент объединяется, размер подмассива;

if

PI =

1 then Вставка (Hl, Я2, P2)else

if

Р2 =

1 then Вставка (/72, Hl,

PI) else

begin a:

=if P K P 2

then Pl-4-2else P24-2;

 

Сл

1

(Hl, H2, а,

Р2—а);

 

 

Сл

1

(Н1+а,

Я2 + Р2—а,

Р\—а, а);

 

Сл

1

(Hl+a,

Н2, PI—а,

Р2—а)

end

end

Заметим, что для практического использования дол­ жен быть рекомендован нерекурсивный вариант про­ цедуры, как не требующий дополнительных резервов памяти из-за рекурсии, что приводит к значительному усложнению процедуры.

При выполнении процедуры упорядочения слиянием на k-м этапе осуществляется слияние подмассивов раз-

5*

132

ГЛ. 3. МЕТОДЫ слияния

 

 

мером в 2k~1

элемента, в результате чего

формируются

упорядоченные

подмассивы размером в

2k

элемента.

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

обозначение 5(2*). Из описания оператора

ясно, что

S(2k) = 3S(2f t ~1 )-

(3.61)

Учитывая, что

 

5 ( 2 ) = 1

(3.62)

(формирование упорядоченной последовательности из двух элементов требует одного сравнения и, если потре­ буется, обмена), получим

S(2k)=3k-1. (3.63)

Количество сравнений, требующихся для выполнения k-ro этапа, т. е. формирования п/2к упорядоченных под­ массивов, равно

і3*-=і -(тГ- (3'64)

Количество сравнений, требующихся для выполнения всей процедуры упорядочения, т. е. всех log2 n ее этапов, равно сумме членов геометрической прогрессии

/ 3 \iog 2 n з

3

' ^ " J L / A N * - 1

п \Т)

Т

2

 

к=1

2 1

2

J3_

 

 

 

 

 

 

 

 

 

 

2

 

 

= 1,5(310^ " — п) = 1,5(«1 0 ^3

п) =

\,5(п1 -5 8 5 п).

(3.65)

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

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

§ 3.6. СПОСОБЫ АППАРАТНОЙ РЕАЛИЗАЦИИ МЕТОДА СЛИЯНИЯ 133

§ 3.6. Способы аппаратной реализации метода слияния

Метод слияния может быть положен в основу аппа­ ратной реализации алгоритма упорядочения с помощью специализированного устройства, входы которого свя­ заны со всеми элементами неупорядоченного массива, а на выходах вырабатывается упорядоченный массив. Ап­ паратная реализация алгоритма упорядочения позволя­ ет резко повысить его быстродействие как за счет иск­ лючения ряда служебных операций (выборка команд, формирование промежуточных адресов, проверка усло­ вия выхода из цикла и др.), так и за счет совмещения во времени большого числа разных сравнений, что дает наибольший эффект. Два варианта структурных схем та­ ких устройств были описаны Бэтчером в [48].

Обоснование функционирования предложенных схем, оценка их быстродействия и объема оборудования могут быть проведены методом математической индукции.

3.6.1. Устройство с раздельным упорядочением эле­ ментов с нечетными и четными номерами (чет — нечет). Примем индуктивное предположение, что устройство, осуществляющее слияние двух подмассивов, размер каждого из которых равен 2k~l элементам, в общий подмассив из 2* элементов, существует. Введем для такого устройства символ Слк и обозначение, изобра­ женное на рис. 3.20.

Покажем, что, используя устройства типа Слк, мож­

но построить устройство слияния

CAk+l.

 

Пусть слиянию подлежат два упорядоченных под­

массива

 

 

А = (alt а,, а 3 , a i k ) ,

(3.66a)

и

 

 

В=фхѵЬг,...,Ь#),

 

(3.666)

все элементы которых различны

по величине.

Наличие

в подмассивах А и В равных элементов не меняет окон­ чательных выводов.

Для объединенного упорядоченного подмассива вве­ дем обозначение

(h, Із>.... WO-

(3 - 6 6 В )

134

ГЛ. 3. МЕТОДЫ слияния

Подадим на вход двух устройств слияния Сл, су­ ществующих согласно индуктивному предположению, в

Рис. 3.20. Устройство слияния двух подмассивов.

одном случае упорядоченную последовательность эле­ ментов подмассива А с нечетными номерами

С' = и а3, а5,.... аф_^)

(3.67а)

и упорядоченную последовательность элементов подмас­ сива В с нечетными номерами

[ С = ( М з А , ...,&,»_,),

(3-6 7б)

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

§ 3.6. СПОСОБЫ АППАРЛТІЮП РЕАЛИЗАЦИИ МЕТОДА СЛИЯНИЯ 135

четными номерами

 

D' ~ (°2> °4>aG' •••> a%k)

(3.67в)

и

 

D"=

фѵ

b4, b 6

, b 2 k

).

(3.67r)

Два устройства

слияния

типа

Слк

сформируют

две

упорядоченные

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

 

 

 

С = (си с2 , с 3 , c 2

k )

(3.68а)

И

 

 

 

 

 

 

 

 

D = {dltdvd3,...,d#).

 

(3.686)

Рассмотрим

элемент

с і + і

из

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

С.

Последовательность С содержит і элементов, меньших,

чем cf .f l ,

в том числе и

элементов

из С и

ѵ

элемен­

тов из С". Очевидно, что

 

 

 

 

 

и +

V = і.

 

 

(3.69)

Допустим

для определенности, что

элемент

с[+1

ока­

зался принадлежавшим

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

С", т. е.

(и+1) - м нечетным (так для краткости мы будем назы­ вать элементы с нечетными номерами) элементом под­

массива

А или (2«+1) - м

его

порядковым

элементом.

Общее

количество элементов

подмассива

Л, меньших,

чем сі + ѵ

равно 2и.

 

 

 

В последовательности

С",

к которой

элемент сі+1

не принадлежит, он занимает по величине промежуточ­

ное положение

между

и-м и

(и + 1)-м

ее

элементами,

т. е.

 

 

 

 

 

 

 

 

&20-1 < С/+ 1 <

&2Н-1,

 

(3.70)

что означает либо

 

 

 

 

 

 

Ô20-1

< сг+і < Ью,

 

(3.71а)

либо

 

 

 

 

 

 

 

 

Ô 2 o < C £ + i < ô 2 o + i .

 

(3.716)

Общее

количество элементов

подмассива

В, меньших,

чем с і + 1

, равно

—1 в

случае

(3.71а)

или

в случае

(3.71іб).

 

 

 

 

 

 

136

 

ГЛ. 3.

МЕТОДЫ

слияния

 

 

 

 

 

В подмаосивах А я В вместе или, что то же самое, в

подмассиве

С содержится либо 2и + (2ѵ—l)=2t—],

 

либо

2и -\-2ѵ =

2/

элементов, меньших,

чем

с1+1

(см. (3.69)).

Следовательно, порядковый

номер

элемента

сі+1

в

подмассиве

L может оказаться равным только

2/

или

2 / + 1 . Этот

вывод, очевидно, не изменился бы, если бы

элемент сі+1

оказался

принадлежащим

последователь­

ности С".

 

 

 

 

 

 

 

 

 

 

Рассмотрим теперь элемент dl

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

D. Последовательность D содержит і—1 элемент, мень­

ший, чем dL,

в том числе р элементов

из D'

и q

элемен­

тов D". Очевидно, что

 

 

 

 

 

 

 

 

 

 

 

рА-ц==і-\.

 

 

 

 

(3.72)

Допустим, что элемент di

принадлежит

последова­

тельности

D'

(что, как и ранее, несущественно для окон­

чательных

выводов), т. е. является ее

( р + 1 ) - м

четным

элементом или (2/7+2)-м порядковым элементом под­

массива А. Всего в подмассиве А содержится 2/7+1

эле­

ментов, по величине

меньших, чем dL.

 

 

 

 

В последовательности

D" элемент d t является

про­

межуточным

по

величине

между

q-м

и (д+1) - м эле­

ментами, т. е. biq

< dt

< b2q+i,

что означает либо

 

 

 

 

 

 

b2q <dL<

b2q+u

 

 

(3.73а)

либо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b2q+i

< dt

< b2q+2.

 

 

(3.736)

Общее количество элементов подмассива В, меньших,

чем di,

равно

2q

в

случае

(3.73а)

или

2(7+1 в

случае

(3.736).

Объединенный

подмассив

Е

содержит

либо

(2/7+1)+2с/ = 2t— 1, либо

(2/7+1) +(2<7+1) = 2 і

элемен­

тов, меньших

dt

(см. (3.72)).

 

 

 

 

dt

 

Следовательно, порядковый

номер

элемента

в

объединенном подмассиве L может оказаться

равным

только

или

2с'+1. Из

вышеизложенного следует,

что

 

 

 

hi

=

мин (а+и

dt)

 

 

(3.74а)

 

 

hi+i

м а к с ( с г + і , ^ ) ,

 

 

(3.746)

§ 3.6. СПОСОБЫ АППАРАТНОЙ РЕАЛИЗАЦИИ МЕТОДА СЛИЯНИЯ

137

т. е. элементы hi

и

Іц+і

могут быть

определены

в ре­

зультате дополнительного

сравнения

элементов

с;+іий(г

друг с другом.

 

 

 

 

 

 

 

 

 

 

Наименьший

и наибольший элементы

объединенного

подмассива

 

 

 

 

 

 

 

 

 

 

 

 

l t

= C l ,

 

 

 

 

(3.75а)

 

 

l2k

=

 

rfjjft-i

 

 

(3.756)

могут быть определены без дополнительных

сравнений.

Схема устройства

Слк+і,

вытекающая из

вышеизло­

женного, изображена

па рис. 3.20.

 

 

 

 

 

 

Устройство Сл/с+\ , кроме двух устройств

Слк,

со­

держит еще 2*—1 устройство, осуществляющее

сравне­

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

инверсии.

Введем для таких устройств

название

компаратора

и

обозначение, использованное в рис. 3.20.

 

 

 

 

 

При оценке

сложности

и

быстродействия

устройств

слияния за единицу задержки примем задержку, вно­

симую одним компаратором, а за единицу

сложности —

сложность одного

компаратора.

 

 

Для задержки

tk+\,

вносимой устройством

Сль+і,

и для его сложности

Qk+i

справедливы

рекуррентные

соотношения

 

 

 

 

 

 

4 - и = ^ + 1 ,

 

(3.76)

 

Q h + l

= 2Qk

+ 2 * - \ ,

 

(3.77)

вытекающие из рассмотрения рис. 3.20.

Компаратор фактически осуществляет слияние двух одноэлементных подмассивов в упорядоченный подмас-

сив из двух элементов, т. е. представляет собой

устрой­

ство Слі со сложностью и задержкой, равными

приня­

тым ранее единицам:

 

^ = 1 ,

(3.78)

Q 1 = l .

(3.79)

Из существования устройства Сл\ и доказанной выше индуктивной зависимости вытекает существование и структура устройств Слк для любого k, построенных из

138

ГЛ. 3. МЕТОДЫ слияния

компараторов как своих основных элементов. Структур­ ная схема такого устройства изображена на рис. '6.21.

Для упорядочения массива из п элементов нужно выполнить log2« этапов. На k-м этапе формируются л/2* подмассивов, каждый из которых состоит из 2к элементов. Для этого должно быть затрачено

=

(3 -80)

единиц оборудования, что для k=l составляет

 

# a =

/i/2.

(3.81)

Для (&+1)-го

этапа объем

оборудования

равен

п ~.

п

 

 

Ян-і = -фл

= ф і (2 Q* + 2* - 1) =

 

(см. (3.80) и (3.77)). Из (3.82) и (3.81) следует, что

Из (3.76) и (3.78)

следует также, что

 

 

 

 

h =

А.

 

 

(3.84)

Быстродействие

и

сложность

всего

устройства

Сл І о г з

определяются как

 

 

 

 

 

/ = =

2

ß = ^ - l o g 2 « ( l o g 2

M - 1),

(3.85)

log 2 «

log2rt

log2

л

1

 

fc=l

Z

ft=l

*=1

^

 

=[(log2 n)2 - log2 л + 4] - 1. (3.86)

3.6.2.Использование специализированного устройства

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

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