Файл: Зубов В.С. Математическое обеспечение цифровых вычислительных машин и систем учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 26.07.2024

Просмотров: 93

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

-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 вет­ ви алгоритмов, для каждой из которых характерны специфические

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

Наиболее весомыми различиями логической схемы алгоритмов

в каждой ветви являются различия по характеру исходных и воз­ никающих в процессе упорядочения (промежуточных) структур

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

 

самой общей формулировке по этому принципу алгоритмы могут

 

быть разделены на группу алгоритмов, использующих структуры,

 

состоящие

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

 

монотонно

сокращается или возрастает (алгоритмы упорядоче­

 

ния слиянием, алгоритмы 'Хиббарда, Шелла и т . д . ) , и группу

_