книги из ГПНТБ / Зубов В.С. Математическое обеспечение цифровых вычислительных машин и систем учеб. пособие
.pdf
|
|
- 7 0 - |
|
бразительного - |
равно п , но сложность их |
зависит от типа |
|
используемого списка. |
|
||
|
При многоэтапной реализации отобразительного метода чи |
||
сло |
разрядов управляющего слова, анализируемых на одном эта |
||
пе, |
определяется |
величиной Е(&££ Д ), где |
R - число элемен- |
тов |
используемого вектора значений, а Е |
означает функцию |
|
получения целой |
части от значения содержимого скобок. |
||
|
Число этапов при упорядочении отобразительным алгорит |
мом внутреннего упорядочения последовательности (число ото
бражений одной |
записи) |
определится как {м/Е(& р2 |
где N - |
|
число двоичных |
разрядов |
в управлявшем слове, а с к о б к и J |
||
означают получение |
целого, не меньшего содержимого в скоб |
|||
ках и ближайшего к |
нему. Графики на р и с .6 наглядно |
иллюст- |
рируют качественно различный характер оценок числа действий для данного алгоритма и оптимальных сопоставительных.
Доказано, что в случае, когда значения приведённого
управляющего слова представляют случайные коды с равномер ным законом распределения (такой закон распределения явля ется приближённой моделью для множества реальных ситуап упорядочения), средняя длина его старшей части, позволяющей
отличить одну запись от всех остальных, равна 1!о(£г П + /,533
разрядам [ а] . Поэтому приближёян_я оценка среднего числа
отображений одной записи в указанном случае для отобразите-
льных алгоритмов взаимного упорядочения подпоследовательно
стей |
равна |
I /ы > ё о а п + f |
, 3 3 |
5 |
t h e n |
i p /sp. / |
N __ l |
||
|
|
- |
* |
|
l |
Е(&&г п ) |
J |
U(&>p2 n) ) ’ |
|
где |
N- число двоичных разрядов |
в управляющем слове. |
|||||||
Для наглядности |
нарис. 7 |
приведены соответствующие |
графики. |
||||||
|
Итак, |
количество действий, |
а следовательно, |
и временные |
-71-
Число ' сопоставлений
или отображений в
расчёте на одну запись
15
|
|
|
сопоставительный метод дай Л= 8192 |
|||||||
|
t - |
|
|
|
|
|
|
|
|
|
/о |
|
|
|
сопоставительный метод даш Г?=1024 |
||||||
|
|
|
|
сопоставительный метод дои П=256 |
||||||
|
|
|
|
I |
I |
|
|
|
|
|
-5 |
|
|
|
|
1 |
отобразительный метод |
||||
|
|
|
|
|
||||||
|
|
|
|
|
-------------1 |
для |
|
40 |
||
|
|
|
|
|
|
|
||||
отобразительный метод для /v=b i |
Метод для |
N=4и |
||||||||
I |
г |
з |
5 |
6 |
7 |
3 |
to |
It |
12 |
13 |
2 |
4 |
в |
16 32. |
6* |
tea |
256 |
512 1024 |
2048 |
4026 3192 R |
Рис.6 . Зависимость от параметров упорядочения числа сопоставлений при оптимальном сопоставительном упо рядочении и числа отображений при упорядочении о т о - бразительным алгоритмом внутреннего упорядочения последовательности.
Число сопоставлений |
или |
отображений в расчёте на одну запись |
|
J L I ____________ |
______ _____________________ |
Тсопоставительный метод для п = 8192Г
__4е ____________________ _______________
ю |
< |
сопоставительный метод для |
п =“ 1024 * |
|||||||
I |
i J |
|
|
|
|
|
|
|
|
|
|
U L |
|
отобразительный |
метод для всех |
|
|||||
|
I 1 |
|
|
s |
|
|
|
/V>14,333 |
|
|
|
|
|
|
|
|
|
|
|
|
|
отобразительный--------- п— г* |
|
|
|
|
|
|
||||
|
метод для /V =8 |
|
9 |
/ о |
и |
>г у |
|
|||
|
|
|
|
|
|
|
||||
|
16 |
32 |
64 |
/23 |
256 |
5/2 |
/024 |
2048 |
4096 8/92 |
# |
Р и с .7 . Оценки числа отображений при оптимальном упорядочении набора из 8192 записей и числа сопо ставлений при оптималгаом сопоставительном упоря дочения того же набора
- 72-
затраты при упорядочении по сопоставительному и отобрази-
тельному методам по разному зависят от входных параметров упорядочения, описывающих упорядочиваемые данные и ресурсы памяти. Характер рассмотренных зависимостей говорит о том,
что независимо отвозможных изменений сложности реализации вышеуказанных основных действий по упорядочению всегда найдутся такие значения параметров, что более производи тельным окажется произвольно выбранный нами из двух рас сматриваемых метод. Иначе говоря, в многомерном простран стве параметров упорядочения имеется сечение, разделящее область, где наиболее быстродействующим является отобрази-
тельный метод (в оптимальной его реализации), и область,
где наиболее быстродействующим является сопоставительный метод (в оптимальной его реализации). Практический интерес *
представляет положение этого сечения по отношению к облас ти наиболее вероятных параметров упорядочения. Выяснение этого положения должно производиться при рассмотрении ре ализации алгоритмов упорядочения на машинно-ориентирован ном уровне. При этом достаточно рассмотреть временные ха рактеристики сравнительно небольших по объёму программных блоков, реализующих основные действия по упорядочению. Сре днее число последних оценено с приемлемой для практических целей точностью для всех известных фундаментальных алгорит мов упорядочения.
§6. Ассоциативные алгоритмы упорядочения
Впроцессе упорядочения, как явствует из предыдущего
\
рассмотрения, возникают ассоциации (подпоследовательности)
записей, которые обычно представлены списком типа А,Б или В. Эти ассоциации имеют преходящее значение, являясь мате
- 7 3 -
риалом для образования новых ассоциаций, а в конечном ито ге - правильной последовательности всех записей.
Алгоритмы, в которых подпоследовательности записей
получают явное выражение с помощью средств ассоциативного
программирования (например, списков типа Б и В ), будем
именовать ассоциативными. Для них характерны следующие особенности:
а) Положение в памяти записей исходного набора оста ётся неизменным, поскольку получаемая правильная последо
вательность записей задана не расположением записей, а
иными средствами. Иногда факт существования двух последо вательностей записей - правЛшной последовательности и списка типа А, представляющего исходный набор записей,-
оказывается существенным для пользователя.
б) Затраты на формирование последовательности записей
в процессе упорядочения, а, следовательно, и общие затраты
времени на упорядочение не зависят от размеров записей, в
отличив от случая, когда их последовательность представле на списком типа А.
в) Ассоциативные алгоритмы позволяют более гибко испо
льзовать память для размещения набора записей, |
поскольку |
||
для их применения не имеет особого значения то , |
представля |
||
ет набор записей единый список |
типа А или нет. |
|
|
г) В силу того, что |
размер |
записей обычно |
значительно |
превышает размер адреса |
в машинной команде, применение ас |
социативного программирования позволяет при заданных ресур сах памяти, если это требуется, образовывать большее число правильных последовательностей, построенных для различных управляющих слов, по сравнению с использованием неассоциа
- 7 4 -
тивных алгоритмов.
Промежуточные последовательности записей при упорядо
чении ассоциативными алгоритмами представлены ассоциатив
ными структурами |
данных, |
которые |
могут |
иметь самый разно |
||
образный вид (см . |
р и с.8 ). |
|
|
|
|
|
В раде случаев |
оказывается удобным |
отдельное |
располо |
|||
жение собственной |
и |
служебной информации |
(адресов |
связи и |
||
п р .) . Такое расположение |
очевидно |
для оглавления, |
но и ад |
реса связи цепных списков могут быть выделены в отдельный участок памяти. При этом принадлежность какого-либо адреса связи определённой записи определяется подразумеваемым со ответствием (например, по номеру позиции записи и номеру позиции, занимаемой адресом связи в выделенном участке) или прямым указанием адреса записи в элементе ассоциативной структуры, помимо уже имеющегося в нём адреса связи.
В некоторых случаях использования ассоциативных алго ритмов может потребоваться переход от ассоциативного спосо ба задания правильной последовательности к её заданию спис ком типа А. Если, например, она предназначается для информа ционного поиска, то неудобным является её представление од носвязным цепным списком, исключающее прямой доступ к отде льным её записям; кроме того, в несовершенных ЭВМ не может осуществляться передача данных между уровнями памяти в по следовательности, заданной цепным списком или. оглавлением;
наконец, пользователь может попросту не владеть навыками ассоциативного программирования, необходимыми для последую щего использования в его задаче такой последовательности.
Изменение способа её выражения может быть выполнено с помощью операторов, рассмотренных в § 6 гл .1 .
- 7 5 -
i'ОДСПИСОК, о
соответст-/-
вующий на-/ чальному / внутренне/ ,
упорядо- |
| р Л Г ?~ 1 Т Т 1 y o l - - - Г7Л |
|
сегменту |
и с х о д н ы й |
н а б о р |
|
меньшие адреса |
позиций |
|
подсписок, |
|
соответст |
|
вующий по |
|
следнему |
|
внутренне |
П П Гз~| |
порядоче- |
нному |
|
з а п и о е й сегменту |
|
большие |
адреса |
В) с п и с о к |
|
ф и к с а т о р о в н а ч а л |
(типа А) |
|||
\ф и к с а т о р \ |
- \ФИКСАТОр\- + ~ |
~ + \<РИКСАТО)>\- |
- \Ч>ИКСАТОР\ |
|||
c g i; |
d |
5 |
5 |
L t?-J-1 |
||
4dZ ZiO - 1 |
||||||
|
d ll!;О - ] |
|||||
ЖГ~ПГ й |
« с ж з З |
* Г аэГ~М * |
ж Г 17 |
|||
цепные списки |
|
записей, |
соответствующие внутренне |
|||
|
|
|
упорядоченным сегментам |
|
||
Z) |
|
из двух финсаторов |
|
|||
Список типа А |
|
Рис.8. Примеры промежуточных ассоциативных структур: |
|
|
а) - при упорядочении по алгоритму В.Н.Фалька; б ),в ) |
- |
|
при упорядочении ассоциативными алгоритмами прямого, |
а |
|
г) - естественного слияния; х означает признак конца |
|
|
подсписка; и |
- признак конца цепного списка. Адреса |
|
связи показаны |
стрелками, числа означают коды ключей |
|
записей. |
|
|
-7 6 -
§7. Классификация алгоритмов упорядочения данных Классификация представляет собой научную систематизацию
алгоритмов и имеет как теоретическое, так и практическое зна
чение. Классификация алгоритмов упорядочения представляет |
|
сложную проблему, как и всякая классификация реальных объек |
|
тов. Существуют десятки алгоритмов упорядочения. В принципе |
|
их количество может быть, например, удвоено. Однако |
количе |
ство уже описанных алгоритмов не соответствует соображениям |
|
практической необходимости, поскольку лишь некоторые |
из-них |
представляют композиции наиболее оптимальных .для выбранного |
|
принципа упорядочения операторов, а сами принципы |
далеко |
не равноценны. Процесс классификации требует выявления общ |
ности и различий алгоритмов упорядочения, я начинать его сле дует с различий наиболее абстрактного плана: в первую очередь алгоритмы следует различать по методу упорядочения, сопоста вительному или отобразительному. Тем самым выделяются 2 вет ви алгоритмов, для каждой из которых характерны специфические
дейотвия, лежащие в основе упорядочения. Эта специфика опре деляет качественно различный характер зависимости числа ос новных действий в алгоритмах от параметров упорядочения.
Наиболее весомыми различиями логической схемы алгоритмов
в каждой ветви являются различия по характеру исходных и воз никающих в процессе упорядочения (промежуточных) структур
упорядочиваемых данных, различия динамйеи этих структур. В |
|
|
самой общей формулировке по этому принципу алгоритмы могут |
|
|
быть разделены на группу алгоритмов, использующих структуры, |
|
|
состоящие |
из многих подпоследовательностей, число которых |
|
монотонно |
сокращается или возрастает (алгоритмы упорядоче |
|
ния слиянием, алгоритмы 'Хиббарда, Шелла и т . д . ) , и группу |
_ |
- 7 7 -
алгоритмов, промежуточные структуры данных в которых нераз виты (алгоритмы упорядочения вставкой, обменом смежных запи сей и т . д . )• Рациональное усложнение используемых структур данных, приводящее к появлению иерархии в структуре, окупа ется увеличением быстродействия алгоритмов, сложность'которых
увеличивается. Среди сопоставительных алгоритмов |
простых по |
|
логике |
близкой ". оптимальной характеристикой числа выполня |
емых дейотвий обладают лишь алгоритмы включения записей в ди хотомическое дерево, иерархическое распределение элементов данных при работе которых обусловлено салим характером дре
весной упорядоченности.
Как было показано выше, трансформация развитых промежу
точных структур данных в процессе упорядочения монет быть изображена т .н . деревом трансформаций. Двоякая возможная ори ентация ребер дерева трансформации отражает .два диаметрально противоположных принципа преобразования промежуточных струк
тур в алгоритмах, основывающихся на использовании либо внут
ренней, либо взаимной упорядоченности подпоследовательностей.
В качестве дополнительных аспектов, которые уточняют ло
гическую схему алгоритма, можно рассматривать:
- йээ;Ефцциент ветвления дерева трансформации, отражающий
степень нарастания числа взаимно упорядоченных подпоследова тельностей или сокращения числа внутренне упорядоченных;
- |
ф о ту дерева £ 5] , |
которая находится в зависимости |
от |
того, |
сколь близкие по |
размеру сегменты объединяются [ б ] |
, |
иля сколь близкие т размеру сегменты получаются при разде лении;
- временной график слияния или разделения сегментов; в
одних алгоритмах частной задачей каждого момента их работа
- 7 8 -
являетоя максимально возможное упорядочение в одной из час тей последовательности записей ( " вертикальные" алгоритмы;
название обусловлено "ростом" отдельных поддеревьев или да же отдельных "веток"-путей в дереве трансформации, динами чески отображающем процесс упорядочения), в других алгорит мах степень упорядоченности поддерживается примерно одина ковой во всех частях общей последовательности записей ( "го ризонтальные" алгоритмы; в отображающем их дереве трансфор мации происходит равномерный рост всех путей, начинающихся от листьев или от корня).
После рассмотрения "направленности" дерева трансформа ции, его коэффициента ветвления и формы, временного графи ка "построения"дерева логическая схема алгоритма на "макро уровне" получает завершённость, чем и объясняется начальное положение указанных критериев в векторе критериев, использу емых при классификации алгоритмов упорядочения.
"Качество" алгоритма определяется не только общей схе мой его организации, но и характеристиками основных опера торов, используемых в её рамках. Например, насчитывается несколько операторов объединения внутренне упорядоченных сегментов, имеющих разную производительность, сложность и предъявляющих различные требова ия к объёму дополнительной памяти, используемой при упорядочении. Так, оператор объе динения, используемый в р -операторном алгоритме, рекурсив ным образом использует возможность замены акта объединения исходных сегментов 3 актами объединения их половин для све дения в конечном итоге объединения к манипуляциям с отдель ными записями. Такое объединение само может быть представле но троичным деревом, число ярусов в котором определяется
- 7 9 -
размером объединяемых сегментов. Следовательно, сложность объединения в расчёте на одну запись возрастает с ростом раз мера сегментов, в то время как в рассмотренном нами в § 3
главы П операторе она оотаётся практически постоянной. Та ким образом, экономия используемой памяти обусловила сниже ние производительности.
Переходя к следующему уровню детализации алгоритмов,
отметим, что.по существу одни и те же алгоритмы могут раз личаться лишь способом выражения последовательности записей в целом и отдельных её сегментов, следствием чего является различная техническая реализация перенумераций записей и переадресаций - для сопоставительных алгоритмов - и различ ное представление вектора значений, различная реализация переадресаций и включений записей в промежуточную структуру
- для отобразительных алгоритмов. ■
Построенное на основе рассмотренных Критериев классифи кационное дерево (рис*. 9) служит целям систематизации прин
ципиально простых, фундаментальных алгоритмов упорядочения.
В реальных алгоритмах упорядочения может выигрышно сочетать ся использование сопоставительного и отобразительного метода,
взаимного и внутреннего упорядочения последовательностей,
"горизонтального" и "вертикального" графиков их получения и ад.
Ещё одним практическим аспектом, определяющим сложность
алгоритмов упорядочения и ограничивающим свободу выбора используемых структур данных, операторов и списков, является уровень памяти, используемой для размещения данных в процес се упорядочения» .Как известно, для устройств внешней памяти в той или иной степени характерным является использование последовательного доступа к данным. Поэтому время выборки