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

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

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

2 50

ГЛ. 6. ПОРАЗРЯДНОЕ УПОРЯДОЧЕНИЕ

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

р { г ) = ( п 2 - ^ У . - С - » - * " ) ,

(6.26)

так как математическое ожидание числа значений при­ знака различных элементов, попавших в один интервал,

равно

п2~ш.

 

 

 

 

 

 

 

Элементы, значения признаков которых попали в один

интервал,

могут

быть инвертированы.

Среднее число

инверсий

г элементов

равно

г 1)/4.

Математиче­

ское

ожидание

общего

числа

инверсий

всего

массива

после проведения

k этапов

разделения

определится вы­

ражением

 

 

 

 

 

 

 

 

/ =

2** у

liLZLÜ

р { г )

=

2^ У

 

е

- ( п 2

>

 

S

4

 

 

г = 2 4 ( г - 2 ) !

 

(6.27)

 

 

 

 

 

 

 

 

 

которое для больших п можно заменить

приближенной

формулой

 

 

 

 

 

 

 

 

7 «

2* - ( " 2~km)*

У ( п 2 " f t m ) -

е ' ( п

Г к т ) =

 

*

(6.28)

 

 

 

i"=0

 

 

 

 

 

 

Другими словами, когда число интервалов становится соизмеримым с числом элементов массива, общее число инверсий оказывается пропорциональным п и упорядо­ чение методом вставки может быть проведено практиче­ ски за один просмотр массива. Учитывая сложность про­ цедуры упорядочения методом вставки, найденную ра­ нее (см. (3.58)), получим следующее выражение для сложности такой комбинированной процедуры:

T = (6Tn + Tn +

2Ts) nk +

ßTH2mk

+

 

+ ( 2 Т А +

2 Т Х + Т „ 4 - 2 Т П + ЗТИ )

4-

4- ( Г

А

4- ТК 4- Т

+ Тп

+ 2 Тп) —^-.

(6.29)

§ 6.3. УПОРЯДОЧЕНИЕ ПО ГРУППЕ РАЗРЯДОВ

251

Минимум этого выражения по k легко может быть най­ ден для конкретных параметров процедуры. Обозначив для краткости через ТИ Т2, ТГ и Т4 соответствующие ко­ эффициенты выражения (6.29), получим

Т = Txnk

+

Т 2

2- k + Т3 (п - 1) + Г 4 ^

(6.30)

и соответственно

 

 

 

 

 

 

Ц- = T 1 n

+

T 2

2 m

тТ4~-2~km\n2

= 0,

(6.31)

откуда легко определить

оптимальное

значение

k.

В некоторых

случаях

оказывается

удобным

выбрать

размер группы разрядов, по которой проводится разде­ ление, таким образом, чтобы предельно сократить число этапов процедуры. Рассмотрим случай, когда число эта­ пов сокращено до двух (использовать только один этап разделения нецелесообразно ввиду того, что размеры вспомогательной таблицы в этом случае окажутся срав­

нимыми с размерами

всего

массива). Из (6.28)| следует,

что при этом

log2 n,

так как только в этом слу­

чае число интервалов станет соизмеримым с числом эле­

ментов массива. В связи с необходимостью

задавать

целое число m, получаем

следующие

интервалы

возмож-

1 ,

1

< m

1 .

. 1

ных значений m : -^~1°ё2п

 

< -£-log2 n + — П р и

округлении до ближайшего целого я~- log2 n— 1 < m <

< ~Y log8 n —при выделении целой части. Объемы вспо­ могательной таблицы для этих случаев будут лежать в

интервалах

" у ^ - ^ - < s < ] / 2 я и ^/"~^~ < s <

соответственно, а степень неупорядоченности массива, устраняемая заключительным этапом с использованием

метода вставки, — в интервалах ~ >

/ > —игг > / >

— ,

2

8

4

Таким образом, объем вспомогательной таблицы для

252 ГЛ. 6. ПОРАЗРЯДНОЕ УПОРЯДОЧЕНИЕ

эффективного использования метода вставки на заклю­

чительном этапе процедуры должен быть порядка У п. Возможно построение оператора разделения подмас­

сива на взаимно упорядоченные части по группе разря­ дов с использованием так называемого циклического обмена. В этом случае результирующий подмассив фор­ мируется на позициях исходного массива. Для выполне­ ния оператора необходимы два вспомогательных масси­ в а — массив границ взаимно упорядоченных групп и мас­ сив позиций очередных непроверенных элементов в каж­ дой из групп. Начальные состояния этих вспомогатель­ ных массивов формируются по результатам первого просмотра исходного подмассива и сбора информации о составе его элементов, аналогично формированию мас­ сива С в рассмотренном выше операторе. Пусть в масси­ ве границ зафиксированы позиции последних элементов в каждой из групп, а в массиве текущих непроверенных элементов зафиксированы позиции начальных элементов соответствующих групп, что свидетельствует об отсутст­ вии проверенных элементов в исходном массиве. Затем проводится второй просмотр подмассива с последователь­ ным распределением элементов по соответствующим вза­ имно упорядоченным частям. Порядок просмотра эле­ ментов следующий. Первым рассматривается элемент с последней позиции первой части подмассива. По значе­ нию выделенной группы разрядов для этого элемента определяется номер взаимно упорядоченной части мас­ сива, где он должен оказаться. Очередной непроверенный элемент этой части забирается для рассмотрения на сле­ дующем шаге, а на освободившуюся позицию записы­ вается данный элемент и увеличивается на единицу номер очередного непроверенного элемента в списке. Затем аналогичным образом рассматривается новый элемент. Такое последовательное рассмотрение продолжается до тех пор, пока очередной элемент не попадет на свобод­ ную позицию в конце первой части массива, откуда был взят для анализа самый первый элемент. Такая ситуация может возникнуть лишь тогда, когда все элементы пер­ вой части окажутся просмотренными. Для продолжения анализа следует просмотреть последние позиции после­ довательно расположенных частей подмассива, найти на такой позиции еще не проверенный элемент и продол-

§ 6.3. УПОРЯДОЧЕНИЕ ПО ГРУППЕ РАЗРЯДОВ

253

Рис. 6.4. Блок-схема оператора разделения с построением цепочки.

254

ГЛ. 6. ПОРАЗРЯДНОЕ УПОРЯДОЧЕНИЕ

жить анализ в последовательности, описанной выше. Если же такой элемент не будет обнаружен даже в последней части подмассива, то это будет свидетельствовать о за­ вершении разделения, так как непроверенных элементов

вподмассиве уже не осталось.

Сиспользованием данного оператора можно постро­ ить только процедуры упорядочения по группе разрядов,

начинающиеся с

анализа старших разрядов признака,

так как оператор

не

сохраняет

порядок расположения

элементов в каждой

из взаимно

упорядоченных частей.

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

Рассмотрим второй тип оператора, обеспечивающий разделение подмассива по заданной группе разрядов

признака,— оператор формирования

упорядоченной це­

почки элементов.

 

 

 

Пусть

дан исходный

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

массив

А [ і н : і к ] .

Однако теперь

каждый

его элемент

должен

быть дополнен адресом связи, указывающим позицию следующего элемента цепочки (массив АС [/„ : J] ) . Для формирования цепочек нужны также вспомогательные

массивы, имеющие s

элементов, в

которых

должны раз­

мещаться

адреса текущего элемента /-й цепочки Т[1

: s]

и адреса

.начального

элемента /-й

цепочки

H [ l :s].

При

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

Блок-схема оператора построения цепочки приведена на рис. 6.4. Порядок просмотра элементов оператором задается предварительно образованной цепочкой, причем начальный адрес первого элемента исходной цепочки предполагается расположенным >в А0 . Порядок остальных элементов исходной цепочки задают адреса связи. В ре-

§ е.з. УПОРЯДОЧЕНИЕ ПО ГРУППЕ РАЗРЯДОВ

255

зультате выполнения оператора формируется новая це­ почка, начало которой также записывается в Ао, опреде­ ляющая порядок следования элементов с учетом про­ смотренной группы разрядов признака. Подготовитель­ ный этап процедуры обеспечивает очищение вспомога­ тельных массивов H и Т в циклическом режиме (блоки /, 2, 3 и 4). Затем производится просмотр исходного массива в порядке, заданном исходной цепочкой. Блок 5 определяет начало цепочки, блок 6 — ее конец, а блок —

обеспечивает переход к рассмотрению следующего элемента цепочки. В блоке 7 определяется значение выделенной группы разрядов признака у текущего эле­ мента, а в блоке <5 определяется, были ли еще элементы с таким же значением выделенной группы разрядов, или данный элемент первый и должен быть назначен на­ чальным элементом соответствующей у'-й цепочки. Если данный элемент первый, то блок 9 проводит формиро­ вание начала соответствующей цепочки, а если данный элемент не первый, то блок 10 включает его в уже су­ ществующую цепочку.

По окончании просмотра всех элементов массива про­

водится

объединение

отдельных цепочек в

одну

общую

цепочку. Блоки

12, 13 и 14 осуществляют

поиск

первой непустой цепочки для формирования начала объе­ диненной цепочки. Конец рассмотренной цепочки фикси­

руется специальным

индексом

р.

Блоки 16, 17, 18 и

19

проводят

последовательный

просмотр

всех

цепочек

и

осуществляют

подключение

каждой

новой

непустой

цепочки к последнему элементу ранее

рассмотренной

цепочки.

 

 

 

 

 

 

 

 

 

 

 

Сложность

данного

оператора

в

предположениях,

принятых ранее,

равна

 

 

 

 

 

 

 

 

 

 

Т=*9Тя2"+(Т,

 

+ 6Ти)п

 

 

(6.32)

при условии, что пустых цепочек нет.

 

 

 

 

 

Процедура

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

с

использованием

данного

оператора

должна строиться

по принципу

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

с младших

разрядов признака. Это объясняется

тем, что

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

256 ГЛ. 6. ПОРАЗРЯДНОЕ УПОРЯДОЧЕНИЕ

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

Данная процедура также может быть использована в комбинации с методом вставки, как и ранее рассмот­ ренная процедура, не использующая цепочку.

Данная процедура по сравнению с ранее рассмотрен­ ной требует значительно большего дополнительного объе­ ма памяти, в основном для формирования цепочки из элементов массива.

Общая сложность процедуры для случая модерниза­ ции основного оператора на первом этапе в принятых

ранее

предположениях

 

Т =

9 Ти

2 - -L + (Т, +

6 Ти ) n -L + (3 Та + Тп) п, (6.33)

 

 

m

m

что может дать значительный выигрыш по сравнению с ранее описанной процедурой лишь при относительно больших значениях Тп и Ts. Этот выигрыш обусловлен однократным просмотром массива на каждом этапе и однократной пересылкой элементов на завершающем этапе.

ГЛАВА 7

МЕТОДЫ УПОРЯДОЧЕНИЯ ИНФОРМАЦИИ ВО ВНЕШНИХ ЗУ

§ 7.1. Специфические особенности внешнего

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

Массивы, размеры которых превышают размер опе­ ративной памяти, приходится размещать на внешних но­ сителях.

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

Наиболее существенными с точки зрения их влияния на алгоритм упорядочения являются следующие особен­ ности магнитной ленты:

1) Обмен информацией между магнитной лентой и оперативной памятью носит групповой характер. Это зна­ чит, что процедура упорядочения информации на магнит­ ных лентах должна строиться в виде чередующихся участков группового считывания с магнитных лент в ОЗУ, обработки информации в пределах ОЗУ и группо­ вой записи из ОЗУ на магнитные ленты.

2) Затраты времени на обращение к магнитной ленте складываются из поиска зоны, где размещается требуе­ мая информация, с остановкой ленты в начале зоны, раз-

9 Л. А. Папернов, В. Я. Подымет

258 ГЛ. 7. УПОРЯДОЧЕНИЕ ИНФОРМАЦИИ ВО ВНЕШНИХ ЗУ

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

а) в тех случаях, когда выбор одной из нескольких зон для обращения к ней определяется в ходе выполне­ ния программы упорядочения, все эти зоны размеща­ лись на разных лентах; это даст возможность организо­ вать поиск зон заблаговременно, а не в момент выявле­ ния необходимости обращения к ним;

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

3) В существующих магнитных лентах запись инфор­ мации осуществляется при перемещении их в каком-либо одном направлении.

В некоторых разновидностях магнитных лент (так называемых односторонних) считывание допускается только в том же направлении, в котором осуществля­ лась запись. Магнитные ленты других типов (двухсто­ ронние) допускают считывание при перемещении в лю­ бых направлениях.

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

Алгоритм упорядочения с использованием двухсторон­ них лент должен предусматривать возможность обработ­ ки в ОЗУ промежуточной информации в порядке, обрат-

§ 7.2. ОСНОВНЫЕ ОПЕРАТОРЫ

259

ном тому, в котором она переписывалась из ОЗУ на маг­ нитную ленту.

4) В современных цифровых машинах, работающих в мультипрограммном режиме, возможно совмещение во времени 'выполнения основной программы с обменом между ОЗУ и одной или даже несколькими магнитными лентами. Поэтому желательно, чтобы алгоритм упорядо­ чения предоставлял возможность обращаться к ленте не тогда, когда без выполнения запроса невозможно про­ должение программы, а заблаговременно, чтобы ввод или вывод информации можно было совместить во вре­ мени с обработкой другой информации.

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

§ 7.2. Основные операторы процедуры внешнего упорядочения слиянием

7.2.1. Состав операторов. Основным методом упоря­ дочения информации на магнитных лентах, удовлетво­ ряющим указанным выше требованиям, является метод слияния упорядоченных участков массива.

Предполагается,

что

исходный

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

массив размещается

чаще

всего

на

одной

ленте или,

если он не умещается на

одной

ленте, на

нескольких

лентах.

 

 

 

 

 

Массив, упорядоченный в результате выполнения со­ ответствующей процедуры, должен быть записан на одну или несколько лент.

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

9*

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