
книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах
.pdf230 ГЛ. 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 [іи |
: ік] |
по |
|||
/-му разряду кода |
признака прежде всего анализируем, |
||||||
не является ли этот /-й разряд |
последним |
разрядом |
|||||
признака (т. е. выполнено |
ли |
равенство } — т). |
Если |
||||
/-й разряд |
последний, то |
разделение подмассива |
окон |
чательное и он целиком должен быть включен в упоря доченную часть массива. Для дальнейшего разделения