
книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах
.pdf210 ГЛ. 5. УПОРЯДОЧЕНИЕ ДЕЛЕНИЕМ МАССИВА
в последнем слагаемом и объединены суммы в квад ратных скобках, отличающиеся только порядком сумми рования членов. Запишем соответствующее выражение для Т(п—1) :
|
|
|
(п + З) г |
|
|
, |
2 |
|
|
у Т ( |
й _ 1 ) ) |
7 > - 1 ) = ( л - 2 ) 7 с р + ^Ц^Ти |
|
+ |
я — 1 |
|
|
||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
(5.26) |
откуда |
|
|
|
|
|
|
|
|
|
|
|
Я |
l |
± L |
T ( n - \ ) |
- |
|
{п~~1) |
|
( " ~ 2 ) |
7\.р + |
||
k= 1 |
я |
|
|
|
|
я |
|
|
|
|
|
|
|
|
+ |
( |
" |
+ |
/г~ |
1 |
) |
Тп |
(5.27) |
|
|
|
|
|
3 ) { п |
|
|
||||
Т(п) |
я + 1 Т(п — |
1) + |
l ^ z i i i |
|
r c p |
+ Ц±±Та. |
(5.28) |
||||
|
|
|
я |
|
|
|
З я |
|
|
|
Получено рекуррентное соотношение, связывающее слож ность Т(п) с Т(п—1) с учетом времени выполнения срав нения и пересылки (Тср и Т „). Используя рекуррентное соотношение (5.28), получим
Т (п — 1) = — — Tin |
—2)+ |
2 ( n ~ 2 ) |
7C D + |
2 n + |
|
1 Г,„ |
|||
|
я — 1 |
|
и — 1 |
р |
3 ( я — 1 ) |
|
|||
|
|
|
|
|
2л- |
|
(5.29) |
||
7 > - 2 ) = Цт ( я - 3 ) + і і ^ ^ г с р + |
|
-Г |
|||||||
3 (я — 2) |
|||||||||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
(5.30) |
|
Поэтому |
|
|
|
|
|
|
|
|
|
Т ( « ) = ^ ± І 7 > - з ) + |
|
|
|
|
|
|
|||
п — 2 |
|
|
|
|
|
|
|
||
|
|
л —2 |
|
|
|
Т 4- |
|||
+ 2(п+ |
1) | _ л ( я + 1 ) + ( л — 1 ) л |
(я — 2) (л — 1) |
|||||||
|
|
||||||||
л + 1 |
2 я + 3 , 2 л + 1 , |
2 я — 1 |
1 т |
|
|
(5.31) |
|||
|
я ( л + 1 ) |
( я — 1 ) л |
(л — 2) (л — 1) |
1 |
П . |
|
|||
|
|
|
Сделаем предположение, что такой закон перехода от
§ 5.6. ВЫБОР ИЗ МАССИВА ЭЛЕМЕНТА ДЛЯ РАЗДЕЛЕНИЯ |
211 |
Т(п) |
к |
Т(п—t) |
справедлив |
для |
любого |
n>t>0, |
т. е. |
||||||||||||
предположим, что |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Т (п) = |
п + |
1 |
tТ(п — |
0 + |
|
|
|
|
|
|
|
|
|
|
|||||
п + |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
я — i |
|
|
T |
4- |
|
|
||
|
|
2 ( . + 1 ) 2(я-+ 2 — i ) (я + 1 — і ) |
|
|
|
|
|||||||||||||
|
|
|
|
|
i |
= |
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
я |
+ |
|
|
|
|
2 n + |
5 — 2 i |
|
|
Г п . |
(5.32) |
||||
|
|
|
|
|
3 |
|
Ad |
i n |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
(n + 2 — i ) ( n + l — i ] |
|
|
|
||||||||||
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
Докажем это предположение по индукции. Оно вер |
|||||||||||||||||||
но для t=l, |
2, 3. Покажем, что если оно верно для неко |
||||||||||||||||||
торого t, то оно верно также и для |
|
а |
следователь |
||||||||||||||||
но, и для любого целого |
^>0. |
|
|
|
|
|
|
|
|
|
|||||||||
Действительно, |
из |
(5.28) |
имеем |
|
|
|
|
|
|
||||||||||
T(n |
— t)= n |
+ x |
~ l |
T(n |
— t—\)+ |
|
2 |
( " ~ ' ~ ° |
Гг „ 4- |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
я — t |
|
cp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
2 я + 3 — 2 / т„ |
(5.33) |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 (л — о |
|
|
|
||
Заменяя |
в |
(5.32) |
Т(п—t) |
его |
значением |
|
из |
(5.33), |
по |
||||||||||
лучаем |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 » |
|
|
T(n-t-\) |
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|||
|
|
п — t |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ 2 ( л + 1 ) |
t |
|
|
|
|
n— i |
|
|
|
|
|
n — t —I |
|
X |
|||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
(я + |
2 — i) |
(л |
|
|
|
|
(л + |
1 — f) (л — 0 |
||||||||||
|
|
(=1 |
|
|
|
|
J |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
X yi |
|
. я + 1 |
Ad (n + |
2 л + 5 — 2 І |
|
|
, |
|
|
||||||||
|
|
|
С Р |
|
3 |
[ |
2 — і) (л + |
1 — i) |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
2л + 3 — 2^ |
|
|
|
я + |
1 |
T (п — t — 1 ) + |
|
|
|||||||||
|
(я + 1 — 0 (п — О |
|
|
n—t |
|
|
|||||||||||||
|
|
2(п 4- 1) У |
|
|
— |
— |
|
1 — i) |
Г с р |
4- |
|
|
|||||||
|
|
|
ѵ |
|
7 |
— |
(„ + 2 |
i) |
(" |
с |
р |
|
|
||||||
|
|
|
|
|
|
і) |
(л + |
|
|
|
|
||||||||
|
|
|
+ |
|
|
|
|
|
2я + |
5 — 2 i |
|
|
|
(5.34) |
|||||
|
|
|
3 |
|
Ad (я + |
2 — i) (л + |
1 — i) |
|
|
||||||||||
|
|
|
|
|
|
|
|
что и доказывает индуктивное предположение.
212 |
ГЛ. 5. УПОРЯДОЧЕНИЕ ДЕЛЕНИЕМ МАССИВА |
Полагая в (5.32) t — n—1 и учитывая, получаем
|
л—1 |
Т |
|
7 » - 2 ( л + |
1)2"^ |
||
2 — i) (я + 1 — О J ср |
|||
|
(n + |
||
|
і=і |
|
|
|
л-1 |
2ft + 5 — 2 і |
|
|
П 3+ 1 ^2 |
||
|
(n(п + 2 — t) (n + 1 — t) |
что 7(1) =0 .
4-
~
Г„. (5.35)
Следующая задача — получить оценки для найденных сумм. Расчленим каждое слагаемое сумм на простейшие дроби:
(я + 2 — 0 (я + 1 — 0 |
2 |
|
1 |
(5.36) |
|
n + 2 — i |
п+ 1 — t |
|
|||
2 n + 5 — 2 t |
1 |
, |
3 |
(5.37) |
|
(ft + 2 - 0 (я + 1 - t) |
я + 2 — i |
n 4- 1 — i |
|||
|
Используя это разложение и произведя замену перемен ных, получим
п+1 |
|
|
|
|
7 » = 2 ( л + 1 ) 22-7-п2f Т,ср |
|
|
|
|
г =3 |
г=2 |
|
|
|
я + 1 |
Т п = 2 ( л + 1 ) я + 1 |
|
||
г=3 |
|
|||
г=2 |
|
|
|
|
2т |
_3 |
|
|
|
2 |
|
я |
|
|
г=3 |
|
|
|
|
|
+ 2 Ѵ |
1 |
* п* |
(5.38) |
|
г |
|||
|
г = 3 |
|
|
|
Учитывая соотношение для суммы ряда |
|
~ |
|
л+1'•f <2т<т+Т^г- <5-39>
§ 5.6. ВЫБОР ИЗ МАССИВА ЭЛЕМЕНТА ДЛЯ РАЗДЕЛЕНИЯ |
213 |
смысл которого очевиден |
из рис. 5.Ш, |
получаем |
|
||
1 п ( я + 1) —In 3 < |
У — < — + |
1пп — І п З . |
(5.40) |
||
|
|
г |
3 |
|
|
|
|
г=3 |
|
|
|
Для больших п можно принять |
|
|
|
||
|
2 ~ 7 ~ 1 г ф + 1 ) |
|
(5.41) |
||
и |
|
|
|
|
|
7 » ^ 2 ( л + |
1 ) І п ( л + 1)Т с р + А ( |
Л + |
і ) і п ( „ + 1)Г П = |
||
|
|
О |
|
|
|
= ( Т с р + | - Г п ) 2 1 п 2 ( п + |
l ) l o g 2 ( n + 1). |
(5.42) |
|||
Итак, для больших п получаем |
|
|
|
||
Т |
(п) Ä 1,386 ( Г с р +jr„ )n loga n, |
(5.43) |
поскольку 21п2« 1,386.
Таким образом, получено выражение для сложности вышеописанной процедуры с числом сравнений примерно*
Рис. 5.10. К оценке суммы ряда интегралами.
на 39% больше, чем в оптимальной процедуре упорядо чения.
214ГЛ. 5. УПОРЯДОЧЕНИЕ ДЕЛЕНИЕМ МАССИВА
5.6.2.Определение разделяющего элемента по выбор ке из массива. Для повышения эффективности процеду
ры необходимо стремиться к такому выбору элемента для разделения, чтобы этот элемент в окончательном массиве был как можно ближе к середине. Для случай ного «опорного» элемента следует стремиться к тому, чтобы математическое ожидание его окончательного по ложения соответствовало середине массива с минималь ной дисперсией. В случаях, когда вероятностное распре деление значения признака элемента исходного массива неизвестно, единственным способом эффективного вы бора элемента для разделения является назначение сред него элемента из некоторой выборки элементов массива. Здесь, так же как и в предыдущем случае, при доста точной исходной неупорядоченности массива выборка может формироваться из некоторой фиксированной группы позиций исходного массива. В противном случае следует формировать выборку из совокупности элемен тов, расположенных на случайных позициях. Во всех случаях будем считать, что из исходного массива форми руется выборка, каждый элемент которой имеет случай ное значение признака и, следовательно, с равной веро ятностью может занимать в упорядоченном массиве лю бую позицию, не занятую другим элементом выборки.
Пусть выборка из массива в п элементов содержит 2k—1 элемент. Тогда вероятность того, что средний эле мент выборки (элемент с номером k) в результирующем упорядоченном массиве будет расположен на позиции с индексом s, составляет
r s
pk—i pk— i
p2k-\ |
• |
K |
' |
Для нахождения основных характеристик оператора разделения для данного случая следует определить ма тематическое ожидание и дисперсию значения s.
Математическое ожидание s найдем из выражения
мщ= 2 s |
P s = |
25І7ЕР- <5-45) |
|
n—k+l |
|
ll—k+\ |
pk~\ pk—l |
s=k |
|
s=k |
"я |
§ 5.6. ВЫБОР ИЗ МАССИВА ЭЛЕМЕНТА ДЛЯ РАЗДЕЛЕНИЯ |
215 |
Д ля раскрытия суммы воспользуемся следующими тождествами:
Ck-\Ck-\-C2r\ |
(5.46) |
s=k |
|
"l\s-k)Ck-\Ck-\,,kCf, |
(5.47) |
и в результате получим
M[s] =^ZTj i n—jk+l2(S -k)С"-1C"=*+kл—2fe-ИC"='C"-s1=
cl" + eg*-' |
= - 1 ^ , (5.48) |
= б " » т ~ я |
-.2*—!
Первое условие для «опорного» элемента выполнено. Теперь определим дисперсию s:
=л-A2-f-l ( s — л - А+12 ^-<«+»л - А+21 S^+
s=fe |
s=ft |
s=ft |
+(/ -^,N„4—2*+! *л=— 2 ^ - ^ - <5-49>
S = f t |
S = f t |
Для определения оставшейся суммы следует восполь зоваться тождеством:
я—*+і
2 |
(s - k) (s - |
k - 1) Clz\ Ck~\ |
==k(k + 1) Cf+1, |
(5.50> |
||
откуда |
с учетом |
тождеств |
(5.46) |
и (5.47) |
|
|
2 |
s2 Ck~\ Ck~ l =k(k+ï) |
clk+l |
+ w |
[C + C ~ ' ) - |
||
|
|
|
|
n—k+\ |
|
|
|
~k(k+ |
\)Clk~x |
=Cf~{ |
2 |
s*Ps- |
(5.51) |
216 ГЛ. 5. УПОРЯДОЧЕНИЕ ДЕЛЕНИЕМ МАССИВА
Раскрывая выражения для сочетаний, получаем
D[s] = k(k + 1) |
aft—i |
|
|
|
|
|
|
|
|
n2k |
i n2k— 1 |
|
|
|
|
|
|
|
|
/-.24—1 |
|
4 |
|
|
|
|
e |
(* + 1 ) ( п - 2 » ) ( п - 2 * + 1 ) + |
ft(n_ft)_ |
(И + |
1)' |
. |
( 5 . 5 2 ) |
||
|
2 ( 2 f c + l ) |
4 |
|
4 |
|
4 |
|
|
|
Рассмотрим |
частный случай, |
когда |
д > 1 |
и л > 2k. |
|||
Тогда, пренебрегая членами более высокого |
порядка ма |
|||||||
лости, получим |
|
|
|
|
|
|
|
|
|
|
D [s] Ä |
h О (п), |
|
|
|
(5.53) |
|
|
|
4 (2fc + 1) |
w |
|
|
v |
' |
|
где |
О (л) —члены порядка |
п и |
меньше. |
|
|
|
||
|
Из (5.20) определим среднюю результативность опе |
|||||||
ратора для данного случая |
|
|
|
|
|
|
||
|
|
"^«тО-ЙПн)- |
|
|
(5'54) |
Последнее выражение явно характеризует среднюю результативность оператора как функцию от объема вы борки, используемой для нахождения «опорного» эле мента. Для k=\ (назначение разделяющего элемента без выбора)
мм~І(*-т)-Ѣ <5'55>
а для 1
/ И ( Д / ) ^ л 2 / 8 , |
(5.56) |
т. е. предельный выигрыш в результативности опера тора соответствует 50%. Характер зависимости ре зультативности от объема выборки представлен на рис. 5.11.
§ 5.6. ВЫБОР ИЗ МАССИВА ЭЛЕМЕНТА ДЛЯ РАЗДЕЛЕНИЯ |
217 |
||
Следует |
отметить, что |
увеличение результативности |
|
не связано |
с изменением |
отношения k/n, а целиком |
оп |
ределяется выбранным значением k. Это свидетельству
ет о том, что относительное увеличение |
результативности |
|
не зависит |
от объема массива. Даже |
незначительное |
увеличение |
объема выборки для определения «опорного» |
\ |
.• |
i |
i ' |
' |
i |
i |
i |
7 |
i |
i |
i — |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
8 |
9 |
к |
Рис. 5.11. Характер зависимости результативности от объема выборки.
элемента приводит к заметному выигрышу в результа тивности. Так, при k = 2 получаем увеличение результа тивности на 20%, а при k = 3 — на 29% по отношению к случайному выбору опорного элемента.
Следует напомнить, что речь идет об увеличении средней результативности оператора при случайном со ставе выборки. В практике может встретиться случай са мого неблагоприятного разделения, когда средний эле мент выборки, состоящей из 2k—1 элементов, окажется k-ы элементом массива после разделения. Результатив ность оператора в этом случае
д , _ п(п— 1) (n — k)(n — k—l) |
(k — 1) (k — 2) |
|
4 |
(П + \)k — k* — 1 |
(5.57) |
|
218 |
ГЛ. 5. УПОРЯДОЧЕНИЕ ДЕЛЕНИЕМ МАССИВА |
При больших п результативность для такого наихудшего случая прямо пропорциональна k.
Оценка характера зависимости от объема выборки сложности процедуры в целом представляется довольно затруднительной. Можно предположить, что для k <<С п характер уменьшения сложности будет соответствовать характеру увеличения результативности, найденному выше.
5.6.3. Оператор определения среднего элемента вы борки. Для организации процедуры в рассматриваемом случае большое значение приобретает методика форми рования выборки и методика определения среднего эле мента выборки. Для случайного массива можно реко мендовать следующий способ формирования выборки. В исходном неупорядоченном массиве выделяются два
подмассива — подмассив |
из k элементов, расположенных |
на начальных позициях, |
и подмассив из k—1 элементов, |
расположенных на конечных позициях исходного массива. Среди выделенных 2k—1 элементов определяется сред ний элемент (располагающийся на k-й позиции) таким образом, чтобы все выделенные элементы на предше
ствующих k—1 |
позициях в начале массива были внеш |
|||
не упорядочены |
по отношению к выбранному элементу, |
|||
равно |
как и все |
выделенные элементы на |
последующих |
|
k—1 |
позициях |
(в |
конце массива). В этом |
случае выде |
ленные элементы не потребуется перемещать при даль нейшем разделении массива. Оператор должен анали зировать и перемещать элементы на позициях от k до п—6+1, включая и позицию выделенного элемента, с тем, чтобы упорядочение, достигнутое при определении среднего элемента выборки, непосредственно использова лось оператором разделения.
Метод определения среднего элемента выборки зави сит от числа элементов в ней. Число элементов в выбор ке не должно быть слишком велико. Как показывает характер зависимости результативности оператора от объема выборки, даже равное 7 значение k уменьшает отличие результативности оператора от оптимальной в пять раз по отношению к случайному выбору опорного элемента. Отклонение от оптимальной процедуры при этом составляет примерно 7%. При 6=15 различие уменьшается до 3%. Поэтому использование больших
§ 5.6. ВЫБОР ИЗ МАССИВА ЭЛЕМЕНТА ДЛЯ РАЗДЕЛЕНИЯ |
219 |
выборок дает малый эффект при существенном увеличе нии трудоемкости определения среднего элемента. Оцен ка рационального объема выборки будет дана ниже.
Для небольших выборок можно использовать |
любой |
|
из простых |
алгоритмов упорядочения (например, |
метод |
вставки) с |
целью полного упорядочения выборки |
и оп |
ределения затем среднего элемента. Затраты на это упо рядочение будут небольшие. В принципе полного упоря дочения выборки не требуется, и поиск среднего эле мента может быть организован с использованием опи санного выше оператора разделения массива по первому (или последнему элементу). В этом случае оператор, рассматривая первые k и последние k—1 позиции исход ного массива в качестве единого множества, проводит разделение его по первому элементу на две части. Да лее рассматривается та часть массива, в которую попала средняя позиция, и производится ее дальнейшее раз
деление |
по первому элементу. Этот |
процесс продолжа |
|
ется до |
тех пор, пока не выделится элемент, |
расположен |
|
ный на |
средней позиции. Оставшаяся |
часть |
массива уже |
обычным |
порядком |
делится |
на две части в соответствии |
||
со |
значением признака |
найденного |
элемента. На |
||
рис. |
5.12 |
приведена |
блок-схема такого |
оператора. |
5.6.4. Оценка рационального объема выборки из мас сива. Изменение объема выборки для определения опор ного элемента приводит, с одной стороны, к изменению сложности поиска среднего элемента выборки, а с дру гой стороны, существенно изменяет результативность последующего разделения. В связи с этим возникает за дача оценки оптимального объема выборки, обеспечива ющего оптимизацию общей сложности процедуры.
Ранее |
были получены соотношения, |
определяющие |
|
результативность оператора разделения |
в |
зависимости |
|
от объема |
выборки, выраженного как 2k—1. |
Сложность |
поиска среднего элемента выборки мы будем определять для следующего общего случая: задан подмассив, содер жащий m-f-tt+1 элемент, и оператор должен найти та кой элемент подмассива, который разделяет его на три взаимно упорядоченные части: группу из m младших элементов, группу из п старших элементов и сам иско мый разделяющий элемент, расположенный на (от+1)-й позиции данного подмассива.