
книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах
.pdf130 |
|
ГЛ. |
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 |
, равно |
2ѵ—1 в |
случае |
(3.71а) |
или |
2ѵ в случае |
(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і или |
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.Использование специализированного устройства
впроцедурах упорядочения. Рассмотрим случай, когда процессор вычислительной машины снабжен устройст вом, обеспечивающим упорядочение ограниченного под массива размером в 2а элементов. Предположим также,