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

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

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

90

ГЛ.

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-я позиция

принадлежит

объекту

из подмассива А, а

все остальные — объектам

из под­

массива

В),

а из числа

начальных (I1)

позиций лю­

бые

(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*

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