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

книги из ГПНТБ / Левковиц, Д. Структуры информационных массивов оперативных систем

.pdf
Скачиваний:
3
Добавлен:
21.10.2023
Размер:
8.9 Mб
Скачать

р а з в е т в л я ю т ся на три ветви. В конце этой части при про­

ведении выборочного расчета будет показано,

что на

практике фактор ветвления обычно составляет

несколь­

ко сотен.

 

Дерево, показанное на рис. 6-1, является трехуровне­ вым деревом; первый уровень м о ж н о хранить в опера­ тивной памяти, а остальные два уровня — в З У П Д . Дл я иллюстрации определенной стратегии распределения па­

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

некоторых типов

З У П Д , предположим, что устройства

памяти относятся

ко второму или третьему типам, определенным в гл. 2. Если дерево нужно хранить на диске с неподвижны­ ми (фиксированными) головками или на барабане, то

последующие рассуждения остаются справедливыми.

Однако

в этом случае

не имеет

значения, на каких до­

р о ж к а х

хранятся вершины дерева . Н а

рисунке

обо­

значает /-ю д о р о ж к у і-го цилиндра.

 

 

Н а ч и н а я с нижнего уровня дерева, фрагменты клю­

чей, соответствующие

полным

ключам,

можно

читать

в алфавитном порядке слева направо вместе с символи­ ческими адресами Аіз, Аі2, Аіи ..., Ai. Формат каждого поля внутри д о р о ж к и следующий: фрагмент усеченного

ключа/адреса связи с заголовком списка

или с дорожкой,

в которой хранится следующий

уровень/длина списка.

При создании дерева его

вершины

приписываются

фрагментам ключей-терминов в прямом или обратном

порядке.

В рассматриваемом примере выбран обратный

порядок,

поэтому

последние

три

фрагмента

( E Y E R

D Y S O ,

D Ö N L ) помещаются

в правую д о р о ж к у

наиболе

глубокого

уровня

Ті3.

Соответствующие длины

списков

Л І / L I , А2/Ьо

и A3/L3 вместе с

символическим

заголовком

адресов

списка т а к ж е

вводятся в

запись.

Последний

фрагмент ключа на д о р о ж к е называется интервалом до­

рожки . Он т а к ж е

вводится в

д о р о ж к у

второго

уровня

в качестве ссылки. Следовательно,

указателем последней

записи д о р о ж к и Г 1

0

является

E Y E R / Г І З , обозначающий

что E Y E R является

последним

фрагментом ключа

на до­

р о ж к е

третьего уровня

Тіз. П о л е

длины

списка,

равное

нулю

( 0 ) , указывает, что эта ссылка относится к другой

д о р о ж к е в справочнике,

а не к

списку

в

файле .

 

 

Следующие три фрагмента

ключей

(начиная

с

ниж ­

ней части с п и с к а ) — э т о

C R O Z ,

C A R T

и C A R D ;

они

в свою очередь вводятся на следующую доступную до­ рожку (Т&) в соответствии с их адресами связи и дли-

100

нами списков. Последний

фрагмент на д о р о ж к е — C R O Z .

Он

вводится

на д о р о ж к у

второго

уровня

ТІ0 как

ссылка

на

позицию

следующей

записи

и имеет

ссылку

и

нулевую длину списка.

 

 

 

 

 

К а к показано на рис.

6-1, т р а к т о в к а следующих трех

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

ративной

памяти к а к

EYER/Тю и у к а з ы в а е т

последнюю

запись на

д о р о ж к е TiQ

(EYER) . Д л и н а списка

не исполь­

зуется, так как адреса связи уровня, хранимого в опера­

тивной памяти,

не

ведут

непосредственно

к

записям

файла .

 

 

 

 

 

Следующие

три

записи

т а к ж е хранятся

в

обратном

порядке. Это В А К Е ,

B A I L

и BABS . Они помещаются на

дорожку третьего уровня Т, а последний фрагмент име­

ет ссылку на

д о р о ж к у

Г 0 0

в виде

В А К Е / Г О і / 0 .

В списке

остается

еще

один

фрагмент — В А В В . Н а

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

на; В А В В помещается

во

вторую

запись

д о р о ж к и

Too

вместе с адресом связи

Аіз

и длиной

списка

L 1 3 . Послед­

ним фрагментом дорожки

второго

уровня

является

те­

перь В А К Е . Он вводится в запись первого уровня в ви­ де ссылки ВАКЕ/ГооЭтим завершается создание трех­

уровневого

дерева

д л я

15

ключей, список которых

дан

в табл . 6-1.

 

 

 

 

 

 

 

 

 

 

Необходимо отметить, что в действительности

имеет­

ся только

13

ключевых ссылок, т а к

как два

ключа

де­

кодируются неоднозначно. Это имена

B E L L и

B E L L S O N ,

которые оба сводятся к B E L L , и B L A C K и B L A C K W E L L ,

которые сводятся к В L A C .

 

 

 

 

 

 

 

Декодирование

с помощью

этого

дерева

выполняется

следующим

 

образом .

Пусть

надо

декодировать

 

имя

CARD ER. Д л я получения фрагмента

ключа

выделяются

первые четыре буквы CARD. Поиск на уровне оператив­

ной памяти дает, что CARD старше (при алфавитном

упорядочении), чем В А К Е ,

но

младше, чем

EYER;

сле­

довательно, о б р а щ а ю т с я к

д о р о ж к е

второго

 

уровня

Гю-

Эта д о р о ж к а

просматривается

и определяется,

что

CARD

старше, чем B L A C , но младше, чем CROZ; поэтому про­

исходит обращение к д о р о ж к е

третьего уровня Г 1 2 . Вну­

три д о р о ж к и

Тіі точное отображение CARD

 

содержится

в первой записи.

Н а

этом

декодирование

завершается

101

Его

результатом являются

адрес

связи

Л 6

и длина спис­

ка

Ьв.

 

 

 

 

 

 

 

 

 

С помощью этого дерева все ключи,

кроме

ВАВВЕТ,

будут

декодироваться

за

два

обращения

к

диску,

а В А В В Е Т — за одно обращение. Если следовать

указан­

ной

схеме нумерации

дорожек,

то при

первом

обраще­

нии (ко второму уровню дерева)

требуется

перемещение

головок

и поворот дорожки,

в то время

как второе обра­

щение (к третьему уровню) происходит внутри одного цилиндра и требует лишь поворота диска.

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

объясняется тем, что к а ж д а я

вершина занимает

в

З У П Д

объем,

соответствующий физической записи. Р а з м е р

этой

записи

ограничен объемом

З У П Д

либо оперативной

па­

мяти.

Обычно

физическая

запись

соответствует

полной

д о р о ж к е

(например, в 3 000

символов) . Если

тройка

фрагмент ключа/адрес/длина списка состоит из

15

сим­

волов,

то

в к а ж д у ю вершину дерева можно

поместить

200 фрагментов

и декодировать с помощью трехуровне-

го дерева

(200) 3 = 8 млн. ключей. Это означает,

что один

выбор из 8 млн. ключей можно сделать за три обраще­

ния к З У П Д (если верхний уровень,

требующий 3 000

символов, не хранится в оперативной

п а м я т и ) , и за два

обращения, если верхний уровень хранится в оператив­ ной памяти .

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

будет показано, что это является

оптимальным

подхо­

дом .

 

 

 

 

 

Предположим, что

сравнения

в вершине,

хранимой

в оперативной памяти, производятся

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

(на к а ж д о е сравнение

требуется

100

мксек,

т. е.

около

25 машинных циклов) . Тогда максимальное время по­ иска ключа внутри вершины составляет 20 мсек, а сред­ н е е — 10 мсек. Процедуру сравнения можно оптимизиро­ вать, применяя поиск с бинарным разбиением. Тогда на

сравнение и упорядочение интервала требуется 200

мксек.

Количество сравнений

равно в этом случае

log2 200 = 8,

а время поиска

внутри

вершины — 1,6

мсек.

Д л я срав­

нения заметим,

что

время

обращения

к З У П Д

обычно

составляет

20—500

мсек

(точнее, 60—100 мсек).

Следо­

вательно,

время

просмотра

большой вершины в

опера-

102

тнвной памяти незначительно по сравнению с временем обращения к отдельной вершине, хранимой в З У П Д (при использовании оптимального метода бинарногоразбие­ ния). Если просмотр не оптимизирован, это время со­ ставляет от 1/6 до 1/10 обычных времен обращения .

Чтобы иметь возможность оперативно обновлять файл, физические записи, с о д е р ж а щ и е вершины, не дол­

жны быть плотно упакованы, т. е. в конце записи

надо

оставлять некоторое

количество

резервного пространст­

ва,

обеспечивающего

расширение

вершины.

Л а н д а у е р

[Л.

12]

рекомендует

д л я большинства систем

(основан­

ных на различных способах обновления)

оставлять

в ре­

зерве 10% занимаемого объема памяти.

Пусть,

напри­

мер,

к

справочнику

надо

добавить ключевое

 

слово

BINDER . Сначала получается фрагмент

B I N D , который

старше, чем ВАКЕ, но младше, чем EYER, следователь­

но, обращаются

к д о р о ж к е Гю; B I N D младше, чем

B L A C ,

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

обращаются

к д о р о ж к е

Гц.

Поскольку

B I N D

старше,

чем

B E L M ,

но

младше,

чем B L A C , он

должен

находиться

м е ж д у

этими

двумя

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

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

передается в буферную память вывода,

причем

B I N D по­

мещается между B E L M и B L A C вместе с соответствую­

щим адресом ссылки и длиной списка

(равной

единице,

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

ку Гц. Если в результате

предшествующих

обновлений

резервное

пространство

было израсходовано

(10%

ре­

зервного

пространства

на

д о р о ж к е

в 200 ключей

дает

возможность сделать 20

обновлений

до переполнения),

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

ний

фрагмент

проталкивается на следующую дорожку

того

ж е самого

уровня, т. е. следующую дорожку и до­

рожку более высокого уровня надо обновлять совместно.

Например,

пусть

на

д о р о ж к у

Ті2 добавляется

B L A C ,

а интервалом дорожки Гц становится затем

B I N D

(за­

меняющий

B L A C

на

д о р о ж к е Гю). Если д о р о ж к а

Г 1 2

не

имеет достаточного резерва, то на дорожке

Тіз

передви­

гается CROZ и т. д. Если получены сведения об исчер­

пании резервного

пространства

д о р о ж е к или

среднего

количества

продвижений, необходимых д л я

выполнения

103

обновления, то дерево полностью регенерируется н ре­ зервное пространство создается заново. Точный процент резерва является параметром программы обновления. Его значение в данный момент времени зависит от спо­ соба обновления справочника системы и ж е л а е м о г о пе­ риода регенерации. Кроме того, заметим, что требова­ ния при обновлении справочника обычно менее строгие, чем при обновлении файлов, поэтому 10%-ное значение

резерва

по Л а н д а у е р у

адекватно, по-видимому, д л я боль­

шинства

систем.

 

 

 

В т а б л . 6-1

и на

рис.

6-1 изображен декодер с

усе­

чением

имен.

П о д о б н а я

стратегия не подходит для

ре­

ального случая представления ключа в форме Имя/Ве ­ личина (процедура усечения может разрушить всю Ве­ личину или ее значительную часть) . В этом случае воз­ можны два подхода. П е р в ы й состоит в усечении X сим­ волов в Имени и У в Величине и создании фрагмента ключа из двух фрагментов путем их объединения. Дру ­ гой подход более гибкий, т а к к а к он дает возможность создать конструкцию деревьев, приспособленную к усе­ ченным Величинам. При этом создается двухуровневая иерархия деревьев, где первый уровень — это справоч­ ник Имен, а второй содержит справочники Величин. Пре­

имущество такой иерархии состоит в

том, что фрагмент

Имени

не надо

повторять с к а ж д ы м

фрагментом

Вели­

чины.

Кроме

того, к а ж д о е дерево

Величин

может

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

фрагменты

внутри

одного и того ж е

дерева

одинаковы

по длине.

 

 

 

 

К р о м е

быстрого

декодирования

больших

справочни­

ков и относительно простого программирования, другое преимущество дерева состоит в возможности поиска по диапазону . Например, запрос 1 на рис. 4-2 вызывает по­

иск ключа

в диапазоне от

AGE/21 до AGE/30. Системе

з а р а н е е

не

известно',

есть

ли в

файле действительные

значения

ключевого

имени

AGE,

поэтому желательно

провести поиск по списку имеющихся ключей. М о ж н о

написать

программу, которая

будет декодировать

дере­

во И м е н

(в данном

случае она

будет декодировать

AGE)

и направлять

его в

дерево

Величин. З а т е м она

опреде­

лит .границу

наименьшей величины (21) и просмотрит

дерево снизу

вверх,

начиная

с этой точки и кончая

верх­

ней границей

(30). Все величины, полученные при этом

просмотре, декодируются в

соответствующие

адресные

104

ссылки. Кроме того, для

к а ж д о й из них

проводится

по­

иск по списку.

 

 

 

В конце этой главы

будут выведены

формулы, с

по­

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

6-2. ДЕРЕВО ОДНОЗНАЧНО УСЕЧЕННЫХ КЛЮЧЕВЫХ СЛОВ ПЕРЕМЕННОЙ ДЛИНЫ

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

слова, д а ю щ е е

однозначно

закодированный фрагмент.

Набор правил кодирования приведен во втором

и

треть­

ем

столбцах табл .

6-1. К а к

и в

случае справочника

с по­

стоянными

(по длине) словами, ключевые

слова

вначале

упорядочивают

в

алфавитном

порядке

(это

показано

в

левом

столбце

т а б л и ц ы ) .

З а т е м

(как

показано

во втором столбце) получается однозначно закодирован ­

ный фрагмент. Д л я этого

используется

наименьшее,

на­

чиная

слева, количество символов

(требуемое

д л я одно­

значного различения данного полного имени

от

непо­

средственно

предшествующего

имени) .

Следовательно,

В А В В Е Т (первое имя

в

данной

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

можно однозначно закодировать просто буквой

В;

BABSON отличается от В А В В Е Т

четвертой

буквой;

сле­

довательно,

д л я

того

чтобы отличать B A B S O N

от

ВАВВЕТ, требуется закодированный фрагмент BABS *.

Аналогично,

B A I L E Y

отличается

от B A B S O N

буквами

B A I ,

a B A K E R

от B A I L E Y — б у к в а м и

ВАК .

Эта

про­

цедура применяется ко всему набору ключей;

результат

этого показан во втором столбце табл . 6-1.

 

 

 

 

Д л я иллюстрации того, как

закодированные

фрагмен­

ты переменной длины хранятся в виде дерева

в

памяти

на дисках

и к а к

это

дерево

декодируется,

будут

рас­

смотрены д в а примера. В первом примере все 15 имен (табл. 6-1) р а з м е щ а ю т с я на одной дорожке . Во втором, более общем примере будет рассмотрен случай много­ уровневого дерева .

* Очевидно, что BABSON в этом случае можно закодировать фрагментом ВА. (Прим. пер.) >

Г105

 

Распределение

отдельной дорожки

Т а б л и ц а 6-2

 

 

Номер записи

Содержание дорожкн

Комментарии

 

1

6,1

Ключ длимы 6 (1 ключ)

 

BLACKW/AI.L,

Ссылка на ключ BLACKWELL

 

 

(в области файла

/1,) с длиной

 

 

списка Z-i

 

2

5,1

Ключ длины 5 (1

ключ)

 

B E L L S / A 2 / L ,

 

 

34,3 Ключ длины 4 (3 ключа)

C A R T / A S / L 3 B E L M / A 4 / L t BABS/A5 /L5

43,2

B A K / A 6 / L 0

BAI/A,'L,

5

2,4

 

 

D Y / A . / L ,

-

 

C R / A . / L ,

 

B L / A 1 0 / 1 I 0

 

 

B E / A . . / L , ,

 

6

1,4

 

 

E / A i 2 / L , 2

 

 

D / A 1 3 / L I 3

 

 

C / A , . , / L u

 

 

B / A 1 6 / L 1 5

 

Р а с п р е д е л е н ие

отдельной

дорожки

показано

в табл . 6-2. Таблица

состоит из

трех столбцов.

В первом

столбце указывается номер записи на дорожке . Во вто­

ром — содержание д о р о ж к и

внутри каждого поля запи­

си (каждое поле отмечается

при помощи разделительной

черты) . В третьем столбце содержатся комментарии, от­

носящиеся к записям . Процедура состоит в перестанов­

ке фрагментов в порядке уменьшения

их длин. В резуль­

тате этого самый длинный фрагмент

B L A C K W , содержа­

щий шесть букв, появляется в заголовке списка; затем

идет пятибуквенный фрагмент B E L L S

и т. д. Первое поле

в записи называется заголовком . В нем содержатся два

вида

информации

. Первый — это длина фрагмента, рав­

ная

6 д л я записи

1, а

второй — количество

фрагментов,

содержащееся в

записи

(в данном случае

1). Следова-

106

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

ственная тройка,

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

в

которой

равна 5.

В третьей записи содержатся три

тройки

с

длинами

фрагментов

4, а

именно

CART, B E L M

и BABS .

Таким

образом, в целом

д о р о ж к а

планируется

в порядке

умень­

шения длин

фрагментов.

Вообще

говоря,

эта

д о р о ж к а

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

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

триваемой

дорожке .

В

этом

случае физическая

запись

(т. е. д о р о ж к а )

считывается

в

оперативную

память

це­

ликом. П е р в а я

запись

указывает,

что

шесть

букв

имени B A B S O N надо

сравнить

с фрагментом

B L A C K W ,

т а к ж е состоящим

из

шести

букв, — сравнение

окажется

неудачным.

Тогда программа

удалит

одну

букву

из

фрагмента B A B S O N и сравнит

первые пять букв с пяти-

буквенньш

фрагментом

B E L L .

Сравнение опять

окажет ­

ся неудачным. З а т е м программа сравнит первые четыре

буквы В AB S с

фрагментами

CART,

B E L M и

BABS .

В итоге слово B A B S O N однозначно декодируется в со­

ответствующий

адрес связи

Ай. Неоднозначность

деко­

дирования слов

B E L L S O N и

B E L L

(в предыдущем де­

реве) можно уничтожить, если закодировать их соответ­

ственно как B E L L S

и

BE.

 

Однозначность

поиска гарантируется т а к ж е

сравне­

нием полного ключа,

хранимого в найденной

записи,

с з а д а н н ы м при поиске ключом. Например, если оши­

бочное

декодирование слова

B I N D E R привело

к фраг­

менту В

(соответствующему

слову В А В В Е Т ) ,

то

ошибка

обнаружится при обращении к записи файла и

сравне­

нии хранимого в ней

полного .ключевого

слова

В А В В Е Т

с з а д а н н ы м ключом

B I N D E R .

 

 

 

Д л я

добавления

в справочник нового

ключевого сло­

ва применяется следующая процедура: слово вначале,

декодируется д л я обнаружения избыточного

фрагмента

(если избыточно закодированного фрагмента

нет,

то

в качестве фрагмента берется н а ч а л ь н а я

буква с л о в а ) .

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

у ж е

имеющееся в файле. При этом возможны

два

случая.

107

1.

Новое слово

алфавитно

предшествует

старому

слову.

В этом случае новому

слову ставится

в соответ­

ствие ранее закодированный фрагмент, а старому слову

назначается

 

более

длинный

фрагмент

для

отличия

его

от нового слова . Например, пусть в существующий

спра­

вочник

надо

занести

имя

B L A B .

Оно

декодируется

в фрагмент

B L , ранее назначенный слову B L A C K . Слово

B L A B алфавитно

предшествует слову

B L A C K ,

поэтому

слову

B L A B

н а з н а ч а е т с я

фрагмент

B L , а

д л я B L A C K

создается

фрагмент B L A C

(чтобы

отличать

его

от

B L A D ) . Н а

остальную

часть

списка

это

не

влияет,

пото­

му

что следующее

слово

B L A C K W E L L ,

очевидно,

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

слова B L A C K

и тем более не может совпасть с любым более

длинным

фрагментом .

 

 

 

 

 

 

 

 

 

 

 

2.

При

декодировании

обнаруживается,

что

новое

слово

 

алфавитно

следует

за

старым.

В этом случае

за

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

старого слова.

 

 

 

 

Рассмотрим

создание трехуровневого дерева

д л я 15

ключевых

слов

(рис. 6-2). Создание дерева

начинается

с правого

края .

К а ж д а я логическая

запись

отделяется

внутри д о р о ж к и

двойными линиями.

К а к и

в

случае

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

ответствующую запись помещается

у к а з а т е л ь

ссылки

на следующую запись более высокого уровня.

З а т е м

начинается новая д о р о ж к а низшего

уровня. П р и

исполь­

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

ключевых

слов переменной длины требуется подсчет

количества

фрагментов ключей, помещенных

на

данную

дорожку .

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

самих закодированных

фрагментов,

а т а к ж е

от того,

что

закодировнные

фрагменты

одинаковой

длины

можно

сгруппировать

под

одним и

тем

ж е

заголовком .

 

Д л я

определенности

предположим

в этом

примере,

что

в

к а ж д о й

д о р о ж к е с о д е р ж а т с я

четыре

фрагмента .

Это

означает,

что

в случае

трехуровневого

дерева

на

первых двух уровнях требуются только две

возможности

ветвления (для

декодирования

на

третьем,

уровне

108

15 фрагментов) . Здесь

используется

принцип отдельной

дорожки,

показанный

на рис. 6-1; следовательно,

фраг ­

ментация

15 ключей

в

начальный

момент

проводится

так, как показано

в третьем

столбце

табл . 6-1. Усечение

каждого

набора

из

четырех

фрагментов

выполняется

однозначно, независимо

от других наборов.

Эти

фраг-

 

І1/В£Ш/Г00

 

 

Ѵ/Е/Тю

 

 

 

 

 

7—:

 

 

 

 

 

№*fo,

II WBELM/T0Z

V////////////mt%

\

 

 

 

 

VWVTn

II VWn

І

^

Ш

^

^

Ш

Д .

 

 

\

 

V

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

i

 

 

 

 

 

 

 

 

 

\ 16.l/BUICKW/H5/ls\\iJ/CflRT/fls/Le

 

J! IZ/C/fy/Li/B/Ag/lB

 

 

L

2J/BE/A„/L„

Ѵ/в/А,г/£,2

 

 

 

 

ü/QEaS/Ra/lg, y/BELM/R,0/L,o

 

 

 

 

 

 

ІФУ/Я,/І,

II

 

Iß/E/flz/Lz/m/Ls/C/flj/lJMZ^

Рис. 6-2. Дерево

однозначно

усеченных ключевых

слов

переменной

 

 

 

 

длины.

 

 

 

 

 

 

 

 

менты хранятся на д о р о ж к а х

третьего

уровня: Т\% Tu,

Toi и Foi (рис. 6-2). Последний в алфавитном

 

порядке

фрагмент

д о р о ж к и третьего

уровня

помещается

( т а к ж е

в алфавитном

порядке)

на д о р о ж к у

второго

уровня, т. е.

фрагмент Е на д о р о ж к е Ті2 помещается

в виде

последне­

го фрагмента

на д о р о ж к у

второго уровня

Tw

с

адресной

ссылкой

Ті2.

Аналогично

фрагмент

CART

 

дорожки

Гн входит

в д о р о ж к у Ті0,

з а в е р ш а я ее (фактор

ветвления

второго уровня равен 2) . Последним

фрагментом

Тю

является Е\ он входит в запись

первого

уровня

 

(хранит­

ся в оперативной памяти) с адресной

ссылкой Гю.

 

Это дерево декодируется аналогично дереву ключе­

вых слов

постоянной

длины.

Особенность

заключается

в применении

к последнему

уровню

правил

декодирова­

 

 

 

 

 

 

 

 

 

 

 

 

 

ло?.

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