
книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах
.pdf90 |
ГЛ. |
3. МЕТОДЫ СЛИЯНИЙ |
|
|
случае оператор |
формирования |
очередного |
статистиче |
|
ски эквивалентного |
подмассива |
из двух |
статистически |
эквивалентных подмассивов, сформированных на преды дущем этапе, преобразуется в оператор объединения, или, иными словами, слияния двух упорядоченных под массивов в один. Естественно, что последовательное вы полнение всех log2 п этапов обеспечивает упорядочение массива в целом. Таким образом, в модернизированной процедуре процесс упорядочения сводится к последова тельному увеличению объема внутренне упорядоченных подмассивов, начиная с подмассивов, состоящих из от дельных элементов, и заканчивая единым упорядочен ным массивом. Согласно определению п. 2.2.3 описанная процедура относится к процедурам внутреннего упоря дочения. Для расширения «основы» процедуры можно было бы использовать упоминавшееся выше свойство серии сравнений статистически эквивалентных элемен тов: первый или последний элемент объединенного упо рядоченного подмассива может быть выявлен в резуль тате выполнения единственного сравнения. Если бы при этом структура оставшейся неупорядоченной части под массива сохранилась, т. е. она по-прежнему представля ла бы собой совокупность двух упорядоченных подмас сивов, то упомянутое свойство можно было бы исполь зовать и далее: после каждого сравнения определялось бы положение еще одного элемента в объединенном подмассиве. Для объединения двух подмассивов разме
ром соответственно в П\ и |
п 2 элементов потребовалось |
бы ti{ + П2 — 1 сравнение |
(положение последнего эле |
мента в объединенном подмассиве, естественно, опреде ляется автоматически без выполнения специального сравнения). На всех log2/î этапах потребовалось бы не более nlog2ft сравнений, что близко к предельно воз можному минимальному количеству сравнений.
Естественно было бы попытаться наложить на опе ратор слияния двух упорядоченных подмассивов допол нительное ограничение: объемы памяти, используемые оператором слияния дополнительно к объемам, занимае мым исходными объединяемыми подмассивами, должны быть минимальными. Если после обнаружения любой инверсии осуществлять обмен двух сравнивавшихся элементов, то требуется минимальный дополнительный
§ 3.2. ОПЕРАТОР СЛИЯНИЯ ДВУХ ПОДМАССИВОВ |
91 |
объем памяти, и данное ограничение выполняется. Од
нако после первого же обмена |
и |
упорядочения |
одного |
|||||||
из |
элементов объединенного |
подмассиба, |
второй |
из |
||||||
сравнивавшихся |
и обменивавшихся |
элементов |
может |
|||||||
нарушить |
упорядоченность |
подмассива, в |
который |
он |
||||||
попадает |
в результате |
обмена. |
При этом |
нарушается |
||||||
и |
вся структура |
оставшейся |
части |
подмассива: |
он |
уже |
||||
не |
будет |
представлять |
собой совокупность |
двух |
упоря |
доченных подмассивов. В этих условиях упорядочение
одного элемента |
подмассива |
после |
каждого |
сравнения |
не может быть |
обеспечено. |
В п. |
3.5.4 будут |
описаны |
принципы построения оператора слияния, удовлетворяю щего упомянутым выше предельным ограничениям по памяти, и показано, что они приводят к значительному увеличению сложности.
Для того чтобы после пересылок, выполняемых по
результатам |
сравнения |
двух |
элементов, |
сохранить |
|
структуру |
оставшейся части |
подмассива, |
необходимо |
||
выделить |
для |
размещения |
объединенного |
подмассива |
дополнительный участок памяти и заменить операцию обмена более простой операцией пересылки одного из сравнивавшихся элементов (меньшего в паре в случае сравнения двух меньших элементов объединяющихся подмассивов, или большего — в случае сравнения двух больших элементов) на новую позицию из дополни тельного участка памяти.
§ 3.2. Оператор слияния двух упорядоченных подмассивов в один
3.2.1. Описание оператора. Рассмотрим оператор формирования из двух подмассивов, упорядоченных по
заданному |
признаку |
|
я и расположенных |
в |
последова |
||
тельностях |
позиций |
с |
адресами |
а[і] |
(і = |
1, |
2, . . . , п ) и |
ß[/] О = 1> 2, ... , m) , |
одного упорядоченного |
подмасси |
|||||
ва, расположенного |
в новой последовательности позиций |
||||||
с адресами |
y[g] (g = 1, 2,...,п |
+ |
т). Этот |
оператор |
будет использовать описанные ранее операции сравне
ния признаков объектов, |
расположенных в |
позициях |
|||
с адресами ее [г] |
и ß[/], |
а также |
операцию |
пересылки |
|
объекта с позиции |
а[і] |
(или ß[/]) |
на позицию |
y[g]. |
|
Для операции сравнения |
ранее было введено |
обозначе- |
92 |
ГЛ. |
3. МЕТОДЫ слияния |
|
ние 5ц |
{cc[i], ß[/] }. |
В результате сравнения |
определя |
ется, удовлетворяют ли значения признаков |
объектов, |
||
расположенных на позициях с адресами а[і] |
и ß [ / ] , за |
данному отношению порядка. Условимся, что если за
данное |
отношение |
порядка |
выполнено, |
то |
S% |
{ |
а[і], |
||
ß[/] } = |
О, в противном |
случае |
{ a[i], ß[/] ( = |
1. Опе |
|||||
рацию |
пересылки |
объекта с |
позиции |
а[і] |
или |
|
ß[/] |
на |
|
позицию у [g] будем обозначать соответственно |
|
|
|
||||||
|
Tfe]: = <*[*] или |
7 [g]: = ß [ / ] . |
|
|
|
(3.1) |
|||
При этих обозначениях |
блок-схема |
оператора |
слияния |
будет иметь вид, показанный на рис. 3.2. В начале про
изводится |
установка исходных |
значений |
индексов і, / и |
|||
g (блок |
/ ) . Затем начинается основная часть |
оператора, |
||||
состоящая |
в последовательном |
заполнении |
объектами |
|||
позиций |
с |
адресами y[g]. |
Для |
определения |
очередного |
|
объекта, |
пересылаемого |
в объединенный |
(результирую |
|||
щий) упорядоченный массив, проводится |
сравнение при |
знаков двух объектов (блок 2), расположенных в исход ных подмассивах на позициях с адресами а[і] и ß[/] и являющихся кандидатами для пересылки в результи рующий массив. Если значения признаков я рассматри
ваемых |
объектов упорядочены |
в |
заданном |
|
отношении |
||||||
(т. е. объект по |
позиции а[і] |
предшествует |
объекту на |
||||||||
ß [ / ] ) , то производится |
пересылка |
объекта |
с |
позиции |
|||||||
а[і] |
на |
позицию |
у [g] |
(блок |
3), |
если же заданное отно |
|||||
шение |
порядка |
не |
выполнено (т. е. объект |
на |
позиции |
||||||
ß[/] |
предшествует |
объекту |
на |
а [ і ] ) , то |
пересылается |
||||||
объект |
с позиции |
ß[/] |
(блок |
4). |
|
Сравнения |
|
индексов |
позиций пересылаемых объектов с предельными значе ниями (блоки 5 и 6) определяют момент исчерпания одного из исходных подмассивов, а блоки 7, 8 и 9 слу жат для формирования индексов очередных позиций ис ходных подмассивов, а также индекса очередной пози ции формируемого упорядоченного массива. При исчер пании одного из исходных подмассивов производится пересылка всех оставшихся объектов другого подмассива в формируемый массив (блоки 10, 11, 12 и 13, 14, 15 со ответственно) без анализа их признаков.
Рассмотрим основные характеристики оператора слияния.
§ 3.2. ОПЕРАТОР СЛИЯНИЯ ДВУХ ПОДМАССИВОВ |
93 |
3.2.2. Результативность оператора. Пусть в случайном массиве выделены два подмассива А я В. Математиче ское ожидание инверсии любой пары объектов в случай ном массиве равно 0,5. Общее число пар объектов, один
Начал/7
Рис. 3.2. Блок-схема оператора слияния.
из которых принадлежит первому подмассиву (с числом элементов п), а второй — другому подмассиву (с числом элементов т), равно тп. Следовательно, математиче ское ожидание степени взаимной неупорядоченности
94 |
ГЛ. 3. МЕТОДЫ слияния |
двух исходных подмассивов в случайном массиве равно
ІАВ = тп/2. |
(3.2) |
При независимом упорядочении каждого из выделен ных подмассивов степень их взаимной неупорядоченно сти никак не изменяется (так как не может измениться число инвертированных пар объектов, принадлежащих различным подмассивам). В этих условиях степень не упорядоченности двух внутренне упорядоченных подмас сивов до выполнения оператора слияния будет
І = ІА + Ів + UB = I AB = тп/2. |
(3.3) |
Степень неупорядоченности результирующего массива после выполнения оператора слияния равна нулю. Сле довательно, его результативность
А / = /ад = тп/2. |
(3.4) |
3.2.3. Сложность оператора. Определим основные за траты времени при выполнении процедуры. Эти затраты складываются из следующих основных элементов:
времени вычисления адреса позиции объекта по ин
дексу ( Г а , |
Тр и Tf соответственно); |
времени |
пересылки объекта по известным адресам |
позиций (7"п ); времени выделения значения признака объекта по за
данному адресу позиции (7Л); |
(Ts%); |
времени сравнения признаков |
|
времени выполнения отдельных операций с индекса |
|
ми типа і: = і + 1; типа сравнения |
значений индексов |
и др. (7"и ).
Для оператора в целом необходимо выполнить сле
дующий объем |
работ: |
|
|
(пТа |
|
|
|
вычислить |
адреса |
всех |
позиций |
+ m T ß |
+ |
||
+ ( m + n ) 7 \ ) ; |
все необходимые пересылки ( (m -f- п) |
Т„); |
|||||
произвести |
|||||||
произвести |
необходимое |
число |
(S) |
сравнений |
|||
(STn + |
( S + l ) 7 \ ) ; |
|
|
|
|
|
|
произвести три индексные операции при каждой пе |
|||||||
ресылке (3(т-\- |
п)Т„). |
|
|
|
|
||
Число сравнений при выполнении оператора |
является |
||||||
случайной |
величиной, |
так как |
после исчерпания одного |
§ 3.2. ОПЕРАТОР СЛИЯНИЯ ДВУХ ПОДМАССИВОВ
из исходных подмассивов оставшиеся элементы второго пересылаются в результирующий массив без сравнения.
Подсчет времени выполнения одного сравнения про изведен из условия, что при каждом сравнении (за ис ключением первого) нужно выделять лишь одно новое значение признака, так как в сравнении каждый раз участвует лишь один новый элемент. Это существенно при большой трудоемкости выделения значения при знака. Общее время выполнения оператора
Т = пТа |
+ тТ? |
+ (m + п) Тл |
+ (m + п) Т„ + (m + п) 3 Г и + |
||
|
|
+ |
S-rs% |
+ (S+ 1)7". . |
(3.5) |
Это |
время |
является случайной |
величиной, |
так как |
случайно число выполняемых сравнений S. Оценим ма тематическое ожидание ч.исла сравнений при выполне нии процедуры.
Из общего числа m + п объектов в конечном упоря доченном массиве отдельные упорядоченные подмассивы объемом в п и т объектов могут быть сформированы Ст+п различными способами. Все эти способы будем считать равновероятными. Процедура заканчивает срав нения, когда исчерпывается какой-либо из подмассивов. При каждом сравнении определяется очередной элемент конечного массива. Сравнения заканчиваются, когда этот очередной элемент оказывается последним элемен том подмассива А или последним элементом подмассива В. Таким образом, число сравнений определяется чис лом последовательно расположенных элементов в ре зультирующем упорядоченном массиве, начиная с его первого элемента и кончая тем из двух конечных эле ментов исходных подмассивов, который оказался вклю ченным в результирующий массив первым.
Анализ необходимого числа сравнений для случая слияния двух подмассивов, случайных по составу эле ментов, дает следующую оценку среднего числа срав нений:
s - m d i + n ^ + î - |
<3-6> |
Вывод этого выражения приведен ниже.
Подмассив А состоит из п объектов. Последний объ ект этого подмассива может оказаться в упорядоченном
96 |
|
|
гл. |
з. |
М Е Т О Д Ы |
С Л И Я Н И Я |
|
|
|
|
массиве |
D из а + m элементов |
на одном |
из m + 1 по |
|||||||
следних |
мест, номера |
которых |
|
составляют |
множество |
|||||
{ft, п + 1, п + |
2,... ,п |
+ m — 1, /г + m} . |
|
|
|
|||||
Вероятность нахождения последнего объекта подмас |
||||||||||
сива |
А на любой 1-й позиции из указанного |
множества |
||||||||
определяется |
выражением |
|
|
|
|
|
||||
|
|
|
|
P, = C # / Ç ^ , |
|
|
(3.7) |
|||
так |
как |
распределение |
объектов |
всех позиций |
массива |
|||||
D по исходным подмассивам А и В, начиная с 1-й, опре |
||||||||||
деляется |
однозначно |
(1-я позиция |
принадлежит |
объекту |
||||||
из подмассива А, а |
все остальные — объектам |
из под |
||||||||
массива |
В), |
а из числа |
начальных (I—1) |
позиций лю |
||||||
бые |
(ft—1) |
позиции должны принадлежать А. Таким |
||||||||
образом, |
общее число способов распределения объектов |
|||||||||
подмассивов |
А и В по позициям |
массива |
D при усло |
вии, что последний объект подмассива А будет распо ложен на /-м месте массива D, равно ClZ\ . Вероятность события определяется отношением числа способов, бла гоприятных ему, к общему числу способов.
Аналогично номер места в конечном упорядоченном массиве, на котором может находится последний объект
подмассива В, может оказаться любым |
из |
множества |
{m, m + 1 , /я + 2, ... , m + ft—1, т-\-п\ |
с |
вероят |
ностью |
|
|
Pr = C?z\lCnm+n |
|
(3.8) |
для каждого его элемента.
Полную группу попарно несовместимых событий об разуют следующие события (на последней позиции мас
сива D может |
быть либо последний объект |
подмассива |
А, либо последний объект В) : |
|
|
r = m + n, |
Iœ [п,п+ l,ft + 2 , . . . , f t - f m— 1), (3.9) |
|
l = m + n, |
/-<= (m,m+ 1, m + 2 , f t - f |
m— 1). |
|
|
(3.10) |
Математическое ожидание индекса первого из послед них элементов подмассивов А или В в окончательно
§ 3.2. ОПЕРАТОР СЛИЯНИЯ ДВУХ ПОДМАССИВОВ |
97 |
упорядоченном массиве
л+nt—1 n+m—1
r=m |
|
/= п |
|
|
|
1 |
i- |
n+m— 1 |
л+m— 1 |
|
1 |
|
|
fm—1 |
я+m—1 |
|
|
Г " |
I |
-=m |
/ = я |
J |
|
""m+n |
|
||||
7-=m |
|
|
|
||
|
|
n+m—1 |
n+m—1 |
|
|
»/-Я |
l |
|
|
|
|
m+n |
r=m |
/= л |
|
|
|
= m ^ + |
n |
^ = O T |
» + n |
» . |
(3.11) |
W + m |
|
^n+m |
|
|
|
При выводе последнего выражения используется из вестное тождество
І Cl = СА%\ = Ci+l |
(3.12) |
k=a |
|
Рассмотрим характерные частные случаи для мате матического ожидания числа сравнений:
т » 1 |
и |
M(S)^mm+n; |
(3.13) |
т » 1 , |
л = 1, |
M ( S ) « - J ; |
(3.14) |
т > 1 , |
|
[ М ( 5 ) А П 4 - » І І - ^ . |
(3.15) |
При больших объемах исходных подмассивов число сравнений практически равно суммарному числу эле ментов. В частном случае слияния большого подмассива с подмассивом, состоящим из одного элемента, число сравнений почти в два раза меньше.
Определим математическое ожидание числа элемен тов 5, записываемых в результирующий упорядоченный массив без сравнения. Всего в результирующем массиве
п-\-т элементов, из них в среднем m |
\-п |
эле- |
п + |
1 |
m + 1 |
ментов помещено в массив по результатам сравнения.
4 А. А. Папернов, В. Я. Подымет
98 ГЛ. 3. МЕТОДЫ СЛИЯНИЙ
Следовательно, в |
среднем |
|
|
|
||
S = m + n — (m |
п |
+ n |
m |
« + 1 ' /я + 1 |
(3.16) |
|
|
n + l |
m + 1 / |
|
|||
элементов попадет в новый массив без сравнения. |
||||||
Следует |
заметить, |
что |
это число при п > 1 |
и m > 1 |
||
практически |
не зависит от |
абсолютных величин |
тип, |
S
9\- 8 7
в
5
4
3
2
О0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0 п+т
Рис. 3.3. Зависимость среднего числа элементов, попадающих в ре зультирующий массив без сравнения, от соотношения между объема ми сливаемых подмассивов.
а зависит лишь от отношения mfn (рис. 3.3). В частно сти, при т = п и и > 1 S равно всего двум элементам, и реальный выигрыш в трудоемкости процедуры ничтожен. Максимального значения выигрыш достигает в случае максимального различия объемов сливаемых подмасси вов. Для т » 1 и п—1 Sœm/2, т. е. в среднем половина элементов выходного массива поступает в него без срав нения.
Математическое ожидание сложности оператора сли яния равно (из (3.5) с учетом полученной оценки для S)
M(T)=nTa+ |
mTç + (m + n) (7\ + Тп + |
3 Ги ) + 7U |
+ |
|||||
|
+ |
( ^ |
+ |
I |
: г г И ( Г . , |
+ Т . ) . |
(3.17) |
|
|
|
\П + |
|
|
m + 1 |
|
|
|
В частности, |
при |
равной |
сложности |
вычисления |
о ф ] . |
|
|
§ 3.2. ОПЕРАТОР СЛИЯНИЯ ДВУХ ПОДМАССИВОВ |
|
99 |
|||||||
ß[/] |
и |
y[g]> т - е - П Р И Та |
=Гр =Т-! =ТА, |
и |
значитель |
||||||
ном |
объеме сливаемых |
подмассивов |
(«3>1 и т > 1 ) |
по |
|||||||
лучаем следующую |
|
оценку |
сложности |
процедуры |
|||||||
слияния: |
|
|
|
|
|
|
|
|
|
||
M(Т)^ |
(m + п) (2ТА |
+ Тп + ЗТИ + |
Т$ж |
+ Т х |
) = |
|
|
||||
|
|
|
|
|
|
|
= ( т + л)Т 0 , |
(3.18) |
|||
где |
Г0 |
— общие затраты |
времени |
на |
формирование |
оче |
|||||
редного элемента результирующего массива. |
|
|
|||||||||
Эффективность оператора слияния |
равна |
|
|
||||||||
|
|
3 = |
- ^ |
- = |
™ |
. |
|
(3.19) |
|||
|
|
|
М(Т) |
2TB(m |
+ n) |
|
|
ѵ |
|
||
3.2.4. Оптимальное соотношение объемов сливаемых |
|||||||||||
подмассивов. Пусть |
требуется |
образовать |
упорядочен |
ный массив из N элементов.
Определим, каковы должны быть объемы сливаемых
подмассивов m и n = N—m, |
чтобы |
эффективность |
опера |
|||||||
тора достигала |
максимума: |
|
|
|
|
|
|
|
|
|
|
э |
m{N — m) |
= |
n(N |
— |
n) |
|
2 |
Q , |
|
|
|
27VV |
|
|
2TBN |
' |
|
|
|
|
Очевидно, |
эффективность |
будет |
максимальна |
при |
п = |
|||||
= m = jV/2 |
(рис. 3.4): |
|
|
|
|
|
|
|
|
|
|
|
^макс = |
ТГ=Г. |
|
|
• |
(3.21) |
|||
|
|
|
|
о/ 0 |
|
|
|
|
|
|
3.2.5. Возможности сокращения резервных объемов памяти. В ряде случаев требуется максимальная эконо мия объемов памяти запоминающего устройства, заня того при выполнении оператора. В этом случае можно рекомендовать разновидность описанного оператора, ха рактеризующуюся тем, что объекты одного из сливаемых
подмассивов и результирующего массива |
размещаются |
||
на одной |
и той же последовательности позиций |
с адре |
|
сами y[g] |
таким образом, что выходной |
массив |
распо |
лагается на |
последовательности позиций со значениями |
||
индексов от |
1 до m-\-n, а один |
из сливаемых |
подмасси |
вов (примем, что он содержит |
n объектов) |
располага- |
4*