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

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

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

100

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

ется на последовательности позиций со значениями ин­ дексов от ти+1 до т-\-п. Адрес і-й позиции этого под­ массива определяется следующей функцией:

a[/] = T [ m +

/ ] ,

/ Π{ 1 , 2

п}.

(3.22)

Второй из подмассивов располагается на последова­

тельности позиций с адресами

ß [ / ] , / . G (1,

2 ,

m } .

э,

\

 

 

N

 

 

0

 

 

0 0J 0,2 0,3 04 0,5 0,0 0;і 0,8 0,9 1,0

Рис. 3.4. Зависимость эффективности оператора слияния от соот­ ношения между объемами сливаемых подмассивов.

Нетрудно убедиться, что в этом случае позиция с адресом y[g] для размещения объекта в результирую­ щем упорядоченном массиве всегда оказывается свобод­ ной к моменту засылки в-нее очередного объекта. Кро­ ме того, сам оператор слияния в этом случае несколько упрощается, так как при исчерпании подмассива, рас­ полагавшегося на позициях с адресами ß[/J, никаких дополнительных пересылок делать не требуется (остав­ шиеся объекты уже располагаются на своих истинных местах в объединенном массиве) (рис. 3.5).

Сложность

данного оператора

несколько

отличается

от сложности

оператора слияния

в общем

случае, так

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

§ 3.2. ОПЕРАТОР СЛИЯНИЯ ДВУХ ПОДМАССИВОВ

101

на вычисление адресов, на пересылки и на индексные операции.

Рис. 3.5. Блок-схема оператора слияния, использующего сокращен­ ный резерв памяти.

Резерв свободных позиций (резерв памяти), необхо­ димый для реализации данной процедуры, равен объе­ му того из исходных упорядоченных подмассивов, кото­ рый располагается на последовательности позиций ß [ / ] .

102

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

В случае слияния подмассивов различного объема це­ лесообразно иметь в этом подмассиве меньшее число объектов. Кстати, в этом случае будет максимальным и выигрыш из-за того, что отсутствуют пересылки объ­ ектов после исчерпания меньшего из подмассивов.

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

§ 3.3. Оператор слияния нескольких упорядоченных

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

Оператор этого типа широко используется при упо­ рядочении информации, располагаемой во внешних за­ поминающих устройствах ЦВМ, но может также пред­ ставлять интерес и в ряде случаев внутреннего упорядо­ чения. Интерес этот связан со следующими соображе­ ниями.

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

Действительно, можно показать, что при выделении очередного объекта -из подмассивов А и В, в которых осталось по k и I объектов соответственно, вероятность выполнения заданного отношения порядка между срав­ ниваемыми элементами этих подмассивов определяется выражениями

.А—1

k

С,

•k+1-l

(3.23а)

РА =

+ I

k

§ 3.3. ОПЕРАТОР СЛИЯНИЯ НЕСКОЛЬКИХ ПОДМАССИВОВ ЮЗ

и

 

et:1, ,

 

/

 

рв

= J±t±

=

,

(3.236)

где рА — вероятность

того, что

в результирующей

после­

довательности окажется

очередной

элемент из А; рв

вероятность того, что в

результирующей последователь­

ности окажется очередной элемент из В.

Для случая равномерного распределения объектов по исходным подмассивам в процессе выполнения процеду­ ры число объектов в подмассивах А и В, остающихся нерассмотренными, должно быть примерно одинаковым, так что вероятность выполнения заданного отношения порядка должна быть близка к 1/2. Информационная ценность сравнения в этом случае максимальна.

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

Рассмотрим один из возможных операторов такого типа, являющийся некоторым обобщением оператора слияния. Отметим прежде всего тот факт, что для на­ хождения объекта (элемента) из заданной группы в g объектов с минимальным (или максимальным) значе­ нием признака требуется по крайней мере g—1 сравне­ ние признаков. Объекты предполагаются при этом не­ упорядоченными. Примеры построения алгоритмов срав­ нения для поиска минимального элемента из неупоря­ доченной группы элементов приведены на рис. 3.6. Используя алгоритм сравнения такого типа, можно орга­ низовать слияние нескольких упорядоченных подмасси­ вов в один массив. Пример блок-схемы такого операто­ ра для слияния четырех упорядоченных подмассивов приведен на рис. 3.7. Предполагается, что исходные упо­ рядоченные подмассивы располагаются на позициях с

адресами

« M ' i K ' i e {1,2, ....raj), а , [ / 2 ] ( i 2 е { 1, 2

я,}),

«J'ai (*a S

{1, 2

/ів}) и o 4 4 ](t 4 Œ{l ,2

л 4 ) ) , а

резуль-

И 1 + П 2 + П 3 + n 4 } ) -

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

тирующий упорядоченный массив формируется на пози­ циях с адресами у [g] ( g e | l , 2, 3,...,

минимален

минимален

минимален

минимален

минимален

 

 

Первый

вариант

 

 

минимален

минимален

минимален минимален

 

Второй

Вариант

 

Рис. 3.6. Блок-схемы

вариантов

алгоритма

поиска минимального

элемента

из неупорядоченной

группы.

Оператор начинается с присвоения начальных зна­ чений индексам позиций і и і2, г'з, h и g. Затем проводит­ ся три сравнения очередных объектов каждого из исход­ ных упорядоченных подмассивов по пирамидальной схе-

§ 3.3. ОПЕРАТОР СЛИЯНИЯ НЕСКОЛЬСКИХ ПОДМАССИВОВ

105

ме (первый вариант) с четырьмя выходами (1, 2, 3, 4), соответствующими четырем возможным положениям

іНачала іу-іг-Ѵ-Ѵ-й-І

Ж'=М'/]

/№=^ Ы

/№=«?['>]

\г\9\:-«*Ш

M 4

да - Конец

Рис. 3.7. Блок-схема оператора слияния четырех подмассивов.

объекта с минимальным значением признака в исход­ ных подмассивах.

Найденный объект с минимальным значением призна­ ка помещается затем на очередную свободную позицию формируемого упорядоченного массива и производится

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

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

значительно увеличивает

результирующую

 

сложность

слияния в смысле увеличения времени его

выполнения,

но существенно облегчает построение алгоритма

сравне­

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

бы

несколь­

ко частей этого алгоритма для сравнения

различного

числа

(от 2 до

k1, где k — число

сливаемых

подмасси­

вов)

объектов.

С другой

стороны,

ожидаемый

выигрыш

от уменьшения числа сравнений, по-видимому, незначи­ телен (если судить по аналогии со случаем слияния двух упорядоченных подмассивов), особенно для слия­ ния подмассивов равного объема.

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

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

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

Пусть производится слияние k подмассивов объемом в nlk объектов каждый и в результате формируется упо­ рядоченный массив объемом в п элементов.

Результативность оператора оценим следующим об­ разом. Можно считать, что в некотором исходном слу­ чайном массиве из п объектов (с начальной степенью неупорядоченности, примерно равной я2 /4 при больших п) выделено k подмассивов и проведено их полное внут-

§ 3.3. ОПЕРАТОР СЛИЯНИЯ НЕСКОЛЬКИХ ПОДМАССИВОВ

Ю7

реннее

упорядочение. Степень неупорядоченности

каж­

дого из

них уменьшилась с n2l4k2 до

нуля,

а степень

взаимной неупорядоченности измениться

не

могла,

так

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

I = HL-k.îL^!L.^zlt

 

(3.24)

4

4/г*

4

k

Эта величина определяет и результативность слияния k подмассивов, так как степень неупорядоченности объеди­

ненного массива равна

нулю.

 

 

 

 

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

затрат времени при его выполнении. Эти затраты

скла­

дываются из следующих основных элементов:

 

 

времени вычисления адреса позиции объекта по ин­

дексу позиции Лі,

ТХі,

Tak

 

и 7\ соответственно);

времени

пересылки

объекта по

известным

адресам

позиций (Г п ) ;

 

 

 

 

 

 

 

времени

выделения

значения

признака объекта по

известному

адресу позиции

(Г*);

 

 

$%)',

времени

сравнения

признаков

с

переходом

времени выполнения отдельных операций с индекса­

ми (і: = і + 1

и др.)

(Ги).

 

 

 

 

 

При выполнении оператора в целом необходимы сле­ дующие общие затраты времени:

вычислить адреса всех позиций

произвести п пересылок (пТп);

произвести k1 сравнение для каждого пересылае­ мого элемента; если выделение признака каждого объ­ екта производится не при сравнении, а заранее, то об­

щая работа по сравнению имеет объем

(kl)nTs%-\-nTn;

произвести три индексные операции

при

каждой

пересылке (g: = g + l ; k: = ii + 1 ( £ = 1, 2,

3, 4);

i = nlk),

108

 

 

ГЛ. 3. МЕТОДЫ

слияния

 

 

 

(ЗпТи).

Общая

сложность

оператора

слияния

 

Т = JL

. V Т «г

+ пТл

+ пТа

+ пТ%

+ ЗпТи

+ n(k-l)

Тп.

k

~ і

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(3.25)

В предположении, что все Т^—Т^

= Т д , имеем

 

T=n[(2TA+TB

 

 

+ 3TK

+ T,)

+ (k-

1) Т„].

(3.26)

Обозначим 7 , Э = 2 Г А + 7 ,

П + 3 7 ,

И +

Г* время

обработки

одного

элемента;

Ts

=

TS U —время

одного

сравнения.

При этом

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T = n(T9+(k-l)Ts).

 

 

 

 

(3.27)

Эффективность

оператора

 

определяется

выражением

 

Э =

t l

=

 

[

n

( f e - 1 }

-

 

 

(3.28V

Обозначив Г0 Э

-j-Ts

и

 

t =

TJT0,

 

найдем

 

 

3 =

. •

 

 

 

 

 

,

 

(3.29)

так как

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ts=xT0,

 

a Г э

= ( 1 — т)Г 0 .

 

 

 

Подставив вместо k значение 2, получим эффектив­ ность оператора при слиянии двух упорядоченных подмаосивов

 

Э0

= — — .

(3.30)

 

0

8 Г 0

Ѵ

Относительное значение эффективности для различ­

ных k можно записать в виде

 

3

 

2 (fe 1)

5 0

Ä [ ( f t - 2 ) x + l ] *

^ " '

§ 3.4. УПОРЯДОЧЕНИЕ МАССИВА

109

Характеристики изменения относительной эффектив­ ности оператора слияния от k приведены на рис. 3.8.

01—І I I 1

I

I

I

Ж

2 3 4

5 6 7 8 9 10 И 12 13 14 к

Рис. 3.8. Характеристика изменения относительной эффективности оператора слияния в зависимости от числа объединяемых под­ массивов /г.

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

§ 3.4. Упорядочение случайного массива

при использовании процедуры слияния

Последовательное использование процедуры слияния отдельных упорядоченных подмассивов для полного упо­ рядочения случайного массива приводит к построению

процедуры, состоящей

из ряда отдельных этапов, при­

чем для первого этапа

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

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

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

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