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

книги из ГПНТБ / Зубов В.С. Математическое обеспечение цифровых вычислительных машин и систем учеб. пособие

.pdf
Скачиваний:
4
Добавлен:
23.10.2023
Размер:
4.93 Mб
Скачать

- 6 0 -

чем в предыдущем случае. Он выполняется в 2 этапа, первым

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

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

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

В случае использования списка типа А отображение за­ писи на вектор позволяет извлечь номер её позиция в прави­ льной последовательности из соответствующего элемента век­ тора. При этом содержимое последнего увеличивается на I ,

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

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

- 6 f -

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

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

рения.

В случае использования списка типа Б вышеописанная

процедура выполняется лишь с тем отличием, что вычисляют­

ся

номера мест

не

самих записей, а

номера мест их адресов

в

оглавлении, и

в

обменах участвуют

элементы оглавления.

Обращение к записям для их размещения в правильной после­ довательности происходит через оглат пение. Положение за­ писей в памяти остаётся неизменным.

Ш. Отобразительное упорядочение, результатом которо-

го является разбросанная таблица. При неограниченных ре­

сурсах оперативной памяти записи из любого набора записей

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

в котором группы позиций,

занятых записями,

перемежаются

с пустыми позициями. Если

значения управляющих слов кратны,

т .е . могут повторяться в

нескольких

записях,

но максималь­

ная кратность известна, разбросанная

таблица

выполняется

как совокупность укрупненных позиций- ( надпозиций) . каждая

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

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

зиция. Дрд ограничении ресурсов оперативной памяти для по- <•

лучения номера позиции может быть использована старшая

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

заш оей, может оказаться одинаковым. Такие записи также

именуются синонимами. В частности, синонимами оказываются

заш ей с полностью одинаковыми управляющими словами. Для

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

бует, чтобы число позиций было не меньше числа размещаемых

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

Разбросанные таблицы удобны для представления дйцрмя-

ческих правильных последовательностей.(Сравни с дихотомиче­ скими деревьями).

1У. Представление элементов вектора. Характер элемен­

тов вектора значений, *с одной стороны, определяется типом

используемого списка, а с другой стороны, характером расп­

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

а) Имеется взаимно однозначное соответствие между

значениями управляющих слов записей и их

номерами в

прави­

льной последовательности. Список записей

- типа А,

записи

4'

 

 

- 6 3 -

имеют одинаковый размер,

В этом случае полный адрес записи является линейной

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

Для 1-й записи исходного списка определяется её номер в

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

позиции списка, определяется её номер в правильной после­ довательности и происходит обмен позициями между соответ­ ствующими записями и т . д . , вплоть до тех пор, пока вычис­ ленный номер не совпадёт с номером позиции, где уже нахо­ дится запись, т .е . с единицей. Аналогичные действия выпол­ няются затем для 2 -й позиции списка и т . д . , вплоть до предпоследней (включительно). Данный алгоритм не треоует использования резерва памяти, но во: можен также вариант с формированием правильной последовательности на свобод- .

ном поле

памяти без изменения исходного описка.

б)

Записи представляют собой простые коды, значения

которых

не повторяются. Список записей - типа А.

Каждой записи приводится в соответствие элемент век­

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

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

радное место списка, представляющего правильную последова­ тельность.

в) Управляющее слово является лишь частью записи, при­

чём нет взаимно однозначного соответствия между значением управляющего слова записи и номером записи в правильной по­

следовательности. Значения управляющих слов не повторяются.

Список записей - типа А.

Элементом вектора является, как и в предыдущем случае,

двоичный разряд, но требуется дополнительный просмотр спис­

ка записей для распределения мест в правильной последовате­

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

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

предварительное распределение мест и дополнительная память,

хранящая информацию о результатах этого распределения.

г) Значения управляющих слов, возможно, повторяются,

и нет взаимно однозначного соответствия между значением уп-

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

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

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

когда число возможных значений управляющего слова превыше-

- 6 5 -

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

Такой способ деления во многих случаях уменьшает число фра­

гментов.

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

6 6 -

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

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

Возможен и другой путь получения правильной последо­ вательности отображением записей, при котором использование фрагментов начинается с самого младшего по старшинству.

Упорядоченность по его значению, возникающая после I этапа,

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

производится в процессе, просмотра их по ранее полученной

о

-6 7 -

последовательности записей. Дальнейшие этапы, имение мес­

то, если фрагментов более,чем два, протекают стереотипно с

рассмотренным. Процесс такого упорядочения отображением за­

т е е й иллюстрируется графом, изображённым на рис.5.

Алгоритмы упорядочения рассмотренного рода будем име­

новать отобразительными алгоритмами внутреннего упорядоче­

ния последовательности.

Подпоследовательности , внутренне упорядоченные по совокупности -2) младших фрагментов

управляющего слова

 

 

зашей с яаименьзаписи с промезаписи с наябо-

 

 

шим значением

 

жуточным значедьшим значением

 

 

(A r-I)-ro

фрагмента нием

(/г -1 )-го

(к- D-г о фразы ен-

 

 

 

 

 

фрагыента

 

 

та

 

 

о —о —о —о —о — — О—О—0 0

— о —*—о — о —*-о-—-о

 

 

l v 2v,3

4 * / \

 

6 X 7

8 / 9

10

/ I I

12 1 3 /1 4

отображе­

 

 

 

 

 

 

 

 

ние

запи­

 

 

 

 

 

 

 

 

сей

по

 

 

 

 

 

 

 

 

значению

 

 

 

 

 

 

 

 

к -г о

фра­

 

 

 

 

 

 

 

 

гмента

о —о —о —о —о

 

 

 

 

 

ей с наибо-

 

 

записи о

напмень-У захшеи-------------с---—проме- заш*

 

 

шим значением

'

жуточяыы значеш - * лышм значением

 

 

/Г-го фрагмента

t

ем ff- го фрагмента//г-го фрагмента

 

 

с в я з ы в а н и е

п о д с п и с к о в

 

 

в порядке возрастания

значений /f -г о

фрагмента

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

У1. Разрядное упорядочение. Разрядные алгоритмы явля­

ются частным случаем отобразительных алгоритмов. Они выде­

ляются в особую группу ввиду особенностей их реализации,

определяемых частным характером задачи каждого этапа упоря­

- 6 8 -

дочения: соответственно двум возможным значениям двоичного разряда в результате выполнения этапа возникают только две ассоциации записей. Тем самым для каждой просматриваемой записи возможны 2 исхода: попадание в I-ю или во 2-ю ассо­ циацию. Это сближает разрядные алгоритмы с сопоставитель­ ными алгоритмами и позволяет осуществить распределение по­ зиций между записями в процессе единственного на каждый анализируемый разряд просмотра путём перенумерации запи­ сей обменом. Используемый при этом оператор разделения от­ личается от оператора, описанного в §3 гл.П, лишь принци­ пом отнесения записей к одному из результатных магазинов:

согласно значению анализируемого двоичного разряда.

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

§ 5 . Сравнение отобразительного и сопоставительного методов упорядочения

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

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

о

_ 69-

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

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

ляя) •

Опыт показывает, что в практике использования алго­

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

Сначала сравним сопоставительный метод и одноэтапную

реализацию отобразительного метода. Средняя оценка числа сопоставлений при оптимальной организации сопоставительно­

го

метода, как

уже указывалось,

приблизительно равна nlogji,

где

гс&- число

записей исходного

списка. Число отображений

записей при одноэтапном отобразительном упорядочении равно

П . Это свидетельствует о более высокой информационной

ценности отображения записи по сравнению с сопоставлением.

'Если правильная последовательность простая, то одним отоб­

ражением снимается энтропия, равная по величине

h>g-2ti,./ n ~ n k>§2n/ n ~ бит. Число включений записей

в новую последовательность для сопоставительного метода на­ ходится в некоторой пропорции к величине

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