Научная статья на тему 'Параллельное видоизменение сортировки Хоара'

Параллельное видоизменение сортировки Хоара Текст научной статьи по специальности «Физика»

CC BY
132
28
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ИНФОРМАТИКА / ПРОГРАММИРОВАНИЕ / СОРТИРОВКА ДАННЫХ / СОРТИРОВКА ХОАРА / ПАРАЛЛЕЛЬНАЯ СОРТИРОВКА / ПОИСК / РАСПОЗНАВАНИЕ ДАННЫХ / АДРЕСНАЯ СОРТИРОВКА

Аннотация научной статьи по физике, автор научной работы — Ромм Я.Е., Виноградский В.В.

Сортировка Ч. Хоара одна из наиболее быстрых последовательных сортировок, однако, ее видоизменения в параллельную форму не достигают минимальных значений временной сложности без ограничений, включающих деление на лучший и худший случаи. Ниже рассматривается преобразование этой сортировки в параллельную форму со свойством устойчивости и временной сложностью в общем случае.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Параллельное видоизменение сортировки Хоара»

Раздел III. Информатика

Я.Е. Ромм, В.В. Виноградский ПАРАЛЛЕЛЬНОЕ ВИДОИЗМЕНЕНИЕ СОРТИРОВКИ ХОАРА

Сортировка Ч. Хоара - одна из наиболее быстрых последовательных сортировок [1, 2], однако, ее видоизменения в параллельную форму не достигают минимальных значений временной сложности без ограничений, включающих [3] деление на лучший и худший случаи. Ниже рассматривается преобразование этой сортировки в параллельную форму со свойством устойчивости и временной сложностью O(log2 n) в общем случае.

Сортировка понимается как внутренняя сортировка по ключу, описывается на примере одномерного массива, упорядочение выполняется по отношению " < " (по неубыванию). Временная сложность сортировки T(R) измеряется количеством ее последовательных шагов (бинарных

сравнений), R - число процессоров, обмен не учитывается.

Преобразуется следующая разновидность [2] сортировки Хоара. Из массива (здесь и всюду ниже нумерация элементов массива от единицы)

А =(а[1], а[2],..., а[п]) (1)

выбирается средний элемент

k:=ndiv2;a =а\к~\. (2)

ср

Последовательно от начала массива отыскивается первый элемент ü [ / ] > а при условии i < к, затем последовательно от конца массива - первый элемент £/[ /] < аср при условии j > к . Найденные элементы меняются местами. Затем в том же порядке просмотра ищется следующая пара элементов из (1), аналогично сравнимых с аср , найденные элементы меняются местами. В продолжение процесса в левой части массива останутся элементы не большие а ,

в правой - не меньшие а . В итоге достигается упорядочение элементов из (1) относительно среднего элемента (2). Аналогичное упорядочение выполняется для каждого в отдельности из обоих подмассивов слева и справа от а , затем для каждого в отдельности из вновь полученных

подмассивов и так до окончания сортировки.

Требуется преобразовать рассматриваемую сортировку в параллельную форму с временной сложностью Т(К) — 0(log2n) и оценить R .

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

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

них элементов возрастает в геометрической прогрессии с суммой 2 — 1 на выходе / -го шага. При 7 = |1оё2 + ') сортировка закончится. Здесь и ниже ^ - целая часть числа X, [х -ближайшее целое, не меньшее X . Пусть для определенности элементы (1) - числа, упорядочение выполняется по арифметическому неравенству <, массив (1) идентифицируется как подмассив на первом шаге описываемого алгоритма. При этих допущениях параллельно по всем подмассивам и всем элементам каждого подмассива выполняется вычитание среднего элемента от каждого из элементов подмассива.

Таблица 1

Результаты сравнений элементов подмассива с а

а а2 ап-1 ап

а ср Ух 72 Гп-1 Гп

Г. =

I

' + ', а > а , / ср

"О", а = а , /' = 1 2, ..., п. / ср

"-", а < а , г ср

(3)

Пример 1. Для А — 8, 5,1, 5, 2, 5,10, —3 , аср = а^ =5, табл. 1 примет вид:

5 8 5 1 5 2 5 10 -3

5 0 + 0 - 0 - 0 + -

В правую часть подмассива перемещаются те элементы левой части, которые при сравнении образовали положительную разность, они располагаются непосредственно справа от среднего элемента с сохранением взаимного порядка. В левую часть перемещаются элементы правой части, образовавшие отрицательную разность, они располагаются непосредственно слева от среднего элемента также с сохранением взаимного порядка. Адрес перемещения элемента внутри правой части подмассива определяет индекс, равный сумме количества предшествующих «нулей» правой части, «плюсов», образованных предшествующими элементами в левой и правой частях подмассива, и выходного значения индекса среднего элемента; внутри левой части - индекс, равный сумме количества «нулей» и «минусов», образованных предшествующими элементами. Адрес перемещения элемента из левой части подмассива в правую определяется как сумма числа предшествующих элементу «плюсов» и выходного значения индекса среднего элемента, из правой части в левую - разностью между выходным значением индекса среднего элемента и числом следующих за элементом «минусов» в правой части. Перемещение выполняется параллельно во всех подмассивах по всем элементам внутри каждого подмассива и сохраняет устойчивость. По построению алгоритма Т 4} _ = ()(\о£2 п) •

Общее для произвольного смещения а преобразование одного произвольно взятого под-массива по шагам параллельной сортировки описывает

Алгоритм 1.

Шаг 1. В подмассиве (1) выбирается средний элемент

/ := 77 (Ну 2; а := а\ / 1. (4)

ср ср ср

Выполняется параллельное сравнение всех элементов подмассива со средним, результаты определяются из (3) по табл. 1.

Значение адреса перемещения элемента определяются по следующей схеме.

(0)

Если j - индекс среднего элемента в подмассиве до перемещения, а j - после него,

то, вообще говоря, а |/ ] —» а ^ |. где / ' ' = 1 + / + /. / - количество «минусов» и «ну-

ф с/) ф ф ср

лей» в левой части, j - количество «минусов» в правой части подмассива. В примере 1

а [51 —»а [1 + 3 + 21 = а [61.

ср ср ср

Адрес перемещения элемента из левой части подмассива в правую определяются соотношением а \к 1 —> а [ / ^ + 1 +11, где к, / ^ + 1 + I - индексы в подмассиве до и по-Jl npVJ ср J J ср

сле перемещения, t - количество элементов больших среднего в левой части подмассива с индексами меньшими к (количество предшествующих «плюсов»), В примере 1 а[2] —> а[6 + 1 + 0] = а[7].

Адрес перемещения элемента из правой части подмассива в левую определяются соотно-

Г7 1 г -СО) 1 1 , .(0) 1

шением а л —> а / — 1 — т\, где /с, / —1 — да - индексы в подмассиве до и после ftp nVJ ср J J ср

перемещения, т - количество элементов меньших среднего с порядковыми номерами большими к (количество последующих «минусов»), В примере 1 а [6] —» а[6 — 1 — 0] = а [5], а[9] —> ¿/[6 — 1 — 1] = а[4].

Адрес перемещения элемента внутри левой части подмассива определяются соотношением а [А:] —> ü [1 + /?]. где /с. 1 + р - индексы в подмассиве до и после перемещения, р - количество элементов, до перемещения меньших среднего, либо равных ему, с порядковыми номерами меньшими к (количество предшествующих «нулей» и «минусов»), В примере 1 а [1] -> а [1 + 0] = а [1], а [3] -> а [1 +1] = а [2], а [4] -> а [1 + 2] = а [3].

Адрес перемещения элемента внутри правой части подмассива определяются соотношением а \кЛ —> а [ / ^^ +1 + г + Л , где к, 1 + / ^^ + г +1 - индексы в помассиве до и по-пр пр J ср J ср

сле перемещения, r - количество элементов из левой части подмассива больших а [jср ] (количество предшествующих «плюсов» слева от jcp), t - количество элементов из правой части подмассива не меньших среднего с индексами меньшими к (количество предшествующих «плюсов» и «нулей» справа от jcp). В примере 1 а[7] —>а[1+ 6 + 1 + 0] = а[8],

а [8] —> а[1 + 6 + 1 + 1] = а [9]. После параллельного перемещения элементов в конечное положение на выходе шага подмассив разделяется на два новых подмассива относительно перемещенного элемента а [ j^ ]. В примере 1 на выходе шага 1 получится:

(5, 5, 1, —3, 2), 5, (8, 5, 10) . Временная сложность шага Zj (./?) = г , где R = П — 1, г - время

одного бинарного сравнения.

Шаг i , / > 2. Процесс, описанный для шага 1, в лучшем случае параллельно повторяется

для каждого из Z полученных на предыдущем шаге подмассивов. Временная сложность шага составит Т. (R) = г, где R<n.

Шаг i — |Tog 2 (п + 1) . Этот шаг повторяет операции предыдущего шага в каждом из полученных на его выходе подмассивов, на выходе рассматриваемого шага достигается разделение всего преобразуемого массива на подмассивы, содержащие по одному элементу, это означает окончание сортировки.

По построению в лучшем случае / (/7 ) = 0(log2 ll) ■ Схема адресации не меняет порядка равных элементов, обеспечивая устойчивость преобразованной сортировки.

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

более п шагов. В этом случае Т(п) — О 4f ■

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

Параллельная сортировка с временной сложностью O(log2 n) в общем случае. При произвольном смещении на шаге средних элементов сортировка заведомо выполнима за [Tog2 (н + 1) шагов, если на входе каждого шага количество «Н -отстоящих» элементов увеличивается вдвое по сравнению с предыдущим. Необходимо, чтобы они затем взаимно упорядочивались с единичной временной сложностью на шаге и, с сохранением оценки, между ними на том же шаге оказывались расставленными все промежуточные по величине элементы подмассива. Расстановка должна соответствовать схеме Хоара и обеспечивать упорядоченность относительно всех « H -отстоящих» элементов подмассива.

На 7 -м шаге слева направо фиксируются «Н -отстоящие» элементы вдвое ближе друг к другу, чем их аналоги на (7—1 )-м шаге, номера фиксируемых элементов задаются равноотстоящими путем сквозной нумерации по всем элементам всего массива, полученного на выходе (7—1 )-го шага.

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

Замечание 2. Сортировка закончится, если все подмассивы упорядочатся так, что каждый из них состоит из одного элемента и границ, - взаимно упорядоченных « Н -отстоящих» элементов. Число последовательных шагов не превзойдет [log2 (и + 1) .

При формальном описании данного алгоритма массив (1) по-прежнему идентифицируется как подмассив на первом шаге.

Алгоритм 2.

Шаг 1. Выполняется первый шаг алгоритма 1.

Шаг 7 , 7 > 2. Пусть в результате (7 — 1) -го шага сортируемый массив оказался разделенным на m подмассивов, состоящих, соответственно, из , I элементов. Пусть при

12 m

этом в результате 7 —1 предшествующих шагов свое конечное положение с взаимной упорядоченностью и упорядоченностью относительно них промежуточных элементов заняли

2^ +2' + .. ,+ т! ^ = т! — 1 « Н -отстоящих» элементов. Тогда на входе / -го шага фиксируются т! ' новых «Н -отстоящих» элементов, которые подлежат на этом шаге взаимному упорядочению, кроме того, упорядочению относительно « H -отстоящих» подлежат остальные элементы подмассива. Фиксирование равноотстоящих (« H -отстоящих») элементов выполняется

58

сквозной нумерацией по всем элементам полного массива, полученного на выходе предыдущего шага. Пусть для каждого ] , 1 < / < т . в / -м подмассиве (с числом элементов I .) на входе

]

1 -го шага зафиксировано

к,

отстоящих»

а[(3], а[/3 + [п/27]], а[у? + 2-[и/2г]], ..., а[(3 + (к.-1)-[и/2г]],

элементов

при

вида

этом

^ /(. = — ' • Д-1Я искомого упорядочения параллельно по всем j, \< j <т, вы-

1 < у < те 7

полняется параллельное сравнение всех зафиксированных на данном шаге к . «Н -отстоящих»

элементов j -го подмассива со всеми элементами этого подмассива. Сравнения можно представить в виде матрицы.

Табл. 2

Матрица сравнений элементов j -го подмассива с « Н -отстоящими» элементами

а а2 а j

-оо Г 01 /02 Уо^

У11 /12 Г» j

а\0 + \п /21 Ц У 21 /22 Уи]

а\Р + (к]- 1).\п/2 Г кj 1 ^ 2 Гк/ j

00 к^ 1)1 /(к^ 1)2 У (^+1)^

В табл. 2 символ оо обозначает число, заведомо большее модуля любого из сравниваемых

чисел,

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

7 =

рг

" + ", а > а , р г

"0", а =а , рг

"-", а < а рг

р = О, 1, ..., к . + 1; г= 1, 2, ...,£.. Табл. 2 включает 7 7

в себя, в частности, сравнения всех « Н -отстоящих» элементов данного подмассива между собой. Выбирая соответственные им столбцы и строки, можно получить отдельную матрицу сравнений «Н -отстоящих» элементов j -го подмассива между собой, она представляет собой квадратную матрицу с нулевой диагональю и антисимметричными относительно этой диагонали элементами [4].

Табл. 3

Матрица взаимных сравнений « Н -отстоящих» элементов j -го подмассива

а \/?] а\Р + \п / 21 ]] а ^ + 1).\п / 21 ]]

0 ~12 Ч

а \р + \п / 21 ]] ~ 21 0 ~ 2 к}.

а\£ + (к,- 1)-\п / 21 ]] ' к1 ~ к, 2 0

Значения у ^ ^ выбраны из табл. 2 на пересечениях соответственных строк и столбцов, у ^ — — У г р, г ~\2,...,к , р — 1,2,..., к По результатам сравнений производится подсчет

адресов « Н -отстоящих» элементов для их взаимного упорядочения. Адрес к -го слева направо « Н -отстоящего» элемента получается как число, равное количеству «нулей» и «плюсов» к -го столбца матрицы, расположенных над диагональю и на самой диагонали, сложенному (для сохранения порядка равных элементов) с количеством только «плюсов» этого же столбца ниже диагонали [4]. Пусть это количество обозначено I.

Замечание 3. Сортировка устойчива и является адресной: выходной индекс, равный I, сопоставляется входному индексу к : := а[к ] . При этом запоминается обратный адрес отсортированного элемента с [£] (его входной индекс) и располагается в порядке отсортированных элементов: в[£] := к . С таким запоминанием выходной массив может получаться из элементов входного без перемещения [5]: с[£]= а[&[£]] .

Параллельная перестановка по найденным адресам влечет взаимное упорядочение всех « Н -отстоящих» элементов ] -го подмассива. Схема соответствует модифицированной с максимальным параллелизмом и устойчивостью [4] сортировке подсчетом, оценивается временной сложностью Т(К) = 0(\), где Я составляет число, равное половине элементов табл. 3 за выче-

1 2

том диагональных элементов, Я = — (к . — к Л .В данном случае это количество включается как

2 7 7

часть в число процессоров, выполняющих сравнения по табл. 2.

Пример 2. Пусть ] -й подмассив в результате / — 1 -го шага принял вид

С2, 99, 100, 50, 23, 19, 23, 1, 6, -3, 22, 1, 22, -10, -10 ^ (5)

Пусть на / -м шаге в нем оказалось пять « Н -отстоящих» элементов, начиная с второго, -

а[2]:= 99, а[5]:=23, а[8]:=1, а[11]:=22, а[14]:=-10. (6)

Табл. 2 для (5), (6) примет вид

Табл. 4

Матрица сравнений элементов подмассива с « Н -отстоящими» элементами

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

22 9 100 50 23 19 23 1 6 -3 22 1 22 - -10

-ОО + + + + + + + + + + + + + + +

99 - 0 +

23 - + + + 0 - 0 - - - - - - - -

1 + + + + + + + 0 + - + 0 + - -

22 0 + + + + - + - - - 0 - 0 - -

-10 + + + + + + + + + + + + + 0 0

оо

Из столбцов и строк табл. 4, отмеченных пунктиром, выделяется матрица сравнений « Н -отстоящих» элементов между собой:

Табл. 5

Матрица сравнений « H -отстоящих» элементов подмассива

В обозначениях замечания 3 взаимный порядок « H -отстоящих» элементов после подсчетов по столбцам примет вид: а [2] —> с [1 + 4] = с [5], а [5] —»с [1 + 3] = с[4], а[8] —»с[1 + 1] = с[2], аг[11]->с[2 + 1] = с[3], аг[14]->с[1 + 0] = с[1], где в квадратных

скобках выходной адрес « H -отстоящего» элемента аддитивно представлен количеством «нулей» и «плюсов» не ниже диагонали и количеством «плюсов» ниже диагонали. При этом е[5] = 2, е[4] = 5, е[2] = 8, е[3] = 11, е[1] = 14.Переставив в соответствии с найденным взаимным порядком строки « H -отстоящих» элементов табл. 2, можно параллельно выполнить по этой же таблице сравнения всех оставшихся элементов j -го подмассива с взаимно упорядоченными « H -отстоящими» элементами. Заново производить сравнения « H -отстоящих» элементов между собой уже не требуется, а значения остальных сравнений позволяют в точности указать положение сравниваемого элемента между двумя конкретными соседними « H -отстоящими» элементами (с учетом границ подмассива). Это достигается следующим образом. Пусть в рассматриваемой таблице уже выполнена перестановка строк « H -отстоящих» элементов в соответствии их взаимному порядку (неубыванию) сверху вниз, в таком виде она идентифицируется как модифицированная табл. 2. Тогда результаты сравнения в ней « H -отстоящих» элементов с остальными определяются нестрогой монотонностью расположения « H -отстоящих» элементов: вниз от каждого «минуса» в столбце располагаются только «минусы», вверх от каждого «нуля» - только «нули» или «плюсы», вверх от каждого «плюса» - только «плюсы». Смена знака в столбце определяется как пара соседних клеток, верхняя из которых неотрицательна, нижняя - отрицательна. Строка со сменой знака идентифицируется по неотрицательному элементу.

Перестановка строк табл. 4 согласно взаимному порядку « H -отстоящих» элементов влечет модифицированную таблицу:

Табл. 6

Матрица сравнений элементов подмассива с « H -отстоящими» элементами после их взаимного упорядочения

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

22 99 100 50 23 19 23 1 6 -3 22 1 22 -10 -10

-сю + + + + + + + + + + + + + + +

-10 + + + + + + + + + + + + + 0 0

1 + + + + + + + 0 + - + 0 + - -

22 0 + + + + - + - - - 0 - 0 - -

23 - + + + 0 - 0 - - - - - - - -

99 - 0 +

оо

Очевидно, смена знака в столбце с единственностью определяет положение элемента с номером данного столбца между двумя взаимно упорядоченными «Н -отстоящими» элементами. Именно, если при смене знака результат сравнения с « Н -отстоящим» элементом есть «плюс», то на выходе шага элемент должен расположиться после данного « Н -отстоящего» (ниже) и перед

следующим (выше). Если при смене знака результат сравнения с « Н -отстоящим» элементом есть «ноль», то элемент на выходе шага должен расположиться после данного « Н -отстоящего» и перед следующим в том случае, когда в табл. 2 его номер больше номера столбца (входного номера на шаге) меньшего из рассматриваемой пары « Н -отстоящих» элементов; если же его номер был меньше входного номера на шаге меньшего элемента рассматриваемой пары, то сравниваемый элемент должен расположиться перед этим меньшим на выходе шага. Взаимный порядок элементов, которые на выходе шага расположатся между элементами пары « Н -отстоящих», определяется числом «нулей» и «плюсов» в той строке модифицированной табл. 2, где этот элемент образовал смену знака, с учетом их расположения относительно номеров данной пары « Н -отстоящих» элементов. Элементы, которые при смене знака образовали положительную разность, располагаются непосредственно справа от меньшего элемента пары « Н -отстоящих» с сохранением взаимного порядка. В левую часть перемещаются элементы, при смене знака образовавшие отрицательную разность, они располагаются непосредственно слева от меньшего элемента пары также с сохранением взаимного порядка. При соответствующей формализации вычисления адресов это сохранит порядок равных элементов. Пусть « Н -отстоящий» элемент £ -й строки модифицированной табл. 2 обозначен а [£], его порядковый номер после перемещения в подмассиве на выходе

Н

шага обозначен _/ „ и пусть а [£] в этой таблице находится в столбце с номером q (по замеН £ Н

чанию 3 этот входной номер а [£] восстанавливается по номеру £ в процессе взаимного упоря-

Н

дочения « Н -отстоящих» элементов). В рассматриваемых обозначениях,

1Н£=1 + Г> (7)

где г - сумма числа всех минусов £ -й строки таблицы и числа нулей этой строки, предшествующих слева направо столбцу с номером q . Очевидно, г равно числу предшествующих в смысле отношения порядка элементов, при перемещении согласно (7) сохраняется порядок равных элементов. Для остальных элементов адреса перемещений внутри подмассива формализуются следующим образом. Пусть в той же строке модифицированной табл. 2 элемент аобразовал

смену знака типа «плюс, минус». Тогда выходной индекс на шаге для а определяется соотношением

а[р\^><*И д^+1 + г0] ' (8)

где р - порядковый номер элемента в подмассиве на выходе предыдущего шага, у + - его порядковый номер в этом подмассиве на выходе рассматриваемого шага,

7 0 - выходной номер а [£] из (7), г _ - число предшествующих элементу а «плюсов»,

Н £ Н и р

образовавших в £ -й строке смену знака.

Пусть а ^ образовал в £ -й строке смену знака типа «ноль, минус» при условии р > с/

(входной номер а больше входного номера а [£]). Тогда выходной индекс на шаге для

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

a[p\^a{j Hf +\ + rl+t]\, (9)

где р и j ,. + 1 + Г. + /. имеют такой же смысл, как в (8), /". - число всех «плюсов», н z. 11 1

образовавших смену знака в i -й строке, t ^ - число всех тех «нулей», образовавших в i -й строке смену знака, которые находятся в столбцах с номерами, большими q и меньшими p . Пусть a образовал смену знака типа «ноль, минус» при условии р < q (входной номер а меньше входного номера a [i]). Тогда

H

a[p]^>a[j н£-1~Г2] (Ю)

где г _ - количество последующих за a «нулей», образовавших в i -й строке смену зна-2 p

ка, которые расположены в столбцах с номерами меньшими q .

Замечание 4. Схема обеспечивает устойчивость сортировки благодаря тому, что при подсчете адресов учитывается и в процессе перемещения сохраняется взаимное расположение равных (и «потенциально» равных) элементов во всех рассмотренных случаях (7) - (10).

В примере 2 конечное положение « Н -отстоящих» элементов на выходе шага определяется согласно (7): ан [2] а[\ +13] = а[14], а [5] а[1 + 10] = а[\ 1],

Н

а [8] —>а[1 + 3] = а[4],а [11]-»а[1 + 8] = а[9], а [14] а[1 + 0] = а[1]. Конечные

н н н

адреса остальных элементов подмассива на выходе шага определяется в соответствии с (8) - (10): а [1] а [9-1 - 0] = а [8], а [3] а [14+1 + 0] = а [15], а [4] -> а [11 +1 + 0] = а [12], а[6] —>а[4 + 1 + 0] = а[5], а[7]->а[11 + 1 + 1] = а[13], а[9] ->ог[4 + 1 + 1] = а[6], ar[10]->ar[l + l + 0] = ar[2], or[12] -> а[4 + 1 + 2] = ог[7], or[13] -> а[9 + 1 + 0] = or[10],

а[15] —> ¿/[1 + 1 + 1] = ¿/[3]. На выходе данного шага, после перемещения всех элементов, под-

массив (5) разделится на подмассивы относительно взаимно упорядоченных «Н -отстоящих»

элементов и примет вид <-10, (-3, -10), 1, (19, 6, 1, 22), 22, (22), 23, (50, 23), 99, (100)],

где выходные подмассивы выделены круглыми скобками.

Шаг i = |Tog2 {п +1) . Этот шаг повторяет операции предыдущего шага в каждом из

полученных на его выходе подмассивов, на выходе рассматриваемого шага достигается окончание сортировки.

С учетом взаимной независимости сравнений временная сложность / -го шага / ( R) = т, где количество процессоров (с учетом сквозной нумерации « Н -отстоящих» элементов) определяется числом одновременных сравнений 2' ' «Н -отстоящих» элементов с не более чем

п — 2} ' + 1 остальными элементами. Отсюда R < ' • (п — 2' ' +1). При этом предполагается, что физическая перестановка « Н -отстоящих» элементов не выполняется, а учитывается с помощью обратной адресации (иначе T(R) = 2t ). Временная сложность всей сортировки составит Г«г>СКIog2n), где ^ ^ ^ 2/-1 .(и_2/-1+1) или * = •

1 < г < log2 п

Из изложенного вытекает

Теорема 1. Сортировка Хоара по изложенной схеме преобразуется в форму параллельного алгоритма, временная сложность которого (9(1о§2 п) достигается с использованием

п 0 + 1)2

К =- процессоров. При этом в преобразованной форме сортировка устойчива.

4

Физически выделять из таблицы 4 таблицу 5 не необходимо, все требуемые для последней столбцы и строки сравнений содержит табл. 4. Не необходим также физический перевод табл. 4 в форму табл. 6, поскольку сортировка подсчетом на основе табл. 5 дает адреса перестановки строк с взаимным порядком « Н -отстоящих» элементов и соответственные этим адресам обратные адреса строк табл. 4, с которыми она эквивалентна табл. 6.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Вирт Н. Алгоритмы и структуры данных. М. : Наука. 1989. 384 с.

2. Кнут Д. Искусство программирования для ЭВМ. Сортировка и поиск. М.: Мир, 1978. Т. 3. 844 с.

3. Baudet G., Stevenson D. Optimal sorting algorithms for parallel computers // IEEE Transactions of computers. January 1978. v.c. 27, № 1. P. 84-87.

4. Ромм Я.Е. Параллельная сортировка слиянием по матрицам сравнений. II // Кибернетика и системный анализ. 1995. № 4. С. 13-37.

5. Ромм Я.Е., Гуревич М.Ю., Белоконова С.С., Соловьева И.А. Вычисление нулей и полюсов функций на основе устойчивой адресной сортировки с приложением к поиску и распознаванию. Проблемы программирования // Материалы 4-й международной научно-практической конференции по программированию УкрПРОГ'2004. Киев, 2004. № 2-3. С. 462-472.

6. Ромм Я.Е. Параллельная сортировка слиянием по матрицам сравнений. I // Кибернетика и системный анализ. 1994. № 5. С. 3-23.

i Надоели баннеры? Вы всегда можете отключить рекламу.