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

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

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

230 ГЛ. 5. УПОРЯДОЧЕНИЕ ДЕЛЕНИЕМ МАССИВА

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

Из (5.3.1) видно, что результативность оператора раз­ деления увеличивается по мере уменьшения дисперсии разделяющего значения признака и достигает макси­ мального значения при дисперсии, обратившейся в нуль. Разделяющее значение признака с нулевой дисперсией можно, таким образом, считать оптимальным.

Если разделяющее

значение

признака определяется

по достаточно большой

выборке

из статистически экви­

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

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

мальным разделением массива (каждый раз

на

два рав­

ных

подмассива),

а последующие

этапы

используют

разделение по случайному элементу.

 

 

 

В результате выполнения первых k этапов исходный

массив распадается на 2к

равных подмассивов, содержа­

щих

по n/2k

элементов.

Сложность

упорядочения для

совокупности

последних

этапов равна

(см.

5.43)

 

Т л о с л

= Т21п2 • 2*^- log2 -J- = 2 In 2 Тп

( l o g , n - k ) ,

(5.83)

где

Т =-- Т с р +

-L

Тп.

 

 

 

 

Сложность каждого из k первых этапов постоянна и равна Тп. Поэтому

Тобт = Тп [k + 2 In 2 (log, n - k)].

(5.84)

Количество оптимально выполненных этапов не может

быть больше, чем

log2 n. Введем обозначение:

 

e =

fc/logsn,

где 0 < е < 1 ,

(5.85)

§ 57. ИСПОЛЬЗОВАНИЕ ЭКВИВАЛЕНТНОГО МАССИВА

231

откуда

k = Q\ogtn

 

 

(5.86)

 

 

 

и

 

 

 

 

 

Тобщ

= Тпlog2п[9

+ (1 -

Ѳ) 2 In2].

(5.87)

На рис. 5.15 приведена зависимость

общей

сложности от

Ѳ. При изменении

Ѳ от 0 до

1 сложность,

определяемая

Рис. 5.15. Зависимость общей сложности процедуры от относитель­ ного числа оптимально выполненных этапов Ѳ.

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

ответствующего

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

(т. е. на

39%).

Можно ожидать, что формула

(5.87)

окажется достаточ­

но точной для

Ѳ, не слишком

мало

отличающихся от 1.

Для

значений

Ѳ, близких к 1, когда

размеры разделяе­

мых

подмассивов оказываются

малыми,

предположение

о равенстве 0 дисперсии разделяющего значения

призна­

ка перестает быть справедливым. В связи с этим

эффек­

тивность запоминания признаков для использования их на последних этапах процедуры близка к 0.

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

ем

этой

таблицы

можно

определить следующим

обра­

зом. На

последнем

k-u этапе проводится разделение

2' , _ 1

подмассивов

по 2к~1

различным значениям

при-

232 ГЛ. 5. УПОРЯДОЧЕНИЕ ДЕЛЕНИЕМ МАССИВА

знака. На предшествующем этапе производится разде­

ление

2 * - 2 подмассивов по 2к~2

значениям призна­

ка из

таблицы, на еще более

раннем этапе — 2*_ 3

1,0

0,8

0,6'

0,4

0,2

О

24 25 2 6 27

2а 2"> 2" 2'2 2ГІ

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

подмассивов и т. д. Поэтому общий объем таблицы со­

ставляет (величину

Ѵ= 2*~'=k 1 + 2 + 4 + ... + 2*-1 :=2*— l . (5.88) fei

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

дывают еще одно ограничение на k:

k:<\og2[(VmKC]+]l).

 

 

(5.89)

Исходя из выражений

(5.85)

и

(5.88),

можно

выра­

зить Ѳ как функцию V и п. Тогда

общая

сложность в

зависимости от объема

массива и объема

таблицы

приз­

наков будет определяться

выражением

L

 

 

Ѳ = log2

(V+l)

 

 

l°g2

 

(5.90)

1

+

 

 

 

log2

n

 

b g 2

n

 

 

Вид этой зависимости для заданных отношений Ѵ/п при­ веден на рис. 5.16.

ГЛАВА 6

ПОРАЗРЯДНОЕ УПОРЯДОЧЕНИЕ

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

можных значений

признака

на участки в соответствии

с тем или иным

значением

группы старших разрядов

признака. Так, рассматривая один старший разряд, весь диапазон возможных значений признака можно разбить

на два участка — участок

значений признака,

где стар­

ший разряд равен 1, и

участок значений

признака, где

старший разряд равен

0.

Рассматривая

два

старших

разряда, можно разбить весь диапазон возможных зна­ чений признака на четыре группы в соответствии со сле­ дующими значениями этих разрядов: 00, 01, 10, 11. Ис­ пользуя такое естественное деление диапазона возмож­ ных значений признака, можно организовать процедуру упорядочения, основанную на последовательном разде­ лении исходного массива на взаимно упорядоченные подмассивы в соответствии со значениями старших разря­ дов признака. Такую процедуру будем в дальнейшем называть поразрядным упорядочением.

§ 6.1. Характеристики процедуры поразрядного

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

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

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

234 ГЛ. 6. ПОРАЗРЯДНОЕ УПОРЯДОЧЕНИЕ

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

верка

очередного разряда

признака

(начиная

со стар­

ших

разрядов) каждого элемента,

еще не

упорядочен­

ного

по отношению к остальному

массиву.

Процедура

будет

закончена, когда в массиве не останется

неупоря­

доченных элементов или

когда число этапов

достигнет

т. Внешняя упорядоченность различных элементов мас­ сива может достигаться на различных этапах процедуры.

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

 

 

 

 

 

M[/]

=

m

 

 

 

 

 

 

(6.1)

 

 

 

 

 

v / p . ,

 

 

 

 

 

 

 

 

 

 

 

 

 

(=1

 

 

 

 

 

 

 

 

где

Pi — вероятность

того

события,

что

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

элемента закончено на і-м этапе (после

проверки

і-го

разряда его

признака).

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим событие, состоящее в том, что для упо­

рядочения

данного

элемента надо

провести

не

более

і этапов (проверить

не более і

разрядов

в его

признаке).

Вероятность

этого

события

обозначим

 

 

Оче­

видно, что

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

_

(

p[<i}~Р[<і—

 

 

 

1]

при

 

іфт,

 

 

 

 

Р і ~

J

1 -

Р [<[т

1]

 

при

/ =

m,

 

-

'

так как события «упорядочение закончено

на і-м этапе»

и «упорядочение закончено не более

чем за і1 этапов»

несовместны,

а

событие

«упорядочение

 

заканчивается

не более чем за m этапов» достоверно. Поэтому

 

 

 

m—1

 

 

 

 

 

 

 

+ m ( l — p [ < m

— 1]).

М[і]

=Щ(р[<{і]

 

 

— р}<і—\]л)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(6.3)

$6.1. ХАРАКТЕРИСТИКИ ПРОЦЕДУРЫ

235

Определить вероятность р[~<і] можно из

следующих

соображений. Так как все возможные значения призна­ ка равновероятны, то равновероятно и любое из двух возможных значений (0 или 1) каждого разряда в лю­ бом элементе случайного массива. Вероятность опреде­ ленного значения данного разряда равна 1/2. Вероят­ ность того, что і старших разрядов признака произволь­ ного элемента совпадают со значениями і старших раз­ рядов выбранного элемента, равна, очевидно, (1/2)'=2~1 - Вероятность противоположного события (что і старших разрядов этих элементов не совпадут) равна 1—2~'. По. скольку все элементы независимы, то легко определить

вероятность

того

события,

что признак

данного

элемен­

та в старших і разрядах

не совпадает

с

признаками

ни одного

из оставшихся

п—1

элементов.

Она

равна

(1_2-'-)«-і.

 

 

 

 

 

 

 

Эта величина

и определяет

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

внешнее упорядочение данного элемента требует не более

і этапов, так как после анализа

і разрядов

его призна­

ка выяснилось, что он выделился из всего массива.

Итак,

 

 

 

 

 

 

 

 

 

p [ < / ]

=

( l - 2 - ' ) n - ' .

(6.4)

Поэтому

 

 

 

 

 

 

 

M [il =

-

2~і)"-1

-

( i

2 - ' + I ) n - ' J

+

i = i

 

 

 

 

 

 

 

+ m [ l - ( l - 2 - m + , ) n - 1 ] = m - r

 

^ 1 ^ ! - 2 " ' ) " " 1

 

 

 

 

 

г = i

 

 

 

 

- г

2

(1

— 2 - ' + 1 ) n - ' .

(6.5)

В третьем слагаемом полезно провести замену ин­

декса:

 

 

 

 

 

 

 

m—1

r

 

 

.

m—1

. . .

М[і\ = m + 2

/ (

1 - 2 - ' ) " " 1 -

2

(/ + 1) ( 1 - 2 - ' ) " - ' ,

;=і

 

 

 

 

i = 0

 

 

 

 

 

 

 

 

(6.6)

236

 

 

ГЛ. 6. ПОРАЗРЯДНОЕ УПОРЯДОЧЕНИЕ

 

 

 

а затем объединить второе и третье слагаемые:

 

 

М[і] = m — 2

( l ~

2

)

= m — 2

 

(l

~ 2~')

 

»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(6.7)

поскольку

при

і = 0

выражение

(1—2~l )n ~l

также рав­

но

0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозначим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m—1

 

 

.

 

 

 

 

 

 

 

 

 

 

 

5

=

2

( 1 — 2 -

' )

 

.

 

 

 

 

(6.8)

 

 

 

 

 

 

І =

І

 

 

 

 

 

 

 

 

 

 

Оценим данную сумму

интегралами:

 

 

 

 

 

 

J (1 — 2- *)

 

dx>S>

j

(1 — г - ^ 1

) " - 1

dx.

 

(6.9)

 

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

Сделаем в левом интеграле следующую замену пере­

менной: у=\2~х

 

, а в правом: z=\2~х+1

 

 

.

 

 

 

Получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx =

 

 

 

и

dx —

 

d

z

 

 

 

 

 

 

 

 

In 2 ( 1 — y)

 

 

 

In 2

(1 —2)

 

 

 

 

 

 

 

 

 

 

—тп 41

 

 

 

 

 

 

 

j - Ö ^ > S l n 2

>

j

 

-

^

L

.

 

(6.10)

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Интеграл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

л—1

 

 

 

 

 

 

 

j ü

^

L

=

_ l

n l

l _

x

|

_

|

'

i i

,

(6.1

для доказательства чего достаточно записать

его

в

виде

П ^ ч ь ^

Cj^zl±^dx=

 

-

m 1 1 - х f -

Г1

-

 

 

J

1 — л

J

 

1 - х

 

 

 

 

 

1

 

J

1 - х

 

 

=

— I n j

1 — x\

j

(1 4-л: 4- -

+x'~2)dx.

 

 

(6.12)

§ 6.1. ХАРАКТЕРИСТИКИ ПРОЦЕДУРЫ

237

Отсюда для

оценки величины

S получаем

соотношение

 

i о—m п—1

JL

1—2

 

 

 

 

 

 

 

 

 

_

V

 

 

 

> 5 1 n 2 >

 

 

 

 

. L

Z

i

 

 

 

 

 

 

 

 

 

 

 

 

2

i = l

 

 

i

 

 

 

 

 

 

—m+1

 

 

 

 

m

+

 

п

х

 

 

 

 

> 1 п ( 1 - г )

 

 

 

-2т

1—2

 

 

(6.13)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или

 

о

 

 

 

 

'=1

 

 

 

 

 

 

 

 

 

 

 

 

 

+2Ц > S1 n 2 >

( „ _ 1 ) 1„ 2 - 2

 

 

 

 

 

 

i = i

 

 

 

 

i = i

 

 

 

 

 

 

 

 

> (

m - l ) l n 2 - 2 ^ 7 :

^ i

.

(6.14)

 

 

 

 

 

 

 

i = l

 

 

 

 

 

 

 

Учитывая, что 2 - m

< 0 ,

заменим выражения

под знаком

суммы их приближенными

 

значениями:

 

 

 

 

 

(1 — 2 - m ) ' » 1 — / 2 ~ m ,

 

 

 

 

(6.15)

 

(1 —2-т+1У^

 

 

1 — / 2 - т + 1 ,

 

 

 

 

 

 

 

 

 

 

 

2 *

 

 

 

 

 

 

 

 

 

 

 

 

 

а сумму ||2

~

заменим

величиной 1п2

(распростра-

нив суммирование до i ->оо ) . В результате

получим

л— 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(=i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(6.16)

 

 

 

 

 

 

(=1

 

 

 

 

 

 

 

ИЛИ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I n 2 > ( S m + 1)1п2 +

л-1

— —

 

 

 

 

 

 

 

У

 

2

>

 

-

 

^

. (6.17)

ѵ

1

'

 

'

 

j

 

т

 

 

 

2 т

 

 

 

 

 

і=1

 

 

 

 

 

 

 

 

 

В случае,

когда возможных

значений

признака мно­

го больше, чем элементов в массиве, т. е.

 

 

 

 

 

 

 

 

 

 

«

1,

 

 

 

 

 

 

(6.18)

238 ГЛ. 6. ПОРАЗРЯДНОЕ УПОРЯДОЧЕНИЕ

получаем для 5 оценку

 

 

S ^ m - l

L y

_ L

 

l n 2 ^ J

L

 

 

M W œ , i

ï

f

+ 1 -

 

 

 

<6Л9>

При увеличении числа элементов в массиве по срав­

нению с числом

возможных

значений

признака

(для не

слишком больших

значений

отношения

\

 

можно

считать

 

 

 

 

 

 

 

 

 

2т

I

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

М[і]^~

1

V "

1

 

п 1

- +

1.

 

 

(6.20)

 

 

У

— —

2т

 

 

 

 

1 J

 

1 п 2 ^

і

 

 

 

 

К

'

 

 

 

 

 

і=і

 

 

 

 

 

 

 

 

Используя оценку ряда

^

~ l n ( n —

1),

получаем

M [ i l ^ M ^ l _ J L ^ }

+

1

=

 

 

 

 

 

 

 

In 2

 

 

2т

 

 

 

 

 

 

 

 

 

 

 

 

 

= l o g , ( n - l ) — ^ І

+ І.

 

(6.21)

Таким

образом,

при сделанных

нами

предположениях

среднее

число

этапов

процедуры

примерно

 

равно

log2 (n—1) + 1, что

свидетельствует о

близости процесса

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

Найденное выше выражение для М[і] получено для случая, когда число элементов в массиве существенно меньше общего числа возможных значений признака,

§ 6.2. ОРГАНИЗАЦИЯ ПРОЦЕДУРЫ

239

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

§ 6.2. Организация процедуры поразрядного упорядочения

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

(номера

разрядов обозначим

1,

2, 3,

т)

, а соот­

ветствующие значения разрядов обозначим Sj).

Основ­

ным оператором процедуры

будет оператор

разделения

подмассива, заданного граничными

значениями

индек­

сов a[î„:iK]

н индекс

первого

элемента

подмас­

сива, a ік

— индекс последнего элемента подмассива), на

две части в соответствии с двумя возможными значения­

ми заданного (/-го) разряда признака. Для определен­

ности

будем считать,

что

в

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

тора

на

начальных

позициях

в выделенном

 

подмасси-

ве a [ін

: іс—1]

группируются

элементы, имеющие

0 в

/-м разряде кода признака,

а

на конечных

позициях

а[іск]

 

группируются элементы, имеющие 1

в /-м раз­

ряде

кода

признака

( ін -<

гс

•< /к ),

где

іс

— индекс

позиции

первого

элемента,

имеющего

1 в /-м

разряде.

На

рис.

6.1

приведена

блок-схема

оператора,

по­

строенного аналогично оператору разделения, описанно­ му ранее (см. рис. 5.7). Значение /-го разряда кода при­

знака у г-го элемента обозначено

в блок-схеме S/О -

Примем

следующий порядок

работы

процедуры.

После разделения

очередного подмассива

a [іи

: ік]

по

/-му разряду кода

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

не является ли этот /-й разряд

последним

разрядом

признака (т. е. выполнено

ли

равенство } — т).

Если

/-й разряд

последний, то

разделение подмассива

окон­

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

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