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

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

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

210 ГЛ. 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

 

 

 

_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.Определение разделяющего элемента по выбор­ ке из массива. Для повышения эффективности процеду­

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

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

r s

pk—i pk— i

p2k-\

K

'

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

Математическое ожидание s найдем из выражения

мщ= 2 s

P s =

27ЕР- <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% по отношению к случайному выбору опорного элемента.

Следует напомнить, что речь идет об увеличении средней результативности оператора при случайном со­ ставе выборки. В практике может встретиться случай са­ мого неблагоприятного разделения, когда средний эле­ мент выборки, состоящей из 2k1 элементов, окажется 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 элементов, расположенных

на начальных позициях,

и подмассив из k1 элементов,

расположенных на конечных позициях исходного массива. Среди выделенных 2k1 элементов определяется сред­ ний элемент (располагающийся на k-й позиции) таким образом, чтобы все выделенные элементы на предше­

ствующих k1

позициях в начале массива были внеш­

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

по отношению к выбранному элементу,

равно

как и все

выделенные элементы на

последующих

k1

позициях

конце массива). В этом

случае выде­

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

Метод определения среднего элемента выборки зави­ сит от числа элементов в ней. Число элементов в выбор­ ке не должно быть слишком велико. Как показывает характер зависимости результативности оператора от объема выборки, даже равное 7 значение k уменьшает отличие результативности оператора от оптимальной в пять раз по отношению к случайному выбору опорного элемента. Отклонение от оптимальной процедуры при этом составляет примерно 7%. При 6=15 различие уменьшается до 3%. Поэтому использование больших

§ 5.6. ВЫБОР ИЗ МАССИВА ЭЛЕМЕНТА ДЛЯ РАЗДЕЛЕНИЯ

219

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

Для небольших выборок можно использовать

любой

из простых

алгоритмов упорядочения (например,

метод

вставки) с

целью полного упорядочения выборки

и оп­

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

деление

по первому элементу. Этот

процесс продолжа­

ется до

тех пор, пока не выделится элемент,

расположен­

ный на

средней позиции. Оставшаяся

часть

массива уже

обычным

порядком

делится

на две части в соответствии

со

значением признака

найденного

элемента. На

рис.

5.12

приведена

блок-схема такого

оператора.

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

Ранее

были получены соотношения,

определяющие

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

в

зависимости

от объема

выборки, выраженного как 2k1.

Сложность

поиска среднего элемента выборки мы будем определять для следующего общего случая: задан подмассив, содер­ жащий m-f-tt+1 элемент, и оператор должен найти та­ кой элемент подмассива, который разделяет его на три взаимно упорядоченные части: группу из m младших элементов, группу из п старших элементов и сам иско­ мый разделяющий элемент, расположенный на (от+1)-й позиции данного подмассива.

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