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

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

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

 

 

- 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) служит целям систематизации прин­

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

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

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

"горизонтального" и "вертикального" графиков их получения и ад.

Ещё одним практическим аспектом, определяющим сложность

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

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