Главная  Терминология Хоора 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [ 42 ] 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

130 2. Сортировка Р

проходе 8 серий сливаются на f6; в конце работы на /2 содержится отсортированное множество элементов ( рис. 2.15).

Многофазная сортировка более эффективна, чем сбаля сированная сортировка, поскольку, если даны N лент, q всегда имеет дело с (N-1)-путевым слиянием вместодгл путевого слияния. Поскольку число требующихся проходГ, приблизительно равно logArn, где п - число сортируемых эл-ментов, а N - число входных лент для слияния, многофз^ ный метод обещает дать значительное улучшение по сравни нию со сбалансированным слиянием.

Разумеется, в приведенных примерах было тщатепьн подобрано распределение начальных серий. Для того чтоб; узнать, какие исходные распределения серий требуются дл правильной-работы алгоритма, мы пойдем обратным путец начиная с окончательного распределения (последняя строк на рис. 2.15). Переписывая таблицы для этих двух примере и поворачивая каждый ряд на одну позицию по отношенк к предыдущему ряду, мы получаем табл. 2.13 и 2.14 да шести проходов и для трех и шести лент соответственно.

Таблица 2.18.: Идеальное распределение )

серий на двух лентах

а<>

Таблица 2.14. Идеальное распределение серий на пяти лентах

О

Из табл. 2.13 можно вывести соотношения

Л для/>0 (2-*



(0)==1, 4 * -О- Полагая a\ = f, мы получаем

h+i = fi + fi-u для .

/, = 1, (2.41)

/о==0.

q Р рекурсивные правила (или рекуррентные соотноше-0л), определяющие так называемые числа Фибоначчи:

\ 1, 1, 27 3,8, Гз 21. 34, 55.....

Каждое число Фибоначчи представляет собой сумму двух предшествующих чисел. Итак, для того, чтобы многофазный метод с тремя лентами работал правильно, числа начальных серий на двух входных лентах должны быть двумя соседними Б ряду Фибоначчи. А что можно сказать относительно второго примера (табл. 2.14) с шестью лентами? Правила построения чисел легко записать в таком виде:

а+п = + 4) = а(0 + a\t- .

(;+!) а(/ + аа) = а(0 + а</-) + а(/-2), . 2.42)

Подстановка вместо а[ дает

fi+i = fi + /i-i + /i-2 + /i-3+fi-4 для г>4, /4=1. (2.43)

/г = О для I < 4.

Эти числа являются так называемыми числами Фибоначчи порядка 4. В общем виде числа Фибоначчи порядка р определяются следующим образом:

ff= 1. (2.44)

= О для 0<i<p.

Заметим, что обычные числа Фибоначчи имеют порядок 1.

Теперь мы убедились, что исходные числа серий для Деальной многофазной сортировки с п лентами должны Ыть суммами п-1, п - 2, 1 (см. табл. 2.15) последовательных чисел Фибоначчи порядка п - 2. Из этого сле-%ет, что алгоритм многофазного слияния применим только аким входным данным, в которых число серий есть сумма



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

В f

25

е

1261

1531 ;

1297

1921

2501

3049

1201

2500

4961

6073

2209

4819

7425

9841

12097

4063

9289

14597

19521

24097

7473

17905

28697

38721

48001

1597

13745

34513

56417

76806

95617

2584

25281

66526

110913

152351

190465

4181

46499

128233

218049

302201

379399

6765

85525

247177

428673 ,

599441

755749

10946

157305

476449

842749

1189041

1505425 1

17711

289329

918385

1656801

2358561

2998753 1

п - 1 таких сумм Фибоначчи. Итак, возникает важный во-) прос: что делать, если число начальных серий не является такой идеальной суммой? Ответ прост (и типичен для подобных ситуаций): мы предполагаем существование гипотетических пустых серий, таких, что сумма реальных и гипотети- ческих серий дает идеальную сумму. Пустые серии называются фиктивными сериями. Но этот ответ на самом деле неудовлетворителен, так как сразу вызывает следующий, более трудный вопрос: как распознаются фиктивные серии пр слиянии? Перед тем как ответить на него, мы вернемся к упомянутой выще проблеме распределения действительных и фиктивных серий на п - 1 лентах.

Однако, для того чтобы найти подходящее правило распределения, мы должны знать, как сливаются настоящие и фиктивные серии. Ясно, что выбор фиктивной серии с ленты означает, что £-я лента не участвует в слиянии; в р^ зультате слияние происходит с менее чем п - I лент. Слияние фиктивных серий со всех п - 1 входных лент не предполагает никакой действительной операции слияния, а означает прост* запись фиктивной серии на выходную ленту. Из этого можВ




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [ 42 ] 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133