Параллельная сортировка на основе бинарного дерева и слияния по матрицам сравнений

ской оценкой временной сложности. При этом из асимптотики схемы сдваивания остаются исключенными операции умножения.

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

1. Айфичер, Э. Цифровая обработка сигналов: практический подход / Э. Айфичер, Б. Джервис. - М. : Вильямс, 2004. - 989 с.

2. Березин, И. С. , Методы вычислений / И. С. Березин, Н. Г. Жидков. - М. : Наука, 1970. - 464 с.

3. Люк, Ю. Специальные математические функции и их аппроксимации / Ю. Люк; - М. : Мир, 1980. - 608 с.

4. Ромм, Я. Е. Бесконфликтные и устойчивые методы детерминированной параллельной обработки : дис. ... д-ра техн. наук. 05.990.001006 / Ромм Яков Евсеевич. - Таганрог : ТРТУ, 1998. - 546 с. ; ВНТИ Центр.

5. Ромм, Я. Е. Кусочно-полиномиальное вычисление функций, производных и определенных интегралов на основе интерполяции по Ньютону / Я. Е. Ромм, Л. Н. Аксайская. ;Таганрог, 2007. - 36 с. - Деп. в ВИНИТИ 02.05.07, № 487.

6. Ромм, Я. Е. Параллельная схема дискретного и быстрого преобразований Фурье на основе полиномиального представления базиса / Я. Е. Ромм, С. А. Фирсова // Известия РАН. Математическое моделирование. - 2006. - Т. 18. - № 11. - С. 3-12.

7. Солодовников, В. И. Верхние оценки сложности решения систем линейных уравнений // Теория сложности вычислений. - ЛОМИ АН СССР, 1982. - Т. 118. - С. 159-187. - I: Записки научных семинаров.

УДК 681.3.06:681.323(519.6) ББК 27.41

Я. Е. Ромм, Н. А. Брайцара

ПАРАЛЛЕЛЬНАЯ СОРТИРОВКА НА ОСНОВЕ БИНАРНОГО ДЕРЕВА И СЛИЯНИЯ ПО МАТРИЦАМ СРАВНЕНИЙ

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

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

Y. E. Romm, N. A. Braytsara

PARALLEL SORTING ON THE BASIS OF THE BINARY TREE AND MERGE ON THE MATRICES COMPARISONS

Abstract. The article is devoted to the synthesis of parallel sorting on the basis of the tree select and merge. Building combines the properties and purpose of schemes of search on the basis of the tree and on the basis of merger for a single, parallel algorithm for sorting. The proposed algorithm is different resistance, a way of addressing the links to the input elements. Presented logarithmic assessments of the time complexity of the sort of the model is not branching of parallel programs.

Key words: parallel sorting, binary tree, parallel merger, the upper estimate of the time complexity.

Постановка вопроса. Ставится задача синтеза алгоритма устойчивой параллельной сортировки на основе бинарного дерева с использованием параллельного слияния по матрицам сравнений. Цель такой постановки - совместить свойства и назначение схем поиска на основе дерева и на основе слияния для получения единого параллельного алгоритма сортировки. Требуется, помимо построения, представить способ адресации по ссылкам к входным элементам, а также дать оценку временной сложности полученной сортировки.

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

А = {7,1,-2,-7,0,-3,5,17,8,-1,9,-§11,13,-5,6}.

При сравнении равных элементов за меньший принимается элемент с меньшим номером во входном массиве. Количество элементов последовательности, если не оговорено иное, предполагается целой степенью по основанию два, в данном примере Л^ = 16 = 24.

Для последовательности А строится дерево выбора согласно способу из [1, 269]. Получим следующее:

Рис. 1. Дерево выбора для последовательности А

Уровни дерева пронумерованы сверху вниз. Их номера соответствуют последовательным показателям степени двойки: В результате построения видим, что на 1-м уровне находятся два сравниваемых элемента (-7 и), они являются начальными для двух упорядоченных в ходе построения массивов, которые в дальнейшем будут подлежать слиянию: {-7,-3,5,17} и {-8,-5,11,13}, соответственно. Данные массивы были получены следующим образом. По ходу последовательного спуска от начального (в данном случае от 1 -го) уровня, а затем от текущего уровня на уровень с большим номером, выбирается тот элемент, за счет которого был совершен подъем на уровень с меньшим номером при построении дерева, то есть в массив, упорядочиваемый для последующего слияния, добавляется больший из двух сравниваемых элементов.

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

Пример 1. Покажем, как на бинарном дереве (рис. 2) идентифицируются все упорядоченные для последующего слияния массивы.

Рис. 2. Формирование списков индексов

У всех элементов последовательности А из (1) есть свои входные индексы, они проставлены на рис. 2 под элементами массива в нижнем ряду (4-й уровень). На первом шаге («шаг 1» слева на рис. 2) сравниваются 8 пар элементов. Первая пара, - 7 и 1, имеют индексы (1, 2) соответственно. В результате сравнения на уровень выше поднимается элемент 1 со своим индексом (2) и к этому индексу присоединяется слева направо индекс того элемента, за счет которого произошел подъем - (1).

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

На втором шаге («шаг 2» слева на рис. 2) после сравнения, на уровень вверх поднимаются элементы с новыми списками, которые состоят из собственного индекса поднявшегося элемента и списка большего элемента в паре сравнения (элемента, за чей счет произошел подъем вверх). Таким образом, переходя на следующий снизу вверх уровень, элемент присоединяет только свой собственный индекс, поставив его в начало списка индексов большего при сравнении с ним элемента.

Замечание 2. Список индексов при подъеме элемента вверх обрывается, если элемент переходит второй раз подряд на следующий снизу вверх уровень. Этот элемент в дальнейшем сохраняет лишь собственный индекс (присоединяя его при необходимости к новому списку в процессе дальнейших сравнений), а сформированный при предыдущем его подъеме (до двух подряд шагов) список индексов сохраняется только за тем элементом, за счет которого был совершен первый из двух подряд шагов снизу вверх, причем в этот список не войдет индекс поднявшегося элемента.

Замечание 3. Список индексов, после прерывания его передачи по уровням снизу вверх, условно предполагается хранимым вместе с тем элементом, которому он был передан в соответствии с замечанием 2. Очевидно, каждый элемент входного массива по такому способу войдет в какой-либо упорядоченный массив, притом в один и только в один массив данного вида.

Таким образом, на 4-м снизу уровне («1 уровень» на рис. 2 справа) имеем два элемента со списками индексов двух упорядоченных по возрастанию массивов. Элемент -7 образует упорядоченный числовой массив элементов {-7, -3, 5, 17}, ему соответствует список индексов (4,6,7,8). Аналогично, элемент -8 образует упорядоченный числовой массив элементов{-8, - 5, 11, 13}, соответствующий массиву список индексов (12, 15, 13, 14).

По списку индексов будут вызываться для слияния, сформированные упорядоченные массивы элементов. Слияние этих массивов выполняется попарно, с сохранением взаимного порядка расположения.

Данные два упорядоченные массива покрывают 8 из 16 элементов последовательности A. На 2-м уровне имеются незадействованные элементы, которые также хранят списки индексов, с помощью которых можно восстановить упорядоченные массивы с началом в данных элементах. Таким образом, на 2-м уровне имеем два упорядоченных массива {1, 7} и {-1, 8}, которые покрывают еще 4 элемента последовательности A. Итого, оказалось покрыто 12 из 16 элементов.

На нижнем уровне остались незадействованные элементы в массивах, которые образуют 4 массива, содержащих по одному элементу. Таким образом, покрыты еще 4 элемента последовательности. В результате покрыто 16 из 16 элементов, то есть все элементы последовательности A вошли в упорядоченные массивы.

Тем самым одновременно с формированием бинарного дерева окажутся сформированными все массивы для последующего слияния.

По изложенному построению упорядоченных для слияния массивов списки индексов в каждой ветви дерева формируются независимо друг от друга.

Описание алгоритма параллельного слияния на основе дерева выбора. Выполняется проход снизу вверх по дереву выбора, на каждом последовательном шаге прохода производится попарное параллельное слияние одновременно нескольких пар массивов.

На 1-м шаге (4 уровень на рис. 1) в слиянии участвуют 8 массивов ( |, при этом, мини-

И

мальная длина сливаемых массивов равна 1, максимальная - log, N = 4. В итоге, на 1-м шаге имеем 4 слитых (упорядоченных) массива, максимальная длина которых не превышает 2log2 N.

На 2-м шаге имеем четыре массива j длиной не более 21og2 N. В итоге, получим два

слитых массива, каждый длиной, 22 х log2 N.

На 3-м шаге имеем число массивов ( —|, длиной не более 22 х log 2 N. После слияния,

U3J

получим один массив, длина которого будет меньше либо равна 23 х log 2 N .

В рассматриваемом случае на последнем 3 -м шаге мы получили массив, в которой вошли все элементы последовательности. Длина этого массива N = 16, полученная оценка 23xlog 2N завышена: N < 23 log2 N.

По индукции на шаге к количество сливаемых массивов равно (1. Длина сливаемых

\ 2к )

массивов будет не превосходить 2к~1 log2 N, а длина затем слитого массива на этом шаге не превзойдет числа 2* log 2 N.

Для представления параллелизма используется модель неветвящейся параллельной программы [2, 3]. Каждое слияние пары массивов будет выполняться максимально параллельно по матрице сравнений (МС) [4], синхронно и взаимно независимо по всем парам сливаемых массивов на k -м шаге при каждом значении номера k .

Временная сложность параллельной сортировки по дереву выбора на основе параллельного слияния. Оценка построения дерева выбора: число шагов для построения равно log2 N, (последний шаг практически не нужен). Все шаги выполняются синхронно и взаимно независимо, то есть параллельно. Каждый шаг выполняется за время одного сравнения т . То есть,

наибольшее число процессоров на шаге r = — , время построения дерева (рис. 1) определяется из

2

f ^ равенства Т — = 4pg2 N — \т . Отсюда

V 2 у

(NЛ

Т

— < log2 Nz .

2- )

Попарное параллельное слияние выполняется по шагам с номерами к — 1,2,..., log2 N, на последнем из которых сортировка оказывается окончательно выполненной.

Предположим, на время рассуждения, что сливаемые массивы разбиты на 1 -м шаге на не

более чем N групп, в каждой группе они расположены по неубыванию длины, их длины в log2 N

группах на шаге 1 имеют значения: 1,2,..., г < log2 N.

При слиянии по МС в каждой паре количество процессоров не превосходит log^ N. Отсюда общее число процессоров на шаге 1 с учетом числа сливаемых пар, которое не больше половины от общего количества сливаемых массивов, удовлетворяет неравенству:

2 log2 N 2

На шаге 2 длины сливаемых массивов не более чем удваиваются по отношению к предыдущему шагу: 2,3,..., г < 21og2 N.

Количество сливаемых пар по отношению к предыдущему шагу сокращается вдвое. В результате число процессоров при каждом слиянии не больше 22 log^ N , а общее количество процессоров на шаге 2:

R < ^22log2TVх —= Mog2 TV. 4 log2 N

На шаге 3 длины не более чем удваиваются: 4,5,..., г < 41og2 N . Количество слияний

вдвое уменьшается, число процессоров при каждом слиянии не превосходит 24 log2 N. В результате число процессоров на шаге 3 удовлетворяет неравенству:

1 N 23 R<— 24 log2 N х-= 2Mog2 N = —N log2 N.

Г 52 1оё2# ^ 4

На шаге I в силу элементарной индукции длины сливаемых массивов возрастут не боль-

ше чем до 7! log 2 N , число слияний вдвое сократится. В результате общее число процессоров на данном шаге будет удовлетворять неравенству:

R < — (2г~У log, N х ——— или R < — 2г log 2 NJ< log, N. 21 У 52 log2TV 4 52 62

В итоге максимальное число процессоров удовлетворяет неравенству:

N2

R<—\og2N.

Время максимально параллельного слияния по отдельной МС составит т . На каждом шаге все слияния пар упорядоченных массивов выполняются параллельно, число шагов log n . Время рассматриваемой части алгоритма оценивается из соотношения:

T(R) = log2 Nx,

где R из (3).

С учетом оценки (2), а также последнего равенства, приходим к окончательной оценке временной сложности параллельного выполнения всей рассматриваемой сортировки:

T{R) < 21og2 Nx ,

где R из (3).

На основании изложенного имеет место

Теорема 1. Параллельная сортировка по дереву выбора с использованием рассматриваемых схем слияния может быть выполнена с временной сложностью Т(К) = О Cog2 ^ > или, более точно, с оценкой (4), где количество процессоров удовлетворяет неравенству (3).

Замечание 4. Перестановка сливаемых массивов использовалась на время рассуждения для получения оценки сверху. На самом деле сливаемые массивы не переставляются, сохраняют порядок взаимного расположения, так же, как их элементы.

Модификация передачи адреса элемента при формировании упорядоченного массива для слияния. Адреса элементов сливаемого массива целесообразно не передавать списком от нижнего уровня к верхнему, а напротив, собирать от них адреса на нижнем уровне справа налево, причем в последовательности шагов построения дерева выбора.

В общем случае на шаге к > 1 построения дерева, если в паре сравниваемых элементов

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

Замечание 4. В результате данной адресации, каждый элемент входного массива принадлежит одному и только одному сливаемому массиву. Поэтому он останется отображенным на дереве один раз. Все пути этого элемента с дерева исчезнут. Длина массива, в который он входит, или единичная, или, во всяком случае, не больше высоты (числа уровней) дерева log2 N.

Заключение. Синтезирован устойчивый алгоритм параллельной сортировки на основе бинарного дерева с использованием параллельного слияния по матрицам сравнений. Предложенный алгоритм совмещает свойства схем поиска на основе дерева и на основе слияния для получения единого параллельного алгоритма сортировки. Алгоритм имеет временную сложность T(R) < 2 log2 Nt , где оценка завышена по числу процессоров.

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

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

2 Солодовников, В. И. Верхние оценки сложности решения систем линейных уравнений // Теория сложности вычислений. - I: Записки научных семинаров. - ЛОМИ АН СССР, 1982. - Т. 118. -С. 159- 187.

3 Гаврилкевич, М. В. Эффективные алгоритмы решения задач линейной алгебры над полем из двух элементов / М. В Гаврилкевич, В. И. Солодовников // Обозрение прикладной и промышленной математики. - 1995. - № 3. - С. 399-439.

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

5 Вирт, Н. Алгоритмы и структуры данных / Н. Вирт. - М. : Мир, 1989. - 360 с.

УДК 681.3.06:681.323(519.6) ББК 32.81

Я. Е. Ромм, И. Н. Соколов

КОМПЬЮТЕРНАЯ ИДЕНТИФИКАЦИЯ ЗУБЦОВ R И Q ЭЛЕКТРОКАРДИОГРАММ НА ОСНОВЕ СОРТИРОВКИ С ДИАГНОСТИКОЙ РИТМА СЕРДЕЧНЫХ СОКРАЩЕНИЙ

Аннотация. Изложен алгоритм автоматической обработки цифровых электрокардиограмм на основе идентификации экстремальных особенностей биомедицинских сигналов при помощи алгоритмов сортировки, который позволяет идентифицировать зубцы R и Q, проанализировать ритм сердечных сокращений, диагностировать аритмию, брадикардию и тахикардию.

Ключевые слова. Автоматическая диагностика, компьютерная диагностика, обработка кардиограмм, сортировка, идентификация элементов, анализ ЭКГ, аритмия, тахикардия, бради-кардия.

Y. E. Romm, I. N. Sokolov

COMPUTER IDENTIFICATION OF ELECTROCARDIOGRAMS R AND Q BLIPS BASED ON SORTING WITH HEART SYSTOLES RHYTHM DIAGNOSTICS

Absrtact. The automatic processing algorithm of digital electrocardiograms jn the basis of the biomedical signals extreme features identification by means of algorithms of sorting is starting which