Алгоритмы обработки данных

В книге японских специалистов рассматриваются структуры хранения и их отображения на память и способы динамического упра

117 58

Russian (Old) Pages 218 [221] Year 1986

Report DMCA / Copyright

DOWNLOAD FILE

Алгоритмы обработки данных

Table of contents :
Содержание
Введение
Глава 1. Данные
1.1. Основные типы данных
1.2. Обобщенные структуры данных
1.3. Динамическое распределение памяти
Глава 2. Поиск данных по ключу
2.1. Поиск по дереву в оперативной памяти
2.2. Поиск по дереву во внешней памяти
2.3. Методы хеширования
Глава 3. Сортировка
3.1. Внутренняя сортировка
3.2. Сортировка во внешней памяти
3.3. Объем вычислений при сортировке
Глава 4. Практические аспекты обработки данных
4.1. Методы доступ а к внешней памяти
4.2. Структура памяти и поиск данных
4.3. Уплотнение данных
4.4. Параллельная аппаратная сортировка
Литература
Предметный указатель

Citation preview

Алг ор и тмы обраб от ки данных

М.Сибуя Т.Ямамото

АЛГОРИТМЬI ОБРАБОТКИ

ДАННЬIХ Перевод с японского Э. К. НИКОЛАЕВОй

канд.

1ехн.

поJ ре�1а1·:11н:'Й наук В. В. ПАНФl::РОВА

МОСКВА «МИР» 1986

Б Б К 32. 973 с 34 УДК. 68 1 .3 С 34

С и б у я М . , Я м а мото Т . Алгоритмы обработки «Мир», 1 986. - 2 1 8 с., ил.

данных:

Пер.

с

япон.

- М.:

В книге японских специалисто в ра , ;:;::: , < , � - П усть отнош е н и я R и S и м еют соответствен н о атри буты А и В и эти атр и буты с р а в н и м ы . Это о з н а ч а ет, что А и В о п р еделены н а одно й обл а сти , н а п р и м ер содержат и л и н а тур альные ч и сл а , и л и действител ь н ы е ч и сл а , и л и буквы а н гл и йского ал ф а вита ( в п оследн е м сл уч а е е огр а н и ч и в а ется тол ько о п ер а ци я м и = и =/=- ) . В это м случае R [ AeB] S = { ( r , s ) ; r E R , s E. S , r [ А ] es [ В ] } н аз ы в а ют в-соединением отношений R , S по ат­ р ибутам А, В. Н а п р и мер : = ,

R:

Az

А1

А1

Az

а

S:

и

а

R [Аз = В2] S :

Аз

В1

В2

2

и

а

2

v

3

х

ь

4

v

4

w

с

2

w

с

3

и

Аз

В1

В2

и

2

и

R [А2

> В1]

S:

А1

Az

Аз

ь

4

v

с

2

w

4

w

ь

4

v

с

3

и

2

и

с

3

и

В1

В2

2

и

3

х

2

и

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

5 ) Делен и е. П усть отноше н и я R , S и меют общее ч а стич­ ное п р я мое произведе н ие В = С. О бозн а ч и м через в с , се

27

Данные

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

1

в

В, С соот­

С'

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

g (x; R . B) = {r [B] ; r s R , r [Bc] = x } .

Множество, включа ющее все з н а ч е н и я на С, S [ C] ( подм ножество S [ B c ] ) , R [В + С] S = { r [Вс] ; r s R . S [С]

с:

х с: вс

прое к ц и и

S

g (r [ Вс] ; R . В)}

назы в а ется резул ь та том деления отношения R на отноше­ ние S по атрибутам В , С. Н а п р и мер : х

а а

ь

2

В1

В2

с

R [ Bз + C 1 ] S :

у

х

2

у

х х

2

l _ Y __

х

а

у

Результат о п е р а ци и R [ Вз + С 1 ] S п р ед ст а в л я е т собой отно­ шение, состоящее и з кортежей отно ш е н и я R [ В 1 Х В2] , ото ­ бражение которы х п ол ностью в кл ю ч е но в S [ С 1 ] .

6 ) О гр а н и ч е н ие . Есл и атр и буты А, В отно ш е н и я R ср а в н и ­ мы в том с м ысле, к а кой и м елся в виду п р и р а ссмотре н и и соеди н е н и я , и есл и о боз н а ч ит ь опер а ци ю ср а в нени я через е ,

то в ы р ажение

R [ А0В]

=

{r;

r

s R . r [ А ] er [В] }

назыв ается в-ограничением отношения R . Р ассмотр е н ное в ы ш е О - соеди н е н и е м ожет б ы т ь в ы р ажено через операци и п р я м о г о П р о и з в еде н и я

и В-о г р а н и ч е н и я

R [А 0В] S

=

( R ® S ) [ А8В]

28

Глав а 1

Например : .R : А 1 р

А2 3

Аз 5

q

3

3

q

6

4

r

2

2

R

[А2 = Аз ] :

А1

А2

q

3

r

2

Аз 3

R

[А2 > А з ] :

А1 q

А2 Аз 6

4

2

В з а кл ю ч е н и е о п р едел и м специ ф и ческое отношение-кон• ·ста нту, соде р ж а щее всего оди н кортеж и оди н а тр и бут { а } ; здесь а является константой с обл а стью о п р едел е н и я А. Ис­ пол ьзуя р а ссмотр е н н ы е опера ци и , можно сфор м ул и р овать р а зл и ч ны е з а п рос ы к реляционно й м одели да н н ы х . Р а ссмот­ р и м п р и м е р ы п остроени я з а п росов к р ел я ци о н н о й м одел и, соде р ж а ще й т р и отношен и я : Д ЕТАЛ Ь : ( но м е р -детал и , тип ) С КЛАД : ( но м е р -скл ада, м есто- р а сположе н и я ) ХРАНЕ Н И Е : ( но м е р -дет ал и , номер -склада ) Получить номер а с кл адо в , где х р а н ится дета л ь под н о ме­ ром 1 3 : [ но м е р -детал и = номер -детали ] { 1 3} ) [ но м е р ( ХРАН Е Н И Е скл ада ] З десь { 1 3} п р едста вляет собой отношен и е- конс та нту, ко н ­ ста нта задает н о м е р кон кретной детали из всего допуст и м ого м ножеств а номе р о в . Получить н о м е р а складов, н а кото р ы х отсутствую т детал и типа а: [ но м е р -детал и =f=. н о м е р -детали ] (ХРАН Е Н И Е (ДЕТАЛЬ [т и п = ти п ] {а } ) ) [ номер-склада ] О п р едел ить место р асполож е н и я складов, где х р а н ятся все дет а л и т и п а а : ( С КЛАД [ н о м ер -склада = н о м е р -скл а д а ] (ХРА Н Е Н И Е [ но­ (ДЕТ АЛ Ь [ти п = т и п ] {а } ) ) ) м е р -детал и --:- н о м е р -дет а л и ] [ м есто - р а споло жени я ] 1 . 2 . 2. Стру ктур ы д а н н ы х и отн о ш е н и я 1 ) М асси в

Отношен и е ДОХОД-ОТ- П Р ОДАЖИ ( ри с . 1 . 5, 6) и меет следующую структу р у : ( н а з в а н и е - м а га з и н а ) Х ( м есяц) Х ( ш и ф р -и здел и я ) Х ( в ы р учка ) Это отношен ие м ожно п р едста вить трехм е р н ы м м а ссиво м

29

Д а нные

д а н н ы х в ыручка, испол ьзуя в ка честве и ндексов кон кр ет н ы е з н а чени я н а з в а н и й м а га з и нов, месяцев и ш и ф ров и здел и й. С ече н и я м а ссива в ыру чка п о м а гази н а м п о ка з а н ы н а р ис . 1 .6. Отм ети м , что отношение содержит только те да н н ы е, Н А З В АНИ Е -МАГАЗИНА 2 - я половина

Н А З В АНИ Е - МАГАЗИНА 1 - я пол о ви н а

Мес я u

8

Ш ифр-из­ дел и я

Месяu

Ш иф р-из­

7

де л и я

8

5 2 3

8

2

12 11

20

5

3

Рис. 1 .6. Предс т а вление о т ношени я ДО Х ОД-ОТ-ПРОДАЖИ ( ри с . 1 .5, 6) т рех м ерны м м а с с и во м В ыруч к а.

хотор ы е соответствуют конкретной вы ручке. Та к и м о б р а з о м , что бы з а ф и ксировать « в ы ручку от п рода ж и нового издели я з а кон кр ет н ы й м ес я ц в конкретном м а га з и не» в отношение ДОХОД-О Т - П Р ОДАЖИ дост аточно до б а в ить всего одну в ы ­ бор ку. Для п р едст а вл е н ия отн о ш е н и я трех м е р н ы м м асси вом выр у ч ка необходи мо з а р а нее знать все месяцы, назва н и я всех м а га з и нов и ш и ф р ы всех издел и й . Есл и р а з л и ч н ы х м а г а з и нов и товаров м ного, а п р едпол а г а е м ы й п е р иод времени п родол ­ жител е н , то построить трех м е р н ы й м а ссив, кото р ы й охваты­ в ал бы все эти данные, может оказаться очень сложно. По­ это м у в общем случ а е т р удно сказ ать, к а кое п р едставление л уч ш е , - все з а в и сит от кон к р етн ы х услов и й . 2 ) И ерар хическая стр у кт у ра

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

Гл ава

30

C11ydfCt1Щur rрирны

о

РоСlст8енные omllO Ш e ff UЯ

а

СЛУЖАЩИЕ г--h_,.,0-00--_---.-Ф -,,н -11 _ �--Ф11РМЫ сот 'fdнина , лия БИОГРА ФИЯ

com

!foo flpotpec - llat1Ne110fJa н11 Pacпpeilc/ compytJнu«a сия - штана абоm ·

ПЛ А Н

llJIC)/118EllЦЫ

Р и с.

1 .7.

lfoiJ ­ онина

l(oiJ ­ compyiJ11ruca

Реляционн ая б

f'о8сm&'1ные ­ оrпношения

-

и

с

-

и е р а р хическа я м одели : а и е р а р х ический ф а йл; п р едста вление с помощью отношений.

в п оследовательности , обр азуют с тр у кт ур ы , кот орые п о х ожи больше н а а ллеи ( дерево с п а р алл ел ь н ы м и в етвя м и ) , ч е м н а де р е в ь я . С т р у кту р ы , в к ото р ы х ка жда я подч и ­ н ен н а я з а п и сь имеет тоJ1 ь ко од н у непосредствен но п р е д­ ш ествую щую за пись, н а з ы в а ютс я иерархи ч еск ими мо деля м и да н н ых. Можно предст авить и е р а рх и ю в виде р е л я ц ио н н о й м одел и , ка к пока з а н о н а р и с . 1 . 7, 6 ; число отноше н и й в этой м одел и бу дет р ав но ч и сл у элементов дерев а , з а ключен н ы х в двойн у ю р а м к у. В это м случае элемент да н н ы х код- сотрудн ика будет кл ю ч о м о т ноше н и й П Е Р С О Н А Л , Б И О Г Р А Ф И Я , И ЖД И В Е Н ­ Ц Ы ; дл я отноше н и я П Л А Н кл ючо м будет ( код-сот р удника, пр о фесс ия) . Считается , что и е р а р х и ческая с тру к тур а п р оста дл я п о н и м а н и я и подходит для оп и сания сов р е м е н ны х o p ra в а я сь

31

Данные

позво­ н и з а ц и й , кл ассиф и ка ци и и т . п . Р ел я ци о н н а я м одел ь

л я ет о то б р а жать и е р а рхич ескую структ уру и в этом с м ысле я в л я ет ся более общей м одел ью . 3 ) Спе ц и фи к а ц ия

Специф икация ука з ы в а ет, и з к а к и х узлов и детале й со­ с то ит м ех а н и з м (такой , н а п р и м е р , как а втомоб ил ь ) , и содер ­ ж ит основн ы е д а н н ы е дл я сбороч ного цех а . П осколь ку одн и я п р а кти чески и те же детал и , та кие, к а к ви нт ы , испол ьзуютс а н н ую н а показ , у м р о ф еет м и я ци ка и ф специ е, в каж дом узл к а ц и и т а кого и ф специ в » и м я л «дета о н н бстве Со . а .8, 1 . с ри м етить, вида являют ся только элемен ты Е , G , Н, F . Можно з а ржит соде ев деревь ости н п совоку иде в в кация и что специ ф м учето r ев деревь избыто ч ность. П о с л е объеди н е н и я этих 81 2

С, 1

Е, 1

F, J.

с

E, J

С, !

G, Z

F',

1

а

А А

А

в

f3 в с с

с

JJ �

Е с

]) Е Е

f' {} F' н 8

lf,

f

3 1

1 2 1

Е

J z 1

F

G

f

fi

G

5

flOPOJICДEHHьte Об'ОЕf{ТЛ В Де mrJлц с IJ

2 1 з

Y:g��; f 1

2

Е

ЛDРОЖДЕllНЫЕ DБ'Ь ЕН ТА D !tоли ДВ/1/(J//Ц '18С!Т1/10

ПOPO.Ж/IEllllЫE Об'ьЕ!ПА С f(шш ,!f.етшщ 'i'ecm!lo

"

r

/?

н

в с Е

2 1

�3 �

/1,Jjс� 1� ; '{ D

0/iЬЕКТА А flQ1111 дemмll 11ecmtlo

tleн№rii. vecm!Jo в G

D, 1

НЫ !ЮРОJIСДЕНЕ

ДЕТАJlИ Исход- Лоро.ж- f(оли ныа

А

В

А

fi'

1

н

з

2

'

1

1

г

Р и с. 1 . 8 . Специфика ци я : , из п р едста влений специ ф и к а ц и и : «А с о ст о и т из д в у х В, одного С п редст а вление спе­ , «D с о ст о ит из о д н о г о F, о д н о г о Н» ; б трех Е» , п редста вление в в и де о д н о г о о т н о ш е н и я ; циф и к а ции в в иде гр а ф а ; в и х а. п редста влен ие в в и де четырех о тн о ш е н и й соответс т в у ю щ г

а

-

од н о

.

.

-

.

-

-

,

32

Глава

1

в хожден и я в узел более м ел к и х узлов и деталей получится стр у ктур а , от л и ч н а я от и е р а р х и ческой ( р ис. 1 .8, 6) . Струк­ тур а , в которой л ю бо й эл емент может быть свя з а н с л ю б ы м дру г и м элементо м , н а з ы в а ется сетью. Сетевые м одел и о п и ­ с ы в ают н а и более о б щ и й случ а й связей м ежду да н н ы м и т и п а « исходн ы й - п о р ожде н н ы й » . Специ ф и кация может б ы т ь п р едста вл е н а одн и м отноше­ н и е м , к а к показано н а рис. 1 .8, в. Одн а ко в этом случ а е з а ­ п росы в ида « О п р едел ить кол и ч ество деталей ка ждого ти п а , входящих в узел В » сведутся к выпол не н и ю п осл едо в а тельно­ сти опер а ци й естественного соеди нени я исходного отноше н и я с с а м и м собо й и л и р езул ьтатом п р едыдущего соеди не н и я по атр и бута м « и сход 1 1 ы й - п о рожде н н ы й » . И так до тех п о р , пока р езульти р ую щее отн о ш е н и е н е будет содер жать в атри буте порожденный н и ка ки х други х з н ачени й , кроме Е, G, Н, F. Р а сс м отренн а я р ел я цио н н а я м одел ь н е является еди нствен­ ной. С п и сок деталей можно п р едст а в и т ь и в в иде ч еты рех отноше н и й ( р ис. 1 .8, г) , непосредственно соответствую щ и х и сходны м деревьям ( р ис. 1 .8, а ) . Но в э т о м случ а е потребу­ ется р а з р ешить использовать и м е н а отнош е н и й в к а честве элементов отношен и й . 4 ) Сп и с оч н а я ст р укту р а

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

1 ) (coпstaпt, pi, е) 2) ( co nsfant, (pi , 3 . 1 4) , (е , 2 .72)) 3) (((а, +, Ь ) , Х. с ) , -7-- , ( (d , Х, е ) , +, f))

я вл яются с писоч н ы м и структу р а м и . Что б ы отл и ч ить сугубо специ а л ь н ы й с м ы сл слова « с п и сок» и чтоб ы подчер кнуть это, обычно п и шут его с бол ьшой буквы : « С п исок». П е р в а я строка п р едставляет со бой сп исок. Вто р а я - списо ч н ую структуру, та к как содержит в качестве элем ентов два списка , (pi, 3. 1 4 ) и ( е, 2.72 ) . П е р в а я и вто р а я строки являются списочн ы м и стр уктур а м и ; перв а я состоит и з трех элементов да н н ы х , а втор а я - и з элем ента и двух списков. Третья строка п р ед­ ста вля ет со бой а р н с� м етическое в ы р а же н и е ( a --t- b ) c/ ( dc --t- f ) . П о о п р еделению а р и ф м ети ческое вы р а же н и е п р едст а в л яет

33

Д анные

с о бой ( о п ер а нд, з н а к о п е р а ц и и , о п е р а нд) ; опер а нд может быть конста нтой, п е р е м ен ной или а р и ф м етически м в ы р а же­ ни ем . П редставл е н и е а р и ф метичес кого в ы р а же н и я С п и с ко м сл едует из ре курсивно го х а р а ктер а с а м ого о п ределе н и я . К оп е р а ц и я м н ад с п и соч н ы м и структур а м и ( С п иска м и ) от носятся : искл ючение ч а сти С п иска, и в ч а ст ности одного э ле мента ; конкатен а ция (объед и н е н ие ) двух С п исков ; вклю ­ ч е ние э л емента в С п и сок. К р о м е перечисле н н ых о п ер а ци й

А РИФМ Е Т И Ч Е С КО Е - В Ы РАЖЕ НИЕ №

формулы

1-й операнд

(1 ) (2) (3) ( 4) (5)

а

2-й о п е р а н д

Опсрац11я

ь

+

с

(1)

(2) d

(5) е

(4)

х

х

Рис. 1 .9. П редст а вл ение а р иф ме т иче с кого в ы р а ж е н и я в виде отно ш е н и я .

счита ются оп редел ен н ы м и и о б ы ч н ы е о п е р а ции н а д эл е м е н ­ т а м и д а н н ы х . Т и п и ч н ы м я з ы ко м , п р и м е н я е м ы м для о б р а ботки списо ч ны х структур в Э В М , является Л ис п . Ему посвящены многие учеб н и к и , к кото р ы м а вторы реком ендуют обр атиться при необходи мост и . Сп и соч ные структур ы бол ь ш е подходят для обра ботки не­ большого числа сложно орга низов а н н ы х да н н ы х, чем дл н о б р а ботки бол ьшого числа да н н ы х оди н а ковой стр уктур ы . Т а к и м о б р а з о м , роль списочной и рел я ци о н н о й м одел е й о к а ­ з ы в а ется р а з л и ч н о й . Сп исок очень г и б к а я структу р а , по­ это м у есл и о н неуп ор ядочен и сложен , то и м етоды обра ботки та кой стр уктур ы также ока жутся сложны м и . Более удобно й дл я о б р а ботки будет т а структур а , кото р а я бол ьше соответ­ ствует структу р е реального о бъекта . В вышепр и веде н н о м п р и мере третья структур а п р едставляет собой одну из таки х ти п и ч н ы х м оделе й , вто р а я стр уктура составлена из д ву х м о ­ делей : ( cons t a nt, (p a ir), ( p a ir) , . . . ) , где ( p a ir) в с в о ю оче­ редь предст а вл я ет собой м одел ь ( буква а нгл и йского а л ф а ­ в и т а , ч и сл о ) Есл и а р и ф м етическое в ы р а же н и е (3) п р едставить отноше­ ни е м , то получ и м т а б л и цу, п о к а з а н н ую на рис. 1 .9. Это о т но шение содержит да н н ы е с р а з н ы м и о бл а стя м и о п р едел е н и я п ер вого и второго опер а ндов, одн а ко е г о м о ж н о с ч итат ь п р едставление м , удоб н ы м для о б р а ботки . З десь одна фор м ул а с оот ветствует одному отноше н и ю и о б р а ботка отношен и я -

.

­

2

З а к . 1 ::17

Глава 1

34

потребует м н огок р а т н ого в ы п ол не н и я одной и той же опера ­ ц и и , ка к и в р а сс м отрен н о м р а нее п р и ме р е с п е ци ф и к а ци и , что отл и ч а ет эту о б р а ботку от обра ботки р а сс мотр е н н ы х р а нее п р и меров отноше н и й . 5 ) М ассив общего вида

Н а и более общая стр укту р а д а н н ы х , охватьш & ю щая все р а сс м отр е н н ы е р а нее структу р ы , т а к и е , к а к м а ссив, ф а йл , отнош е н и е , списоч н а я структур а и т . д. , н а з ы в а ется массивом общего вида. Т а к и м о б р а з о м , м а ссивом об щего вида н а з ы в а ­ ется м а ссив, элементы кото рого не о б язательно относятся к одн о м у типу д а н н ы х . Массив о бщего вида доп ускает в к а ­ ч естве элементов испол ьзовать другой м а ссив обще го вида . Ка ки е о п е р а ци и могут потребов аться дл я р а боты с м ассив а м и общего вида ? Естественно, в и х ч исло дол ж н ы входить о п е­ р а ци и , котор ы е о п и с а н ы в ы ш е дл я р а ссмотр е н н ы х структур да н н ы х . Одн а ко пока трудно дать бол ее детал ь н ы е реко м е н­ да ции по п р а ктической р е а л и з а ц и и этих о п е р а ц и й и по м е­ тода м п р едста вл е н и я м а ссива общего вида в п а м яти - эти воп росы н а ходятся пока в стадии исследо в а н и я . 1 . 3 . Д и н а м и ч е с ко е р а с п р едел е н и е п а м я т и 1 .3 . 1 . n ростые методы

В я з ы к а х - п рогра м м и рова н и я да н н ы е р а з н ы х типов, р а с­ смотрен н ы е в р а зд. 1 , п р едставляются ч а ще н е в виде ко н ­ ста нт, а в виде п е р е м е н н ы х . В да н ном случ а е понятие « п е р е­ м е н н а я » н а дел яется допол нител ь н ы м и свойств а м и , отл и ч ­ н ы м и от п р и в ы ч ного « и з м е н ять з н а че н и е » . П е рвое к а с а етс я испол ьзов а н и я и м ен в тексте п р о гр а м м ы : уста н а вл н в а ется , одr ю му и л и р а з н ы м да н н ы м соответствуют оди н а ковые и м е н а п е р е м е н н ы х в основной п р о гр а м м е и в п одп рогр а м м е . О б ы ч ­ н о, есш 1 н ет специ а л ьного указ а н и я ( п о умол ч а н и ю ) , о бл а сти де йствия и м е н уста н а в л и в а ются в соответствии с о п редел е н ­ н ы м и согл а ш е н и я м и - ста нда ртом я з ы к а . Н а ряду с эт и м су­ ществует воз можность уста нов ить обл а сти де йствв я и м ен п е ­ р е м е н н ы х уже или ш и р е ста ндартных. Второе сво йство ди к­ ту ется н еобходи м остью о п р едел е н и я в р е м е н и р а с п редел ен и я п а м яти для п е р е м ен н ы х : д о н а ч а л а в ы п ол не н и я I! рогра м м ы , в м о м ент о б р а ще н и я к п одп рогр а м м е или позднее, а та кже метода р а с п р едел е н и я - статического или ди н а м и ческо го. В допол н е н ие к эти м свойств а м и ногда и м еется воз можность указ ать, когда п а м ять, выдел е н н а я дл я р а з м еще н и я п е р е м е н ­ н ых, ста новится ненужной и может быть р а с п р едел е н а по­ вторно.

Сл ед ует

.ш это

Д а нные

сво йство связыватr_, с

35 п u 1 1 ят 1 1 с м

типа перс­

м е н 1ю й - в о п р о с осо б ы й ; л уч ш е , е с л и п ол ьзовател и н с будут

угл убл яться в этот воп рос. На п р а ктике во м ногих и1уч а я х в этом н е т необходи м ости , т а к к а к п а м ять н е о ч е н ь з а г р у­ ж ен а . Н а п р и м е р , и з - з а того, что в язы ке Фортр а н р екурсив­ н ы й в ызов подп рогр а м м ы н е допускается , отно ш е н и е м ежду в ы з ы в а ющей и в ы з ы в а е м о й п рогра м м а м и и м еет вид т и п а « исх одн ы й- порожден н ы й » , и в с е н ео бходи мое р а с п р едел е н и е п а мяти может быть в ы п о л н е н о п р и о б р а ще н и и к подп ро­ гр а м м е . Поэто м у для Фортр а н а достаточ н о сте кового меха ­ н и з м а уп р а вл е н и я п а м ятью. Есл и п р и это м н еобходи м о выде­ л ять п а м ять и дл я буферов ввода - в ывода , то дл я уп р а вл е н и я Ооласть па1'1яmи

CfJoбoЭtta f1 область па�нти

Рис. 1 . 10. Свободн а я область п а м яти организов а н а в в иде дек а .

п а м ятью мож110 использовать двустор о н н ю ю очередь ( с м . рис. 1 . 1 0) . В н екотор ы х случ а я х н е удается так п р осто ре ш ить п р о­ бл е м у у п р а вл е н и я п а м ятью . . 1 ) Б ы в а ют с.11 уч а и , когда в п ро цессе о б р а ботки да н н ы е п р о м ежуточ н ы х р а с ч етов ока з ы в а ются м н огоч и сл е н н ы м и и гр о моздки м и ; хотя эти да н н ы е уже н е н уж н ы , о н и п р одол ­ ж а ю т з а н и м ать п а м ять, в то в р е м я к а к появл яется необхо­ ди мость в р а з м еще н и и новых да н н ы х . О б р а ботка сп исков относится и м е н но к т а кому слу ч а ю . 2) Дл я задач о б р а ботки да н н ы х в р е а л ь н о м м асшта б е в р е м е н и невоз м о ж н о п р едска з ать и з м е н е н и е объемов о б р а ­ баты в а е м ы х да н н ы х , ч т о необходи м о учиты вать п р и р е ал и з а ­ ци и т а к и х з а д а ч н а ЭВМ. 3 ) О п е р а цион н а я систем а с р а здел е н и е м в р е м е н и дол ж н а р а с п р еделять п а м ять в соответст в и и с требов а н и я м и пользо­ вате л е й . 4 ) Ч а сть внешней п а м яти в соответствии с т р е бова н и я м и пол ьзов ател е й дол ж н а р а с п р еделяться м ежду п остоя н н ы м и и в р е м е н н ы м и ф а йл а м и . Р а сс мотр и м коротко м етод ы , кото р ы е п р и м е н я ются в этих случ а я х . В р а зд. 2 встречался случ а й, когда о бл а сть п а м яти ( п ул п а м яти ) ( все р а в н о -внешней и л и о п е р ативной ) , п р ед н а з н а ­ ч е н на я для использо в а н и я , дел и л а сь н а р а вные блоки, ко­ тор ы е по мере требова н и й п р едост а влял ись пользовател я м , п р и ч е м , когда о н и оказывал ись ненуж н ы м и , пользовател и 2*

36

Глав а 1

воз в р а ща л и и х о б р а т н о дл я п о втор ного использо в а н и я . В э т о м сл учае сп исок сво бодн ы х блоков м о ж н о о р га н изовать в виде сте ка , а дл я освобожде н и я использовать метод «сбо р а му­ со р а » . В это м м етоде ста вшие ненуж н ы м и отдел ь н ы е бл оки воз в р а щ а ются в п а м ять однов р е м е н но - в мом ент, когда спи­ сок свободного п рост р а нства п уст. Для выявл е н и я н еиспол ь­ з уе м ы х блоков доста точно искл ючить из всей о б л а сти испол ь­ з у е м ы е бло к и . Ко н к р е т н ы е с п о с о б ы в ы я вл е н и я посл едн и х + 1 1-'азнер 1

C!lo5oilнЬlii

Jанптый.

+

Ра3мер 1

Заннтыii

+ I Paзttreo

Заняrпый

С8о5о8ный

- Ра3/'1С

+i +1

- Раз,.,ер

Р и с . 1 . 1 1 . Метод у 1 1 р а в л е н и я блока м и с гр а н и ч н ы м и п р и з н а к а м и . Если сво­ б о д н ы е блоки о к аз ы в а ютс я с м е ж н ы м и в п а м я ти , о н и о бъединяются .

з а в исят от стр у ктур о б р а баты в а е м ы х да н н ы х и осо б е н н о 'i a · сто о бсуждаются для списо ч н ы х структур ( п оэто м у здесь эти с п осо бы н е р а с с м а т р и в а ются ) . Ниже р а з берем сл уч а й уп р а в­ л е н и я п а м ятью дл я блоков р а з н ы х р а з меров, требуе м ы х пол ь­ зов ател я м и . Пусть вся п а м ять, подл е ж а щ а я р а сп р едел е н и ю , п р едстав­ л я ет собой оди н блок, содер ж а щ и й конечное число я ч еек с н е r r р е р ы в н о следующи м и адреса м и . П е р в о н а ч а л ьное р аспре­ дел е н и е может б ыть выполнено очень п росто - п утем п осле­ дова тел ьного у м е н ь ш е н и я п е р в о н а ч а л ь ного бл ока п о ка ждо м у з а п росу. Когда в с я п а м ять блока будет р а с п р едел е н а , оч� ­ в ид н о , несколько б л о к о в ста н ут н е н ужн ы м и и их п а м ять м о­ жет быть использов а н а повто р н о . Одн а ко, есл и опер : щи ю по­ вто р ного р ас п р едел е н и я испол ьзовать м ногократно, свободн ые блоки будут ста новиться все м е н ь ш е и м е н ьше, п оэтом у перед п о вт о р н ы м р а с п р едел е н и е м п р оводится уплот н е н и е п а м я ти перемещение всех з а н ятых блоков в п оследовател ь н ые я ч е й к и дл я того, чтобы в с ю сво бодную п а м ять с о б р а т ь в м есте в оди н б л о к. Если обл а сть п а м яти и м еет достаточ н о бол ь ш и е р а з ­ м е р ы , необходи м ость в п овто р н ы х ушютнениях во:ш и ка ет редко . Од н а ко м о ж н о и з бежать б ол ь ш и х затр ат времени н а п е­ р е м е ще н и е да н ны х , есл и во все блоки, свободные и з а н ятые, в к.1 ю ч и т 1, не большую служебную и н ф о р м а ци ю специ ал ьно дл я у r r р а вл е н и я п а м ятью. Сущность этого м етода з а кл ю ч а ­ ется в следующем (с м . рис. 1 . 1 1 ) . Свободные блоки объед иня. -

.

Дан н ые

37

ют с я в двухсвнз а н н ы й сп исок. В н а ча Ji е и ь 1 . и 1 щ �.: к а ждого б Ji ока х р а н ятся Ji о ги ческие з н а ч е н и я , показ ы в а ющие, з а н ят и л и сво боден да н н ы й блок, а дл я свобод н ы х бл оков - и их р а з м е р ы . Бл а года р я это м у , как только н а ходя щ и й ся в п ро ­ цессе использова н и я ( з а н я ты й ) блок ста новится ненуж н ы м , п ро вер яется , свободны и л и з а н яты блоки , с м е ж н ы е с н и м п о п а м яти ; если о н и сво бодн ы , и х м о ж н о объеди нить. П р и рас­ п ре деJi ен и И с п и со к свободны х блоков п р ос м ат р и в а ется по­ сл едовательно, пока не вст р етится блок р а з м е р а не м е н ь ш е тр е буемого. Ка к тол ько та кой б л о к н а йден , достаточ н о в ы ­ делить из него б л о к требуе мого р а з м е р а , а из оста вшейся ч а с ти о б р а зовать н о в ы й блок. Если н а йден н ы й свободн ы й бJi ок л и ш ь н е м ного больше требуем ого, т о Jiучше з а н ять его п оJi ностью, чем оста вл ять н ебоJ1ьшой бJiок в списке. В п ро­ тив ном случ а е о б р а з о в а в ш и еся в р а з ное время м аленькие сво бодн ые блоки и м еют те нде н u и ю с к а п л и ва ться в 1-1 а ч а л е с п и с к а и увел и ч и в а ю т в р е м я поиск а . Д л я того чтобы избе­ жать этого, с п и со к свободн ы х бло ков лучше о р г а н изовать в виде кол ьца и к а жды й раз о п е р а ци ю поиска н а ч и нать с того м еста кольца , где з а ко н ч и Ji а с ь п р едыдущ а я . Возможности р а з Ji и ч н ы х м етодов ди н а м и ческого уп р а вJiе­ н и я п а м ятью з а в и сят от х а р а кте р а р а с п р едел е н и я р а з меров тр ебуе м ы х бJiо ков, ч а стот ы резерви р о в а н и я и освобожде н и я ( по отнош е н и ю к р а боте, з а т р а ч и ва е м о й н а о б р а ботку да н ­ н ы х ) , р а зброса в р е м е н и существова н и я ка ждого бло к а . По­ это м у а н а Ji и з эти х м етодов очень сложен. EcJiи требуются блоки дост аточно бол ь ш и х р а з м е ров ( с р а в н и м ы х с р а з м ером пул а п а мяти ) , то, естественно, Ji егко н а ступит « б а н кротство» ( п ерепол не н и е ) пyJi a . Есл и в р е м е н а существо в а н и я блоков п р и м ер н о оди н а ко в ы , то с п и сок ста новится бJi и з к и м к оче­ р еди с дисци п л и н о й обслужив а н и я « п е р в ы м вкл ю ч а ется п е р в ы м искл ю ч а ется » , и тогда бол ь ш и х п робл е м н е воз н и ­ к а ет. Есл и же в р е м е н а существов а н и я блоков и м еют боль­ шо й р а з брос и сильно с м ещены в сторону малых времен, то с п и сок ста новится бл изки м к стеку с дисци п л и но й обсл ужи в а ­ н и я « п оследн и м в кл ю ч а ется - п е р в ы м искJi ю ч а ется » , И в это м сл у ч а е та кже особ ы х трудностей н ет. Когда , несмотря н а и з ­ б ыток свободной п а мяти, достато ч н о бол ь ш и е блоки отсут­ ствуют, п р и х одится использовать уплотнение. Одн а ко да ж е п олное уплотнение не га р а нт и р ует от возможного к р а х а , есл и вероятность з а п росов н а бол ь ш и е блоки вел и к а . Е сл и о п е р а ти в н а я п а м ять исчер п а н а , ч а сть з а нятых бло­ к о в можно освободить, п е р е п и с а в их соде р ж и м ое во в н е ш н ю ю п а м ять. Одн а ко о к а з ы в а ется совсем н е п росто о п р едел ить, к а к ие блоки следует освобождать, н о здесь эти в о п р осы п од­ р обно обсуждаться не будут. П р и использов а н и и в и ртуальной

38

Гл а ва 1

н а м яти ': JТ О 1 ! р о и знuдится а в т о м а т и ч е с к и , 1 1 0 п о я н л я е т с я друга я 11 робл с м а - р а ссредото ч е н и е а кти в н ы х адресов п а ­ м яти , ухудш а ю щее э ф ф е кти в 11 осп ,.

1 .3.2. 1)

Метод б л и з н е цо в

Мет од бл и :т е цо в с б и н а р н ы м разби е н и е м

Ита к , у п р а в л е н и е п а м ятью без огр а н и ч е н и я н а р а з м е р ы резе р в и руем ы х блоков т р ебует довол ьно м н о г о в р е м е н и . Есл и ж е р а з м е р ы резе р в и р уе м ы х б л о к о в огр а н и ч ить 2 k ( k О 1 , 2, . . . ) , то р а бота по уп р а вл е н и ю п а м ятью ч р е з в ы ­ ч а й н о уп роститс я . Есл и требуе м ы й р а з м е р блока п а м я т и н е я в .:1 я ет с я степенью 2, т о выдел я ется бол ь ш и й бл о к м и н и м а л ь­ ного р а з м е р а 2 k . Далее, есл и н ет свободно го бл ока р а з r.·1 е ро м 2k, то блок требуе м о го р а з м е р а п ол у ч а ют дел е н и е м бол ьш его блока на 2, 4, . . ч а сти . Дл я п ростоты п р и м е м , что р а з м е р п у л а п а м ят и р а ве н 2 " . Идея р а с п р едел е н и я п а �� я ти в методе бл и з н ецов пока з а н а на р и с . 1 . 1 2. П р и р а здел е н и и некоторого блока н а две ч а сти получ е н н ы е бл оки п о отноше н и ю друг к др угу н а з ы в а ются близнецами (или брать я м и ) . Б л и з н ецы вновь м о гут дели ться . Сво бодн ы е бл оки объед и н я ютс Я в с п и с к и по р а з м е р а м , а гол о в н ы е узл ы э т и х сп исков со б р а н ы в т а бл и цу. П р и резер в и рова н и и бло к а р а з м е р о м Ь н а ходят м и н и м а льное з н а че н и е k, удовлетворя ющее требов а н и ю Ь � 2 k , и н а ч и н ают по и с к сво бодного бло к а с k - го с п и с к а ; есл и ока жется, что с п и сок п уст, то и щут бло к р а з м ер о м 2k+I , 2 н2 , . . К а к только свободн ы й блок будет н а йде н , о н уда л я ется и з сп и с к а . Есл и ока жется , ч т о н а йден н ы й блок больше требуе м о го, его дел ят на две ч а ст и . Одну и з них ( од­ ного бли з н еца ) вкл ю ч а ют в с п исок соответствующего р а з ­ м е р а , а друго й передают п ол ьзов ател ю ил и вновь дел ят. П р и освобожде н и и блока п роверяется состо я н и е е го бл из­ н е ц а , и есл и о н свободе н , то в н а ч ал е о н искл ю ч а ется из с п иска , а з атем бл и з нецы объеди няются в оди н блок. Для получен ного бл о к а снова п роверяется состоя н и е его бл и з н еца. Смежные п о п а м ят и блоки оди н а кового р а з м е р а не о бъеди­ н я ются , если они н е я вл яются бл и з н е ца м и . Блок, ста в ш и й свободн ы м , в кл ю ч а ется в соответствующ и й список. Н а р и с . 1 . 1 2, б п о к а з а н о , ка к в случ а е освобожде н и я бл ока р а з ­ м е р о м 1 (отмечен стр ел кой ) дважды п роиз водится о бъеди­ н е н и е бл и з н е цов и в р езул ьтате получ а ется бло к р а з м ер о м 4. П о к а з а н н ы е сл ева д в а свободн ы х б л о к а р а з м е р о м 2 я вл я ются см е ж н ы м и , н о не о бъеди н я ются , поскольку н е являются бл из­ неца м и . П о а кти ч ес к а я цен ность м етода определ яется воз мож1 ю стью вычисл е н и я а д р еса б"1 изнеца . В случ а е , п о ка з а н ном =

=

,

.

.

.

39

Д а нные Таолица голобных f1.7ло8 спцс!fо8 c8olioil!f6!X b'1oкoll zO

z'

а

1 · 0 · 0 · 1 · 1 • " 1 · · · 0 · · " ' " 0 • 101 · " 8

Р ис. 1 . 1 2 . Состо я н и е области п а м яти р а з ме р о м 2 5 • Р а с п р еделены ( п р едо· ст а вл е н ы пользователю, з а н ят ы ) три блока р аз м е р о м 22, д в а блока р а з ­ мером 2 1 и оди н б л о к р а з м ером 2°. К: а к из м енится х а р а ктер расп редел е н и я текущее состо яние в случ а е освобожде н и я б л о к а , ук а з а н ного стрелкой : а п а м яти ; з а н ятые блоки п а м яти з а ш т р и х о в а н ы ; б - б и н а р н ое дерево р ас­ п р еделени я ; в - бито в а я к а р т а , соот ветствующа я р а с п р едел е н и ю п а м яти в м етоде близнецов. -

н а р и с . 1 . 1 2 , п ул п а м яти ( м и н и м ал ьн ы й р а з м е р блока п р и н ят р а в н ы м 1 ) з а н и м ает я ч е й ки с адрес а м и от О до 3 1 . Б л и з не ­ цо м блока р а з м е р о м 2 1 ( н а р и су н ке - вто р о й свободн ы й блок) , н а ч и н а ю щегося с адреса 1 02 в двои ч н о й систем е , будет блок, н а ч и н а ющийся с адреса 1 1 02 . Вообще, дл я блока р а з ­ м е р о м 2k , р а сп оложен ного с адреса х , близ нецом будет блок, н а ч и н а ющи йся с адреса : х

х

+ 2k

при

2k

при

-

х = О (m o d u l o 2 k + 1 ) , х = 1 (m o d u l o 2 k + 1 ) ,

Ь ) п редста в ­ где а == Ь ( mo d u l o m ) ука з ы в а ет н а то, ч т о ( а л яет собой цел ое к р а тное т . Дл я п ул а п а м яти р а з м е р о м 211 м о ж н о соста вить б итовую карту и з 211 бит и биту с н о м е р о м х п р и с в о и т ь з н а ч е н и е О и л и 1 в з а в и си м ости от того, св о боде н -

40

Глава 1

и л и з а н ят б лu к , н а чи н а ющийся с адреса х ( здесь з н а ч е н и е х н и к а к не связ а но с р а з м ер о м блока ) . Н а р и с . 1 . 1 2, в п о к а з а н а бито в а я к а р т а , соответствующа я р а с п р еделению блоков. 2)

Об о б щ енн ы й м ето д б л и з н е ц ов

Огр а н и ч и в а ются л и воз м о жности испол ьзов а н и я м етода бл и з н е цов исключ и тел ьно блока м и р а з м е р о м 2k (k = О, l , 2, . . . ) ? Воз н и к а ет в о п р о с : н е сл и ш ко м л и р а сточите­ лен метод, выделяющий блок р а з м е р о м 2 k+ 1 вместо требуе­ мого 2 k + 1 ? Один из способов ул уч ш е н и я метода с в я з а н с использов а н ие м последовательности Ф иб о н а ч ч и для доп усти­ мых р а з меров блоков L , , L 2 , . . 1 , 1 , 2 , 3 , 5, 8, 1 3 , 2 1 , 34, . . ( L k = Lk- 1 + Lk--2) . П р и р а з би е н и и обл а сти р а з ме р а I� k н а L k 1 , Lk-2 м н о го­ о б р а з и е р а з м еров блоков огр а н и ч ено, но о к а з ы в а ется больше, чем в случ а е п оследо в ател ьности 2k . Посл едова тел ьности 2 k (k = О, 1 , 2 , . . . ) и Ф и бо н а ч ч и под­ ч и н я ются общем у п р а ви л у и м о гут быть п р едставлены одн и м в ы р а же н и е м : =

.

.

.

-

L k = L k- '

+

L k- i •

где j = 1 , j = 2 соответствуют п е р в о й и вто р о й п осл едо в а ­ тел ьностя м р а з м еров соответственно. Одн а ко удобно п р и р а з б и е н и и использовать та кже числовую последовател ьност' о бъеди н я ющую обе п оследовательности - и 2k, и 3 · 2 k . Эт последов ательность не может б ыть построе н а по в ы шеука ­ з а н н ы м п р а в ил а м , одн а ко ее м о ж н о построить, используя сл едую щие два п р а вил а : k = l

2. 3 4 5 6 7 8

�; � � � : 1� ::

Lzk-1 = LZ + Lzk-s

Lzk = Lzk-1 + Lzk-3

О бъеди н я я эти в ы р а ж е н и я в одно , получ и м

Lk = Lk- 1 + LB (k>

( � (k) � k - 1 ) .

Т а к и м о б р а з о м , и в сл у ч а е испол ьзов а н и я обобщенного м етода бл изн ецов уп р а вл е н и е п а м ятью почти н е отл и ч а ется от уп р а вл е н и я в м етоде бл и з нецов с би н а р н ы м р а з б и е н и е м . В т а б л и цу гол о в н ы х узлов с п исков свободных блоков сле­ дует доб а вить L ,,, � (k) (см. рис. 1 . 1 3 , а ) . При р а здел е н и и блока р аз м е р о м L k б л о к меньшего р аз м е р а L r:, u,) п о м ещают, н а п р и м е р , слева и п р и с в а и в а ю т е м у новый адрес. Кроме того, б иты р а з м етки а Ь от р а жают м есто п оложен и е блока и е го бл и з неца . Для уп р а вл е н и я п а м ятью необходи м о , что б ы ка жды й р е­ ально существующ и й блок соде р ж а л следующие да н н ы е : код состо я н и я блока - з а нят о н и л и свободен ( + , соответ-

41

Д а нные таблца голо8ных fLЗло 8 с8оооаных -tiлoкotJ

списко8

k

Lk

fl(k)

-

+ 1 k lab l

1 k 1 аь 1- -

С8обоflен

Jанят

а

аЬ;

а

-{О

ь=

о

Вля лв8ого близнеца ilлn пра8ово Близне ца

{"з"знначачеенниюию бита

- 1

-

-

бита (при а = О )

(при a = f)

а

кор11е8ого оло1ш't

ь норнв8ого олока (�

Рис. 1 . 13. Обобще н н ы й метод близнецов : а вид с п и с к а свободн ы х бло­ ков ; б п р а вила изменен и я битов раз метки а, б, показ ы в а ющих состоя· н и е блока (точ к а м и отмечены блоки, входящие в сост а в близнецов ) . -

-

ств е н но ) ; k р а з м ер блока, з а да н н ы й уровне м ; а Ь биты р а з м етки блока. Биты Ь левого и п р авого близнецов, будучи р а сположены рядо м , а втом а т и ч ески о б р а зуют р а з м етку аЬ кор н евого блока ( блока п еред его делением н а бл и з нецов ) . Н а рис. 1 . 1 3, 6 в скобках показ а н а р а з метка блоков до и х дел е н и я , и р е а л ь н о о н а н е х р а нится . Т а к и м о б р а з о м , в р а з м етке а Ь бит а показ ы в а ет, л е в ы м или п р а в ы м бл и з н ецо м я вл я ется блок. Бит Ь фор м и руется из р а з м етки кор н я : бита Ь дл я левого близнеца и бита а для п р а вого. П р и дел е н и и произвол ьного блока р а з м е р а L" а дрес п р а вого близнеца будет сов п а дать с адресом блока, а адрес левого бл из неца будет н а [ ,,__ 1 бол ьше этого адреса . З н а н и е местоп оложен и я бл и з н еца (левый или п р а в ы й ) по· з вол я ет сфо р м и ров ать бит а , а использова н и е р а з м етки ко р ­ н я - и бит Ь ка ждого и з бл и з н ецов . Поэтом у в слу ч а е необ­ ходи мости процесс деления м ожет б ыть п р одолжен до тех п о р , пока не будет п олучен блок требуем ого р а з м е р а . П р и дел е н и и блока ч и с л о бл и з нецов н е обяз ател ьно дол жно огр а н и ч и в аться дву м я блока м и . Можно р а ссмот р еть та кже р а здел е н и е н а три и более блоков. L" tn k + L f'> ( k , ! ) + L r; ! использо-

вать з а но

дл я поиска б и н а р но е дер ево, построенное так, к а к пока­ на р и с . 2 . 6 , 6 ? Особенностью этого б и н а р'." ю го дерева я в­ л я етс я то, что все кл ю ч и в левом п одде реве меньше, а в п р а ­ в о м подде реве - больше кл ю ч а ко р н я . П р а в ильнее с к а з а ть : 1 ) в к а ждо м узле ( н е пусто м ) этого б и н а р ного дерева с о держ ится п о одно м у з н а че н и ю кл ю ч а , 2 ) дл я к а ждого узл а дер е в а в с е кл ючи в л е в о м п оддереве м е н ь ш е , а в п р а вом п оддереве бол ьше з н а че н и я клю ч а дан ного узл а . Т а кое б и н а р ное дер ево н а з ы в а ют та кже бuн.арным дере­

вом поиска.

З атраты в р е м е н и на поиск п о б и н а р но м у дереву поиска оказыва ются т а к и м и же, к а к и затр аты в р е м е н и н а поиск в упорядоч е н н о й т а б л и це с и с п ол ьзов а н и е м м етода дел ения попол а м . В н а ч ал е а р гумент п о и ска с р а в н и в а ется с кл ю ч о м , находящимся в кор не. Есл и а р гумент сов п а д а ет с кл ю ч о м , поиск з а кончен, есл и же н е сов п адает, то в случ а е , когда а р ­ г у мент п о и с к а о к а з ы в а ется м е н ь ш е ключ а , поиск п родол ж а ­ ет ся в л е в о м п оддереве, а в случ а е , когда а р гу м ент о к а з ы ­ вае тся больше клю ч а , iз п р а во м подде реве. Увел и ч и в уро­ ве нь на 1 , п овто р я ют с р а в не н и е , считая д а н н ы й узел кор н е м . П оиск считается н еуда ч н ы м , е сл и п р и достижении л и стьев совп адение н е о б н а р уж и в а ется . В п роти вном случ а е к этому м о менту поиск должен з а кончиться усп ехо м . Есл и м ножество кл ючей ф и кс и р о в а н о , ка к в в ы ш е п р и ве­ цен но м случ а е , то н ет особого п р е и м уществ а в п р о г р а мм е, опи р а ющейся на испол ьзов а н и е б и н а р ного дерева поиска. Б олее в ы годны м , скорее, можно считать м етод поиска деле11 ие м т а б л и цы попол а м , п оскольку п р о г р а м м а при этом ока 3 Ы ва ется с р а в н ител ьно п росто й ; в п р едставлен и и та кой струк­ r у р ы да н н ы х та кже особой сложности нет. О дн а ко в сл у ч а е , когда м н ожество кл ю ч е й з а р а нее неиз­ з ес т но и л и когда это м ножество кл ю ч е й м е н яется, вст а в к и 1 Удале н и я кл ю ч е й в т а б л и це о к а з ы в а ются довол ьно трудо­ : м ки м и . Более р а ци о н а л ь н о использовать в та ком случ а е б и ­ r а р ное дерево п о и с к а , которое п озвол яет з н а ч ител ь н о п ро ще -

Гла ва 2

52

вст а вJi я т ь и у д u J1 ять эJi е м е н т ы . Н а п р и м е р , есл и н ео б ходи м о построить та бл и цу ч а стоты испол ьзо в а н и я отдел ь н ы х сло в в некотором тексте н а естестве нном я з ы ке, т о дл я п р едста в ­ л е н и я та бл и цы в п а м яти лучше использовать б и н а р ное д > рево поиск а . С другой стор о н ы , есл и с р а в н и вать п о и с к r ю дереву с м етодом хеши ров а н и я , кото р ы й будет р а сс м отре 1 1 н и ж е ( р азд. 23) , т о о к а з ы в а ется , что поиск по б и н а р н о м у дереву хотя и уступ а ет м етоду хеширов а н и я в ч а сти з а т р а т в р е м е н и н а с а м поиск, н о и м еет и свои п р е и м уществ а : с р а в н ительно высоки й коэ ф ф и циент использова н и я п а м ятн для р а з м ещен и я да н н ы х , воз м ожность п олуч ать упо р я доч е н ­ н ы й в а л ф а витном порядке список кл ючей. 3)

П о л н о ст ь ю с б а л а н с и р о в а н н ы е д е р ев ь я

Ка к было пока з а н о в ы ш е , ч и сло в а р и а нтов структуры би н а р н ого дерева с чисJiом узлов п соста вJi я ет

п



1

( �� ) .

1 5 это ч и сл о воз р а ста ет до 9 694 845. Входяща я При п в это ч и сло струю у р а б и н а р ного дерева , пока з а н н а я н а р ис. 2.6, б , очень специ ф и ч н а . Высота этого б и н а р н ого дер е 13 а м и н и м а льн а , а п р а вое и л е в о е поддеревья пол ностью с б ал а н ­ сиров а н ы . Та кое б и н а р н о е де рево н а з ы в а ют полностью сба­ =

лансированным бинарным деревом.

-

В общем случ а е б и н а р ное дерево с п роизвол ьн ы м числом 1 ) н а з ы в а ется пол ­ узлов п ( где п н е о б я з а тел ьно р а вно 2 k ностью сбалансированным деревом, есл и высота левого п од­ дер е в а ка ждого узл а отл и ч а ется от в ысоты п р а вого п одде­ р е в а не более ч е м н а 1 . Если з а д а н о п р а з л и ч н ы х кл ю ч е й , то можно построить стол ько б и н а р н ы х деревьев поиск а , скол ько стр укту р но р а з ­ л и ч н ы х б и н а р н ы х деревьев существует дл я этого п. Н а п р и ­ м е р , дл я п 4 существует 1 4 б и н а р ны х деревьев поиска , по ­ ка з а н н ы х н а р и с . 2.7, в п р едположе н и и , что ключ и р а в н ы 1 , 2, 3 , 4 . Структурно эти де ревья иденти ч н ы де ревья м , по­ к а з а ш 1 ы м н а р и с . 2.5. В соответст в и и с о п р едел е н и е м тол ько чет ы р е структуры и з этих 14 (д, е, н, п) являются пол ностью с б а л а нсиров а н н ы м и би н а р н ы м и деревья м и . П р и п 1 5 с р еди 9 694 845 б и н а р н ы х деревьев поиска будет тол ь ко одно пол 1юстью с б а л а нсиров а н ное б и н а р ное дерево, и м еющее стр у к ­ т у р у , пока з а н ную н а рис. 2.6, б. П р и п 1 6 таких деревьев будет всего л и ш ь 8 и з 35 357 670 б и н а р н ы х дер евьев. Эти п р и м е р ы убедител ьно свидетельствуют о том, что· пол н остью сб а л а н с и ров а н н ы е деревья к р а й не редки да же в случ а е б и · н а р н ы х деревье в . Есл и з а да но м н ожество р а з л и ч а ющихся м ежду собой клю · ч е й , т о к а ж до м у б и н а р ному дереву поиска будет соответство· =

=

=

Поиск д а нных по ключу

53

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

2 4 2 з 2 2 з /2 \з � {\.j л � \)2 х i ' п ро и з вести о б м е н

2j , п о с л е чего воз р а т и т ь с я в н а ч о и п ол о ж и т ь j x i : = : x2i := а .� � 1 . 3. 2 . е сл и x2i < х 21 + 1 , x п ро и з в е с т и о б ме то, е с и x л 2 i + I > i' н и поло = ж и т ь J : = 2 j + 1 , в о з р а т и т ь с я в н а ч ало; xi : : x2f + I 1 .3.3. прн х1 ;;;, m a x (х2 , х 1 + 1 ) закончить а л г о р и т м . 2 1 [Пост рое н и е к о р п о р а ц и и ( в ы ст р а и в а н и е в в и д е " ко р п о р а ц и и " п о следо ­ 1.

1.1.

1.

в ателыюсти х 1 ,

Хп.

Б ол ь ш ее з н а ч е н и е в ко р н е ) . ]

L п/2 J. . , 2 , 1 . оп у стить х 1 ( в д и а п азоне Дл я j

=

• • • •

"

[ С о рт и р о в к а ( и з влечение тел ь ност и х 1 , • • " Хп) . ]

Дл я i

=

п, п

-

xi'

)

. . " хп ·

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

1, . . " 2,

х1 и xi' 1 .2. о п у с т и т ь х 1 ( в д и а п азоне x l '

1 . 1 . п ро и з вест и о б м е н

. •

"

xi_ 1 ) .

Р и с . 3 .8. А горитм. К о р п о р а т и в н а я сорт и ро в к а . л

з н а че н и е н аходится в кор н е , т. е . в п оз и ц и и с адр есом 1 , его о б м е н и в а ют с ч и сл о м , и м е ю щ и м адрес п. Э то п р и ведет к р аз ­ р у ш е ни ю « ко р по р а ци ю> , поэтом у ее необходи м о восст а н ов и ть дл я еще необ р абот а нной ч асти дерев а . Дл я этого произво­ дится перенос элемента и з кор н я вниз, одн а ко этот спуск ог р а н ич е н д и а п а зоном адресов [ I , п - 1 ] ( р ис. 3.7, г) . В р е ­ зультате восста новл е н и я «кор п о р а ц и и » в корень п р иходит второе н а и бт1 ьшее з н ачен и е ; о б м е н и в а е м его с ч исл о м , и м е ю­ щ и м адрес ( п - 1 ) , и п одн и м аем следующее н а и бол ьшее з н а ч е н и е и з д и а п а зона адресов [ 1 , п - 2] . П роводя та кой 1 ) р аз, пол у ч и м отсортиров а н подъем последов ател ьн о (п ·-

1 35

Сортировка

н у ю последовател ьность. Рассмотр е н н ы й н а м и алго р итм п р ед· ста влен н а р ис. 3.8 ( здесь а : = : Ь опер атор о б м е н а з н а че· н и й перемен ных а и Ь } . П р и построе н и и отсор ти р о в а нн о й посл едов ател ьности из « кор по р а ц и и » ч асто производятс я избыто ч н ы е с р а в н е н и я . Это п р оисходит, н а п р и м е р , есл и с р а в н ительно м алое число, р а с пол оженное в поз ици и с адресом п, о б м е н и в ается с н а и · бол ьши м числ о м , р а сположенн ы м в п оз и ци и с адр есом l , -

(1)

�----(4)� �( 10 ) � ( 1 2) А � (14 ) (3)

( 2)

3.9. Корпорати в н а я сорти· ровка с использованием 3 - а р · наго дерева.

Рис.

(11)

( 5 ) ( 6 ) ( 7 ) (8) (9)

(13)

( 15 ) ( 1 6 ) ( 1 7 ) ( 18 )

Чтобы избеж ать избыточн ы х с р а в н е н и й , вначале соде р ж и мое пози ци и с адресом 1 убир ают и з этой позиции и пер емещают в нее большее и з з н а чени й элем ентов, и м еющих адреса 2 и 3. В освободившуюся позицию ( узел } перемещают большее з н а · че н и е и з порожденных узлов, о б р а зуя новый пусто й yз eJI . Эту оп е р а ци ю п р ои зводят последовательно до тех пор , пока н е будет получ е н п усто й л и стьевой узел из ди а пазон а адре­ 1 ] . Соде р ж и мое позиции с адресом п перемеща­ сов [ 1 , п ется в п усто й л ист, после чего осуществляется его подъе м . Этот подъем не будет очень высоки м . Одн а ко в случ ае та кого усовершенствов а н и я усложнится р ассмотр е н н ы й а л го р и т м кор по р атив ной сортиров ки : и з м е н е н и я б удут относиться к об­ р а бот ке первой ступени « кор п о р а ци и » . Корпо р а т и в н ы й м етод со ртировки п р едпол агает и сп ол ь­ зова н и е б и н а р н ы х деревьев, одн а ко этот м етод можно р а с­ прост р а н и ть и н а р- а рное дерево ( р = 2 , 3, . . . ) ( р ис. 3 . 9 ) . П р и подъе м е ч исло, н а ходя щееся в корне, с р а в н ива ется с м а кс и м а л ьн ы м з н а че н ие м ч исел , р асположе н н ы х в р порожде н ­ н ы х узл а х . Т а к же к а к и п р и испол ьзов а н и и б и н а р ного де ­ р ева, можно оп редел ить адреса порожде н н ы х узлов дл я и сходно го узл а с адресом j. Адреса порожде н н ы х в е р ш и н ле­ ж ат в д и а п а зоне от (jp - p + 2} до (jp + 1) , а адрес и сход· но го дл я уз л а с адресом j о п р едел яется к а к L (j 2 ) /р j + 1 . Г лу б и н а р-а р ного дерева дл я п р едставления п оследователь­ но сти и з п эле м ентов р а в н а L logp ( п ( р 1 ) + 1 ) j . Ч и сло у з лов р - а р н ого дерева глу б и н ы h сост а вл я ет (ph- 1 1) / (р - 1 ) + q, где ( 1 � q � ph-1 ) . О п редел и м ве р х н и й предел затрат н а кор пор атив ную со р ти­ ров ку . Для п р остоты буде м р а сс м а т р и вать сбала нсиров а н н ые -

-

-

-

-

Глава 3

1 36

р - а р н ые деревья. Для н есбал а нсиров а н н ы х р-а р н ы х дер е в 1,ев п остроения а н а лог и ч н ы п р иведе н н ы м н и же . П р и осу­ ществле и и о б м е н а между исходн ы м и порожденн ы м и уз­ л а м и необходи м о р ср а в н е н и й , поэтом у число обменов со­ ста вл яет са мое бол ьше 1 /р числа с р а в н е н и й . П р одол ж а я о б м е н ы м ежду исходны м и и порожден н ы м и верши н а м и , и но­ гда можно вы п ол н и т ь k о б м е нов, п р оизведя ( k + 2 ) п е р е м е­ щен и й , одн а ко эта воз можность п ренебреж и м о м а л а . П р и подъеме одно г о узл а , р а сположен ного н а s - й сту­ п е н и сверху, дл я кор п о р а ци и необходи м о с а м о е б ол ьшее (h - s) обменов. П о с кольку ч и сло узлов уровня кор п о р а ци и сост а вляет ps- 1 , верхн и й п редел ч и сл а о б м е нов для всех ис­ ходны х узло в будет в ы р а жаться к а к

н

"\"" _ � (h - s) p s 1

h- 1

S=I

ph- 1 _ 1

= h --р=-1-

- (---,;=-! h ph - 1

ph - \ (р \ )2 _

) = р=-т n-h

·

П р и восста новл е н и и посл е в ы б о р а н а и большего з н а че н и я в п одде р е в ьях в ы соты s после спуска числ а , н аходящегося в к о р н е , можно возв р атиться на s-ю с тупень . Теперь верхн и й п р едел ч и сл а обм енов дл я всех узл ов будет в ы р а жаться к а к · h

I

s= I

-- -

- - -

+ l ) ph - (h sp s - 1 1 р

p h+ i _ \ n-h 1 . 1 )2 - пh - р (р

О бъеди няя эти в ы р а же н и я , получ и м верх н и й п редел ч и сл а о б менов nh = п \ о gР п . Верхн и й п р едел ч и сл а с р а внени й в р р а з бол ьше это й вел и ч и н ы . Т а к и м о б р а з о м , вер х н и й п р едел з а т р а т н а кор п о ­ р а ти в н ую сорти ровку будет сост а вл ять п lo g п. О п редеа ить среднее з н а чение затрат для в ы пол н е н и я кор п о р ативной сор­ ти ровки достаточно сложно. Исходя и з п р а ктического оп ыта , можно утверждать, что средн и е затр аты та кже соста в л я ю n \ o g n. Ка к будет з а в и с е ть верхни й п р едел этих затрат от и з м е­ нения р ? Ч исло обменов п \ o gp п с н и ж а ется с увел и ч ен и е м р , а ч ис л о ср а вн е н и й рп \ o gp п с ростом р увел и ч и в а ется . По­ этом у дол ж н о существовать опти м а л ьное з н а ч е н и е р. П р и м е м з а еди н и цу и з ме р е н и я вре м я , необход и м ое для с р а в н е н и я . Тогда есл и д л я о б м е н а требуется в а р а з ( а. > 1 ) бо ь е в р е м е н и , то в ер х н и й п р едел в р е м е н и будет составлять (п log п ) (р + a)/l o g р.

т

лш

- 1)

р , п р и котор о м з н ачение это го в ы р а же н и я будет н а и мень­ ш и м , о п р еделяется соотноше н и е м р ( l o g р

= а,

и оказы-

1 37

Сортировка

в а ется, что может быть и так, что с у веJl и че н и е м а. з н а че­ н и е р тоже увел и ч и в а ется . На п р а ктике ч исло обменов ока­ з ы в а ется меньше числа с р а в н е н и й в 1 /р р а з и з а висит о т р а з н и цы между средн и м з н а чением и вер х н и м п р едел ьн ы м з н а че н и е м в р е м ени выч исле н и й и к а ч еств а прогр а м м ы . До­ ст аточно хорошей п р а кт и ч еской оце н ко й для р считают 3 и л и 4 . Корпор а ти в н ы й м етод м ожет п р и м е н яться и дл я дру­ ги х целей. Идеал ь н ы м случ а е м п р и м е н е н и я р ассмотренного м етода является реал и з а ция п р иор итетных очереде й , т. е. извлечение из некоторой неотсорти ров а н но й последо в а тель­ н ости и з п элементов k пер в ы х или k- го п о з н а ч е н и ю эле­ мента . В это м случ ае мо жн о огра н и ч иться k шага м и сортировки кор порати в но й посл едова теJi ьности . Ал горитм з а к а н ч и в а ет р а боту з а k l og 2 п с р а в н ен и й и перем ещен и й . Для упрощен­ ного а л го р и т м а в ы бо р а достато ч н о (2п k 1 ) k/ 2 с р а в нени й . П р и ч исленном и нтегр ирова н и и по некоторой области по­ с ледняя р а з б и в ается некото р ы м о б р а з о м н а участки и п ро­ изводится оценка а бсолютной ошибки дJiя ка ждого отдель­ ного уч астка р а з б и е н и я . З а счет увел ичения ч исла точек и нтегр и р о в а н и я п утем в ы б о р а участка р азбиения обл а сти с н а и боJi ьшей оши бкой и более детал ьного его р а з б и е н и я можно повысить точ н ость и нтегрирова н и я . П осле с н и ж е н и я о ш и б ки н а р ассмотренном у ч а стке п роизводят выбор участка с н а и боJi ьшей оши бкой из ост а в ш и х с я . Повторяя этот про­ цесс , можно поJi учить кор п о р ативную последовательность у ч а ст ков р а з б и е н и я о бл а сти , р а сположен н ы х в пор ядке воз­ р аста н и я о ш и б к и . При это м для обесп ечения возможности повышения эффект и в ности а л го р и т м а за счет детального р а з б и е н и я обл а сти с больш и м изменением функци и н еобхо· ди м о испол ьзовать п одп рогр а м му, подде р ж и в а ю щую ко рпо­ р а ти в н ую структуру путе м добавления в нее новых эле­ ме нтов ( в с а м ы й последн и й адрес ) и их п одъе м а в нуж­ ное место. П р и модел и р ов а н и и р а ссея н и я ч а стиц м етодо м Монте­ Карло для слеж ен ия з а ч а стица м и , ч ис.1 0 кото р ы х р а стет n резул ьтате р асщепл е н и я , испол ьзуется метод, осно в а н н ы й н а п р едпочтител ьности более « в а ж н ы х » ч а стиц, обладающих большей энергией и м еньшей вероятностью р а сщепл ения. В это м случ ае та кже п р и м е н я ется кор п о р а ти в н ы й м етод, бл а ­ года ря котор о м у можно осуществлять контроJi ь з а м одели ­ р ов а н ие м с помощью о б р а зо в а н и я ко рпорати вно й структу р ы: с са м о й в а жной ч а стицей в корне. Ко р п о р а ти в н а я стр у ктура п р и м ен я ется та кже для п о ­ с тр оен ия н а чальн ы х отрезко в и в случае внешней сортировки. р а сс м а т р и в а е м о й в р а зд. 2. ·

-

-

Глава 3

1 38

5 ) Ме тод Ш елл а

Метод п ростых вставок дает хороши й эффект л и бо в слу ч а е м а лого ч и сл а эле ментов сорти р уе мо й п осл едовател ь­ ности , л и б о в сл учае н ебольшого числ а п е р е м ещ е н и й , в ы п ол­ н я е м ы х при сортировке. Эти особенности был и и спользов а н ы п р и р а з р а ботке а н алоги ч ного е м у усовершенствова н ного ме­ 8, по ­ тода сорти ровки . Поясни м этот м етод дл я случ а я п к а з а н н ого н а р и с . 3 . 1 О. Р а зобьем всю последовательность на =

5 '

5 ·1

Р ис. 3 . 1 0.

6 1

2

з

]

4

8

6

2

7

з

2

4

5

6

8

7

1

8 1

Сорти ровка м етодом

Ш�:лл а .

ч еты µ е гр у п п ы по д в а э л е м е н т а в к а ждой , ( х 1 , х 5 ) , (х2, х6 ) , (х3 , Х1) (х4, хв ) , и проведем сортир ов ку в к а ждой из эт и х , xk�). г р у п п . В р езультате пол у ч и м п о следовател ьность х \2 ), З атем р азобьем полученную последов ател ь ность н а две гр у п ­ п ы п о ч етыре элемента в каждо й , ( х \2) , х �21, х�2), х �2) ) , ( х �2>, х�21, х�2) , х �) ) , и проведем сортир овку в к а ждой из н их. Пол у­ , х �3) отсор ­ ч е н н у ю в р езул ьтате последовател ьность х \31 , тируе м теперь уже всю цел и к о м . Та ки м обр а з о м , мето д со­ стоит в р а з б и ен и и м а ссива н а группы и в п оследов ател ь н о м у м е н ьше н и и вдвое ч исл а г р у п п з а счет п осл едовател ьного удвоен и я р а з м е р а груп п . Идея метода состоит в то м , что п р и м а л ы х р а з м е р а х групп пере меща ются эле менты последов а ­ тел ьности, достаточ н о дал еко отстоящие друг о т друг а , а п р и увел ичени и р аз м е р а группы оказ ы в ается воз м о жн ы м о бх о­ диться уже б олее б л и з ки м и п е р е м ещен и я м и . В р ассм отр енном п р и м ер е п б ы л о сте п е н ь ю дво й к и , в р е­ зул ьт ате чего вел и ч и н а к аждого последующего ш а г а р аз б и е ­ н и я о п р едел ял ась к а к ч а стное от деле н и я п опол а м в ел и ч и н ы п р едыдущего ш а г а : 4 , 2 , 1 . Одн а ко т а к а я посл едовател ьн ость ш агов р а з б и е н и я несуществен н а . Мож но пол ьз оваться л юб ой посл едов ательностью, в кото р о й посл едн и й ш а г р а ве н 1 , н а ­ п р и м е р п осл едовател ьн остью , п р едставля ющей собой н а ту­ /i 1 < h 2 < . . . < h 1 ::::;; п/2. С о р т и ­ р альн ы й р я д ч исел 1 ) . (х2, р овку в соответствующих гр у п пах (х1 , X 1 + hs • X 1 + 2hs• (xhs - 1 • X2hs- l • Xз hs - 1 • ) М О )К Н О П рО­ X2+ hs • X2 + 2 hs • ), ВеСТИ дл я s t, t - 1 , . . . , 1 . А н а л о г и ч н о , п оложив h k = 2h k - i , :м о жн о п о л у ч и т ь б о лее р ацион ал ьн у ю п осл едов ательность ш а.•













=





=









• '





• ,



1 39

С ор т ир ов ка

гав сорти р о в к и 1 , 4, 1 3 , 40, 1 2 1 , 364, . . , полученную п о пр а в илу hk = 3hk-I + 1 . Ан а л из этого м етод а , п р едложен н ого в 1 959 г. Д . Л . Шел­ л ом , достаточно сл ожен и п р и водит к и нтересн ы м , до кон ца не р е ше н н ы м м а те м атически м зада ч а м . « Б ыстр а я сортиров к а » , которую м ы р ассмотр и м следу ющей, и м еет п р е и м у щества п е р ед эти м м етодо м и поэтом у более интересн а дл я н ас . .

3 . 1 .3. « Б ы стр ая сорт и р о в к а ))

Пусть зада н одно м е р н ы й массив ( ф а й л ) или его ча сть ( l ::::;;; j ::::;;; r) , в котором п р оизводится с р а в н е н и е и о б м е н эл е ментов. О п р едел и в н е кото р ое з н а ч е н и е кл юча v в к а честве эта­ л о н а , ф а йл можно р аздел ить на три ч асти со следующи м и свойств а м и : А [j]

п усть

l :=:;;; т :=:;;;

r,

A [ i ] :=:;;; v , А [т] = v А [ j] > v

тогд а

l :=:;;; i :=:;;; т

-

1:

т + 1 :=:;;; j :=:;;; r :

л е в ы й п одф а йл; ключ-эталон

праrшй подф а й л .

Кл ючевое з н а ч е н и е А [ т ] = v з а н и м а ет п озицию, соответ­ ствующую положен и ю v в отсортированной последо в ател ь1.

2. 3. 1 . 3.2. 4. 4. 1 . 4.2.

Е сл и 1 < r, вы полнить п у н кт ы 2 4. и н аче зако нч и т ь выполне ние ал го ри т м а . Пол ожить v : = А [ / ] , i : = 1 + 1 . j : = r. У величивать i н а 1 до тех пор, пока А [ i ] < v. У м е н ь ш а т ь j на 1 до тех п о р, пока А [j] > v. При А [ i ] � v > А [ j ] , есл и i � j, п роиз вести о б м е н А [ i ] : = : А [ j ] и п е р е й т и к ш а гу 3. 1 ; есл и i > j, п роизве ст и о б м е н А ( ! ] : = : А [ j ] и з а ко н ч и т ь выполнение ал го рит м а . [ Р а зделение н а 2 подф а й л а з ю 2. Рассмотр и м в о б р а т н о м пор ядке стро к и табл. 3.3, построе н н о й д л я 4 - п утевого сл и я ­ н и я . Для ка ждой строки постро и м четверку ч исел , соответ­ ствующую количеству отрезков в ф а й л а х , вовлечен н ы х в сл и я н и е :

( l , О , О, О) , (4 , 4 , 3 , 2),

(l , 1 , 1 , 1 ),

(8 , 7 , 6 , 4),

(29, 27, 23, 1 5) ,

(2, 2, 2, 1 ),

( 1 5 , 1 4 , 1 2 , 8) , (56 , 52 , 44, 29) ,

Есл и обоз н а ч ить г р у п п у из четырех эле ментов п-го ш а га че ­ рез ( d n , Сп, Ьп, а п ) ' то

+ С п , C n + l = d n + Ьm Ь n + l = d n + ап , + Сп- 1 = а п + dn -2 + Ьп - 2 = = ап + an - l + dn-3 + ап-3 = ап + an - l + an-2 + а п - Э ·

dn+ l an + I

=

=

dn

dn = dn- l

О п р едел и м р ядка :

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

ч исел

F �4 > = F\4) = р�4> = О,

F�4> = 1 , ( ) 4) 2 + 4 I - рп( 4) + р (п4) 1 + р (nF n+ _

т огд а

Ф и бон а ч ч и 4 - го по ­

4) L'(пЭ



(п

=

3,4, . . . ) ,

) а п = F(4 n+I >

ь п = Fn( +) l + р(4) п'

4

(4 ) 1 • (4 ) I + р (4) п + р пСп = F n+ ( 4J 1 + р(п( 4) l + pп( 4J + p п4! 2• d п - р n+ __

ап + Ьп + Сп + dn

=

4 F �� l + BF�) + 2 F �� l + F�4�2·

Та к и м о б р а з о м , есл и з а д а н ы а п + Ьп + Сп + d n н а ч а л ь н ых от­ рез к ов , то, р а с преде л я я эти отрезк и н а 4 ф а й л а п о а п , Ь п ,

161

Сортиро в ка Сп,

п ш а гов полу­ отсо рт и ров а н ну ю последов а тел ьность В о б ще м случ а е п оследовательность ч и сел Ф и бон а ч ч и р- го п ор ядка оп ределяе k н (Л Е а ) , долж н а быть п о л ностью з а ко н ч е н а о б р а ботка п е рвого блока ф а й л а Ре , и в ы ш еп р и веде н н а я ф о р м ул а п о к а з ы в а ет, ч т о сум м а ч и ­ с ел этих з а п исей п р ев ы ш а ет ч и с л о з а п и се й , соде р ж а щихсf!

1 74

Гл ава З

�. �z �з W/1 r//////д#//Л///!/1 r//////Л//Лh'Ш//4

FA

kв1

Fc

Fo

FA Fв Fc

1

1

1

FA

1

Fo

kc

ko 1

f-----�

1

Fc

W///1 1

1

Fo



kвz

W(//1 r/!//////!///!//Л4



1

1

1

ЬА

kA z

kA I

wил//1'1 r///(fW/!///Ш///A1

Ьв

Ьс



kв 1

W/Л///

kc 1

W///1"/!/!/Ш1 Ьо

}� }р

kвz

��

wл41

ko 1

li

kA I

kAz

wq F/////Л//Л/&////1 ·

kв 1

.

kaz

wл41 r///////(/l/!/fЛ1 kc 1

kcz

f"#/////4 уzм//илл/ли/1 ko 1

W:\

8

Рис. 3 . 24 . В вод дл я р п утевого сли я н и я с использованием 2р буферов. 4 . Отрезками показа н ы буфер а ; штриховкой показ а н ы необ­ Случа й р р а бота н н ые ч а сти буферов. Д а н ные из буфер а выводятся слева. а слу­ ч а й , когда отдельные ф а йлы исп ользуют не менее двух блоко в ; 6-случ а й , когда к а ждый из а ф а й л о в использует более одного блока, а ка ждый и з � ф а й л о в использует ровно о д и н бло к ; в состо яние, в котор ом необходимы 2р буферов. =

-

-

в одно м блоке . Т а к и м о б р а з о м , есл и в м о м ент, показа н н ы й н а р и с . 3.24, 6, следующ и м считы в а ется блок ф а йл а с н а и ­ м е н ь ш и м з н а ч е н и е м и з kA 2 , kв2, kc 1 , kи , то з атр аты в р е м е н и н а ожида н и е ввода отсутствуют. Итак, в любом из случ аев, пока з а н н ы х на рис. 3 .24 , а, 6, и з к а кого б ы ф а йл а ни считывался следую щ и м блок, в м о ­ м ен т око н ч а н и я считыва ния н о вого вводного блока опять в оз н и к а ют услов и я , п о ка з а н н ы е на одно м и з рис. 3 .24, а и л и 6, и л и з а к а н ч и в а ется отрезок ка кого-л и б о ф а йл а . В слу­ ч а е , показ а н но м на рис. 3.24, в ( здесь и з о б р а ж е н м о м е н т окон ч а н и я считы в а н и я 2- го блока одного из ф а йлов FA , F 8 ,

Сортировка

1 75

fc ) , необходи м о н а чать считы в а н и е сл едующ е го бл ока ф а й­ ла F о, т. е. в любом слу ч а е необходи мо 2р буферов. 3 ) Ви р т уальн а я память

Ш и р о кое р а сп ростр а н е н и е в а рхитектур е сов р е м е н н ы х Э ВМ получила в и ртуа л ь н а я п а м ять. Можно л и в случ а е б ол ьшого в и ртуального адресного п р остр а нства о гр а н и ч иться испол ьзов а н ие м м етодов сорт и ровки в оперативной п а м яти, оп и с а н н ы х в р а зд. 1 , и л и и здесь необходи м п е р еход к внеш ­ ней сорти ровке? В и ртуал ь н а я п а м ять отл и ч а ется от других в идов п а м яти ка к подде р ж и в а ю щей а п п а р атурой, так и о п е р а ци о н н о й с и ­ сте мой, под уп р а вл е н и е м которой осуществл яется р а бота с не й . Во-пер в ы х , даже при в н ут р е н н е й сорти ровке в ви рту­ а льно й п а мяти р е а л ь н а я о б р а ботка вы пол н я ется с испол ьзо­ ва н ие м внешней п а м я т и , п оэто м у необходи мо учиты вать ее вл и я н и е - неизбеж н ы е п р и это м затраты н а з а п ись и с ч и т ы ­ в а н и е . И наоборот, считы в а н и е и з а п ись п р и внешней со рти ­ ровке почти иденти ч н ы п е р е м е ще н и я м з а п исей в ви ртуал ь н о i:f п а м ят и . И з сообр ажен и й п р а ю и ч еского удо бства о б ы ч но го­ раздо охотнее испол ьзуют внутренню ю сорти ровку. П р и это �1 в а ж н ы м ф а ктор о м , вл и яющи м н а эффективность, является и нтенси в ность использо в а н и я м а ссы сильно р а зл и ч а ю щихся адресов з а с р а в н ител ьно короткие в р е м е н н ы е и нтерва л ы . С это й точки з р е н и я в среде ви ртуальной п а м яти б ы ст р а я сорти ровка ока з ы в а ется лу ч ш е кор п о р а т и в н о й . П р и п одъе м е з н а че н и й в слу ч а е ко р п о р ативной сорти ровки адреса кл ю ч е й , в овле ка е м ы х в с р а в н е н и я , и з м е н я ются с бол ь ш и м п р и р а ще­ нием, что может п р и вести к бол ьшему кол и ч еству стр а н и ч ­ ных о б м е но в . П р и б ы ст рой сорти ров ке н а ка ждо м ш а ге ср а в н е н и е и о б м е н п роиз водят дл я кл ю ч е й с адрес а м и , п л а в н о и з м е няющи м и ся о т о б о и х ко нцов к центру. З а счет этого п р и бы стро й сортировке с р а в н е н и е и о б м е н , ка к п р авило, п р о и з ­ в одятся в относител ьно у з к о м д и а п азоне. Есл и в среде виртуальной п а мяти испол ьзуется в н е ш н я я сортировка, уп р а вл я е м а я п р и кл адной прогр а м мо й , и м еет см ы сл п р а кти чески используемое п рост р а н ство п а м яти о рга ­ ни зовать в реально й , а не в ви ртуал ь н о й п а мяти . Во вс я ко м слу ч а е дл я внешней сорти ровки дол жен обесп е ч и в аться до­ с таточ н ы й объем реальной п а м яти . Есл и это требова н и е н е в ып ол н я ется , использов а н и е в и ртуальной п а м яти м ожет п р и ­ в е ст и к з а м етному с н и ж е н и ю э ф ф екти в ности сорти ровки. 3 . 3 . О б ъ е м в ы ч и с л е н и й п р и со р т и р о в к е

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

1 76

Глава 3

чей п з а п исей, исследо в а л и , в к а ко й функциональI!ОЙ з а в и ­ с и м ости от п н а ходится ч и сло «однокр атных опер а ци й » , т. е . ч и сло н еобходи м ы х с р а в н е н и й , об менов, опе р а ц и й вы вода и в вода и т. д . С м ы сл оценки р а з л и ч н ы х ал горитмов з а клю­ чался в н а хожде н и и и х усредн е н н ы х х а р а ктеристик. И ссле­ дуем теперь п р едел ь н ы е з н а че н и я затрат при и спользов а н и и р а з н ы х а л го р итмов. 3 . 3 . 1 . М и н и м а л ь н о е ч и сло с р а в н е н и й

П р ежде всего оце н и м ч исло нео бходи м ы х о п е р а ци й с р а в н е н и я , н е н а кл ады в а я огр а н и ч е н и й н а ч и сло п е р е м еще­ н и й и л и о б м енов , а та кже н а о бъе м п а м ят и . Рассмотр и м сл у­ ч а й , когда о п ределе н ие большего и л и м е ньшего из двух эле­ м ентов п р оиз водится тол ько с п о м ощью с р а в н е н и я и х м ежду собой. П р и это м исключ и м из р ассмот р е н и я сорти ровку по основ а н и я м с исте м сч исле н и я , р ассмотр е н н ую в р а зд. 3 .2 . 4. Т а м уже отмечалось, что необходи мое ч и сло с р а в н е н и й дл я сорти ровки п о основ а н и я м систем счисл е н и я составляет Г \ оg 2 n ! l . Р а ссмотр и м с р а в н е н и я четы рех в з а и м н о отл и ч а ющи х ся ч и сел а, Ь, с, d (п = 4 ) . На р и с . 3 . 25 дл я о боз н а ч е н и я а < Ь используется а -+ Ь . Н а р и с . 3.25, а п р и ведена тол ько 1 /4 всех 4 ! = 24 случ а е в с р а в н е н и я , з атем п о ка з а но, что и м еет место о б м е н м ежду а и Ь , с и d и отсорти рова н н а я посл едова тел ь­ ность получ а ется в р езультате п яти с р а в н ен и й . Н а ш а ге 3 с р а в н и в а ются два бол ь ш и х эл е м е н т а . Дальнейшее в ы п ол не­ н и е п роцеду р ы м о ж н о было б ы осуществить и с р а вн е н и е м м е н ь ш и х элементов . А может б ы т ь , н а шаге 3 н адо с р а в н и ­ в а т ь бол ь ш и й эл е м е н т с меньши м ? К а к м о ж н о видеть н а р и с . 3 . 2 5, 6, сорти ровка п ятью с р а в н е н ия м и обеспеч и в а ется тол ько в п е р в о м сл учае, а остал ь н ы е два потребуют бол ь­ шего ч и сл а с р а вне н и й . Ита к, дл я ответа н а воп рос « Ка ково м и н и м ал ь но е ч и сло с р а в н е н и й ? » необход и м о о п редел ить м и н и м а л ьное ч исло ср а в ­ н е н и й дл я н а их удшего случ а я . Для этого следует всячески из­ бегать сл учаев благо п р и ятного р е ше н и я . Есл и уже о п редел е н пор ядок элементов п р и т р е х п е р в ы х с р а в н е н и я х , последую ­ щее с р а в н е н и е п роведе м , испол ьзуя р езультаты п е р вы х трех , м етодо м дел е н и я попол а м от середи н ы . П р и с р а в н е н и и п яти р а зл и ч н ы х ч исел а, Ь , с , d, е дл я ч и сел а, Ь , с, d до ш а га 3 п ро цедура соответствует пока з а н н о й н а р и с . 3 . 25 , а . Есл и , н а п р и м е р , в р езультате окажется, что а -+ Ь -+ d, с -+ d, то дальше н адо в н а ч а л е е с р а в н ить с d, а з атем с ка к и м -то и з эл е м ентов а , d и оп р едел ить, куда дол жен быть вст а влен э л е м е н т е в п о сл едов ател ь ности а -:>- Ь -+ d ( а может б ы т ь , д о и л и п о с л е нее) . З атем дву м я с р а в н е н и я м и о п р едел и м ,

1 77

С ортировка

а

Б

Рис. 3 . 25 . Последовательность с р а в 11е11 и я четырех ч н с�;1 а, Ь, с, d : а - сор ­ т и р о в к а п ятью ср а в н е н и я м и ; 6 - сортировка шестью с р а в н е l! и я м и .

в к а ко й из отрезков м е н ьше d ( дл и н ы 3 и л и 2 ) в это й после­ довательности н а до вст а в ить с, и в р езультате получ и м от­ сорт и р о в а н ную п осл едовател ь ность з а с е м ь с р а в н е н и й . Ка к п р а в ило, вы сокую эффект и в ность о бесп е ч и в а ет т а к н а з ы в а е м ы й м етод сорти ровки вста в ка м и и сл и я н и е м Ф о р ­ д а - Джонсо н а . В это м м етоде сочетаются сл и я н и я и вста в к и . Алгоритм сорти ровки вста вка м и и сл и я н и е м в рекурси вно м виде п р едста вл е н н а р и с . 3.26. Алго р и т м . Сортировка сл и я н и е м со вста вка м и 1 . Ф о р м и руя из п ч исел L n/2 J п а р , п роиз вести с р а в н е н и я в п а р а х . Е с л и п нечетно, то оди н э л е м е н т н е участвует в сравнениях. 2 . Отсо рти ровать вста вка м и и сл и я н и е м 1. n/2 J больших элементов п а р , н а йден н ы х н а ш а г е 1 . Резул ьтат п р едст а ­ в и т ь в виде, п о к а з а н1юм н а р и с . 3.26 ( 1 ) . Есл и п нечетно, взять в к ачестве кон ца п ол о в и н ы последовательности b r n/2 1 ·

1 78

Глава 3

3. 1 . С р а в н и·� ь Ь 3 с п оследо в а тел ьностью Ь 1 -+ а 1 -+ а 2 • Есл и с р а внение н а ч и н а ется с а 1 , результат может быть полу­ чен двум я с р а в н ен и я м и . В полученной последовател ьно­ сти вста вить Ь2 на отрезке м е н ьше а 2 . Вста в к а будет в ы ­ пол н е н а за два с р а в н е н и я . П р едста вить резул ьтат в в и де ди а гр а м м ы , п о ка з а н ной н а р и с . 3 .26 (2 ) . 3.2. С р а в н ить b s ( с м . р и с . 3 . 2 6 ( 2 ) ) с последовател ьн остью с , -+ . . . -+ С5 -+ а4 дл и н ы 7 = 2 3 - 1 . Вставка будет в ы (2) (3)

(ff)

(c , -c, ..., c ,-c,-c,- eo-;•) -; s -/6� / Ь, �

,fu � Ь6 · · · / Ь1 �

1 Ьв �

1 Ь• �

Ca!'fot! 5ольшt!с 2 &maBlfu 8 11ос.11еllо8атсльность !Jлинь1 7

·: ·

1

1

1 biz

d1 - d2 - d3 ._ · · · - d 1 0 - a 6 - a 1 - a 8 - a9 - a 1 0 - a 1 1 - a 1 2 ;

.t 1 - х2 - · · · -з:21" -· a r

bio



+ 1 - a 1 + 2- · · · - a ' ••L "

1 ! . 1 ь .".+ 1 .� · · · �

Рис.

"

ь, 1



.- . .

.

..•

·· ·

Саное 5ол6шее б 8 ПОС/Те _ i108ате.11ьность ОЛUН6/ f.J я 11 истаиоlf

3 . 26. Алго р и т м с о р т и р о в к и вста в к а м и и с л и я н и е м .

п о л н е н а за т р и с р а в н е н и я . С р а внить Ь 4 с отрезко м мень ­ ше а 4 получ е н н о й последовател ьност и . Е сл и дли н а этого у ч а стка 7 или 6, то на вст а в ку потребуется три с р а в н е ­ н и я . П р едста вить результат в виде ди а гр а м м ы , пок а з а н ­ ной на рис. 3.26 (3) . 3.3. Д а л ее з а ч еты р е с р а в н е н и я вставить Ь 1 1 ( а не Ь 1 ) в нужное место последовател ьности d 1 -+ -+ d1 0 -+ 1 . Элементы Ь 1 о , b g , . . -+ а 5 -+ . . . -+ а 1 0 дли н ы 1 5 = 2 4 . . . , Ь 6 вставляются также з а четы ре с р а в н е н и я ( к а ж­ ды й в нужное м есто п оследо в ател ьности дл и н ы 1 5) . [ Обоб ща я 3 . 1 - 3 . 3 , о п реде л и м ш а г 3 . k , для 1< от о­ р ого п р едста в и м п осл едо вательность н ату р а л ь н ы х ч исел k ( tk) � как t 1 = 1 , tk _ 1 + tk = 2 (k = l , 2 , . ) . Тогда 2tk + k + U1< + 1 - t k - 1 ) = 2 - l (k = l , 2 , . . . ) . П р и в ы п о л не н и и b1 k _ 1 + 1 в у к а з а н н о м п о­ ш агов 3 . 1 - 3 . 3 b 1 k ' b1 k _ , , р ядке с р а вн и в а ют с п оследовательностью длин ы м а кси­ k 1 (k = 1 , 2 , 3) . Дл ин а отсор т и р о в а н н о й ч асти мум 2 + I п оследов ательности , п о л у че н н о й в результате т рех ш а­ гов , сост а в ля ет 2 tk + , + 1 .] 3 . k . Р е з ультат (k - 1 ) повторен и я ш а г а 3 п редст а в ить в в иде д и а гр а м м ы , п о к а з а н н о й на р ис . 3 . 26 (k) . Здесь в ве р х­ нем р яду п р и веде н а последов ательность до m in (tk + t • .

-

.



-



• ,

.

1 79

Сортировка

L n; 2 j ) . П р о вести с р а в н е н и е с п оследо в а те л ь н ость ю д л и н ы м а к с и м у м 2 k - 1 э л е м е нто в , у ме нь ш а я з н а че н ие и нде кса н а 1 , н а ч и н а я с b1 k + 1 (если в п роцессе с р а вн е н и я р яд о к а жется з а к он че н н ы м , то н ач и н а я с Ьг пr2 1 или bL n 12 J). [ О б о б щ е н и е м ш аг а 3 алго р ит м а я вляется " ш аг 3 . k для l , 2, п о вторять д о з а ве р ш � н и я со р т и р о в к и " . ] k .

=

.

.

Ита к, в случае испол ьзов а н и я м етода сорти ровки вст а в­ ка м и и сл и я н и е м о боз н а ч и м ч и сло с р а внен и й п р и сорти ровке п элем ентов ( ч исел ) ч е р ез F ( п ) . Н а ш а ге 1 число с р а в н ен и й со ста вляет L n/2 J , н а ш а ге 2 - f ( L n/2 J ) , н а ш а ге 3.k ­ t") ; если о боз н а ч ить т са мое большее (k + 1 ) ( tн1 = Г п /2 1 < fн1 . то число с р а в н е н и й н а ш а ге 3 . k сост а вл я ет (k + 1 ) ( m tli) . Н а ш а ге 3 ч и сло ср а в н ен и й р а в н о =

-

-

k- l

2:

i= l

и + 1 > u1 + , - tj> + (k + I ) (m - tk ) =

Поскол ьку то п р и t" < r п/2 1 � lн1 в конце концов получ и м

F (п) = Ln/2J + F (Ln/ 2 J) + (k +

l ) Гп/21 - L2 k + 2 / 3 J.

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

о т к уд а

F (п)

-

F (п)

F (п =

-

L

1 ) = Г ! оg2 (3/4n ) l ,

1 .;;; k .;; n

Г ! оg 2 (3/4k ) l .

Если поп робуем п ровести в ы ч и слен и я F ( и ) дл я опти м аль· но й сорт и р ов1ш вставка м и и сл и я н и е м , ока жется , что Р ( п ) совп адет с н и ж н и м п р едел о м ч и сл а с р а в н е н и й дл я 2 � п � 1 1 , р авному Г \ о g 2 n ! l ' J . П о н ятно, что п р и достаточно большом п ме тод вставок и сл и я н и й ока жется очень э фф екти в н ы м , од­ н а ко в ка ком ди а п а зо н е р а с п оложены н а илучшие з н а ч е н и я F ( n ) , а т а кже ка ково отношен и е н а и м еньшего ч и с л а с р а вне­ н и й к пол н о м у ч ислу п эти п р о бл е м ы оста ются н е р а з р е­ ше н н ы м и . -

1 ) Алго р и т м о п т и м ален также и п р и 2 0 � п � 2 1 (см. Д . Кн ут. Ис­ ку сс тво прогр а м м ир ов а н и я дл я ЭВМ, М., Мир , 1 978, т. 3, с. 226. П рим.

ред.

-

1 80

Гл ава 3

3.3.2.

Со р ти р о в к а с и с п ол ьзо ва н ие м сп еци ал ь н ы х стру ктур

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

!!уп&

IJAtв.:нJa _EZ:

.Jaпacнotl

.//

П!JП!Ь



Ocнo/Jнoii путь а



/1уть Поо"/J езi!а E5::lS:J

�� F< Fd h as h i n g , Сотт. А С А! . :.!5, 9 1 1 -926 ( 1 982) . 1 8. Н исихара С . , Х :t ги в а р а Х . , Метод открытого хеширов а н и я с предска ­ зателем, Дзёхо сёр и , 15, 5 1 0-5 1 5 ( 1 974) . 1 9. J a e s c h k e G " R e c i p r o c a l h a s h i 1 1 g : а m e t h o d for g P. n er a t i n g m i n i m a l p e r ­ f e c t h a s h i n g f u n c t i o n s , С о т т . А СМ , 2 4 , 829-833 ( 1 98 1 ) . К

гла ве 3:

К

раздел у 3 . 1 :

20. L o r i n Н" S o r t i n g a n d S o rt i n g S y s t e m s , A d d ison - W e s l ey , 1 975.

2 1 . O k o m a S . , G e n e r a l i z e d h e a ps o r t ,

в

D em Ь i n s ki

Foundations o f Computer S cience, Lec ! L1 r e

Р.

Notes

( e d . ) . Mathem a l ical i n C o m p u ter S c i e n c e ,

88, S p r i n ger-Ve r l a g, 439-45 1 ( 1 980) . 22. K a h a n e r D . К., FO R T R A N i m p l em e n t a t i o n of he a p programs f o r e f f i ­ c i e п t t a t>le m a i11tenance, А С М T r a n s a c t i o n s o n M a t h e m a t i c a l S o f t w a re, 6, 444-449 ( 1 980) . ( C o l lected A l gorithms from АСМ, A l g o r i t l 1 m 56 1 . ) 23. S e d ge\v ic k R" I m p leme n t i n g q u icksort programs. Со т т . А СМ , 2 1 , 847857 ( 1 978) . 24. Нодз а к и А" Сугимото Т" Наде ж н а я быстр а я сорти ров к а , Дзёх о сёри гаккай ромб ун си , 21, 1 64- 1 66 ( 1 980) .

К разделу 3.3:

25. T a rj a n R " S o rt i n g u s i n g n et\Y o r k o f q ll e u e s a n d s t a c k s , J o u r . А СМ . 1 9 , 34 1 -346 ( 1 972) . 26. I m a m i y a А . . N o z a k i А" G e ri e r a t i n g а п d s o r t i n g permuta tio ns .u s i n g restr icted d e q u e s , In[orrn a t io n Prncess ing i n 1 арап, 1 7, 1 1 28-- 1 1 34 ( 1 977) . 27. N o z a k i А" S o rt i n g u o i n g n et\vorks of (\ e q u e s , Jour. Computer and Sy ­ s tem Sciences , 1 9, 309-3 1 5 ( 1 979) . 28. Нодзаки А" Сорти ровка с использованием деков. Дзёх о с ёри гаккай ромб ун с и, 2 1 , 76-78 ( 1 !J80 ) . 29. Нодзаки А" Сортировка с помощь ю п а р аллелыю р асположе н 11 ы х де­ ков, Дзёхо с ёр и гаккай р о мбун си , 2 2 , 274-276 ( 1 98 1 ) .

К гл а ве 4:

К р азделу 4.4. 1 :

Systems p r o g r a m m i n g , Mc G r a w - H i l l , 1 972. [Имеется перевод: Донован Дж" Системное прогр а м м ир ов а н ие. - М . : Мнр, 1 975.J 3 1 . M a rt i n J " C o m p u t e r Data - B a se O r ga n i z atio11s, 2пd ed" P r e n t i c e - H a l l , 1 977. [Имеется перевод: Мартин Д ж " Организация баз да н н ы х в вы­ ч ислительн ы х с1-1 стем а х . - М . : Мир, 1 980.] 3 2 . W a g n e r R . Е " I n d ex i п g d e s i g n c o n s i d e r a t i o n s , / В М Syslems 1 " 1 2 ,

30. Donovar1 J . J "

35 1 -367 ( 1 973) . 33. H e a p s Н. S" J n f o пn a t i n n Retriev a l : Co m p u t a t i o n a l а п d Theoret ic a l a s p e c t s , A c a d e m i c Press, 1 978. 34. R ij sbergen С . J . v a n , J n fo r m a t i o n Retrieval, 2 n d e d " B 11 t terworths, 1 979. К разделу 4.4.3 :

35. S t a n d ish Т. А" D a t a S t r u c t u r e Tec h n i q ues, A d d i so n -Wes l e y , 1 980. Уэмура Т . . Маэrа вэ М" М а ш и н ы дл я баз данных, Сборни к до1