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

книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах

.pdf
Скачиваний:
16
Добавлен:
25.10.2023
Размер:
13 Mб
Скачать

340 ГЛ. 9. МЕТОДЫ ПЕРЕСТРОЙКИ ДВОИЧНЫХ ДЕРЕВЬЕВ

С учетом увеличения средней длины поиска без пе­ рестройки в среднем на 2 / ( п + 1 ) единицы (см. (8.10)) и уменьшения ее за счет возможной перестройки (9.29)| получим для математического ожидания изменения сред­ ней длины поиска после записи в дерево п-то элемента формулу

 

 

 

 

2*

7

 

 

k

 

 

 

 

 

 

-1

 

 

 

 

 

 

М(Мср)

=

 

 

(=1

 

 

 

 

 

 

1

 

2k

1

 

 

 

 

 

 

п +

 

 

 

 

 

 

 

 

 

 

y

 

_

i

_

 

 

 

 

 

 

t'=2

 

 

 

 

 

 

 

 

 

 

2*

 

 

 

 

 

 

 

 

 

 

—1

 

 

 

 

 

 

 

 

 

 

1=2

 

 

 

 

 

 

 

 

 

 

(=2

+

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

П + 1 2

1

(9.30)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=2

 

 

Для частных значений k формула

(9.30) дает

резуль­

таты, приводимые ниже.

 

 

 

 

 

 

 

Для £ = 2

 

 

 

 

 

 

 

 

 

М ( Д / С Р )

1

1 _\__

1

 

12

я +

1

=

1,714 п + 1

п +

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(9.31а)

что совпадает

с результатом,

полученным

в § 9.2

(9.12).

Для k — 3

 

 

 

 

 

 

 

 

 

M (Л / с р ) =

п + 1

 

,

=

1,642

я + 1

(9.316)

 

 

 

7

 

 

 

 

 

 

 

 

 

 

Iii

І + 1

 

 

 

 

 

 

 

 

 

і = 2

 

 

 

 

 

 

 

§ 9.3. ПЕРЕСТРОЙКА ДЕРЕВА С ОГРАНИЧЕНИЕМ ВЕСА УЗЛОВ 341

Д ля

/г = 4

 

 

 

 

 

 

 

 

 

M (Мер) =

 

+

 

 

1

= 1,595

- .

(9.31B)

— Ц -

| R

3

« +

 

 

п

 

1

 

 

 

 

1

 

 

 

 

 

 

^

I +

1

 

 

 

 

 

 

 

 

 

і=2

^

 

 

 

 

 

В пределе при k-+oo

 

 

 

 

 

 

А /„„С Р =

— і — k

Hm0 0

2"-1

 

_

 

 

 

 

 

П + 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 j + 1

 

 

 

 

 

 

 

 

 

t"=2

 

 

 

 

 

 

 

 

 

 

lim

^

1

 

lim

 

 

 

 

!

Ä ^

со i n (2*)

n +

i £ - > o o

£ l n

2

 

 

 

 

 

 

1

1

= 1,46

. (9.32)

 

 

 

 

 

 

In 2

n +

1

 

л +

1

Средняя длина пути для правильного дерева, форми­

руемого при k~>co,

равна

 

 

 

 

1

1п (л + 1) = log2 (п + 1),

(9.33)

 

1п2

 

 

 

 

что совпадает с очевидными

результатами.

 

При

k = 2 средняя длина

пути на 19%

больше

мини­

мально

возможной,

при k = 3 — на 14%,

при ß = 4 — на

10%. При k—l описываемый в настоящем параграфе ме­ тод вырождается в метод случайного роста дерева без

перестройки.

Интересно

заметить, что

формула (9.30)

при ß = l становится

неопределенной:

 

M

(А Іср)

П +

1 2К1

 

 

С Р

1

 

 

 

2. . і + 1

 

 

 

2

Для раскрытия неопределенности заменим числитель и

знаменатель их приращениями при

Ak=\:

 

 

М ( Д / с р ) = — і

!

=

=

(9.34)

ѵ t p /

n + 1

1

n + 1 n + 1 '

v

'

 

 

(2* — 1) +

1

 

 

 

что тоже совпадает с ранее выведенными результатами.

§ 9.4. ПРЕОБРАЗОВАНИЕ ВНУТРЕННИХ ЦЕПОЧЕК ДЕРЕВА

343

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

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

цией,

отличающейся

от исходной, но тоже

содержащий

s + 1

точку роста. Из

основных свойств дерева

следует,

что всегда существует способ, и притом

единственный,

подсоединения 5 + 1

ветви, изображенных

на

рис. 9.5,

к s + 1 точке роста перестроенной цепочки,

при

котором

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

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

Алгоритм выявления целесообразных перестроек рассматриваемого типа, естественно, оказывается тем проще, чем меньше размер перестраиваемых цепочек и чем проще характер их перестройки. Самой простой и

легче всего реализуемой является перестройка

цепочек

из трех элементов способом, изображенным на

рис. 9.2

и 9.3. При такой перестройке адреса связи и адреса ин­ формации преобразуются так, как это показано на рис.

9.6и 9.7.

На этих рисунках обозначены:

номерами 13 ячейки ЗУ, в которых хранятся управляющие слова объектов, входящих в состав пере­ страиваемой цепочки,

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

номерами 47 ячейки ЗУ, связанные с ячейками /—3 адресами связи,

буквами А, В, С, D ветви дерева, связанные адре­ сами связи с управляющими словами, хранящимися в

344 ГЛ. 9. МЕТОДЫ ПЕРЕСТРОЙКИ ДВОИЧНЫХ ДЕРЕВЬЕВ

ячейках

1,

2, 3. Управляющие слова вершин

ветвей

А, В, С,

D

хранятся соответственно в ячейках ЗУ

с но­

мерами 4, 5,

6, 7.

 

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

Рис. 9.7. Перестройка цепочки из трех элементов, связанных одним правым и одним левым адресом.

На рис. 9.6 и 9.7 адреса связи изображены сплош­ ными стрелками, а адреса информации — пунктирными стрелками.

Цепочка из трех элементов, связанных друг с другом только правыми адресами, вместе со своими ветвями (рис. 9.6, а) преобразуется в форму, изображенную на

§ 9.4. ПРЕОБРАЗОВАНИЕ ВНУТРЕННИХ ЦЕПОЧЕК ДЕРЕВА

345

рис. 9.6, б. Цепочка из трех элементов, связанных

друг

с другом одним левым и одним правым адресом связи, вместе со своими ветвями (рис. 9.7, а) преобразуется в форму, изображенную на рис. 9.7,6. Цепочки с двумя левыми адресами или цепочки с одним правым, а другим левым адресом преобразуются аналогично. Нетрудно ви­ деть, что соотношения между признаками элементов вы­ деленной цепочки и ее ветвей, определяемые исходной формой дерева, сохраняются и после перестройки дерева.

Определим изменение средней длины поиска в дереве из п элементов после перестроек рассматриваемого типа. Как видно из рис. 9.6 и 9.7, в обоих случаях длина пути до точек роста, расположенных на ветви В, не изменяется. Длина же пути до точек роста, расположенных на вет­

ви А, увеличивается на единицу,

а длина пути до точек

роста,

расположенных

на ветвях

С и / ) , уменьшается на

единицу. Если

веса ветвей А, С, D соответственно рав­

ны Г П А , memo,

а количества точек роста, связанных с

этими

ветвями,

равны

m л + 1 , trie + 1 , m D

+ l , то изме­

нение

средней

длины

поиска в

результате

перестройки

определяется как

(9.35)

Введем обозначения: ти trie, т3 полный вес узла, управляющее слово которого записано соответственно в ячейках ЗУ с номерами 1, 2, 3; т[, т"ѵ т2, т"2, т'г, т'ъ веса левых и правых ветвей узлов, управляющие слова которых записаны в ячейках ЗУ с номерами 1, 2, 3. Од­ ним штрихом обозначены веса ветвей, расположенных в направлении поиска, а двумя штрихами — веса ветвей, расположенных не в направлении поиска. Введенные ве­

личины связаны друг с другом

очевидными

соотноше­

ниями:

 

 

 

тъ =т+т 1 + 1

1

( 8 = 1,2,3),

(9.36а)

т\ — т2,

 

(9.366)

(9.36B)

346 ГЛ. 9. МЕТОДЫ ПЕРЕСТРОЙКИ ДВОИЧНЫХ ДЕРЕВЬЕВ

Формула (9.35) для

Д/ с р

в

новых обозначениях

запи­

шется в виде

 

 

 

 

Л / с р = = 7 + l ( m

' _ m 3 )

=

7 + T ( m î ' ~ m 2 ) '

( 9 - 3 7 )

Перестройка дерева оказывается целесообразной с точки зрения уменьшения средней длины поиска тогда, когда в выбранной для перестройки цепочке Д / с р ока­ зывается отрицательным, т. е.

т2>т"1.

(9.38)

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

Ниже рассматриваются два варианта таких условий, а также способов проверки их выполнения и выявления цепочек, перестройка которых может восстановить вы­ полнение нарушенных условий.

9.4.2. Условие соотношения весов. Условием, нала­ гаемым на дерево и непосредственно вытекающим из

(9.38), является

выполнение неравенства

 

 

 

 

 

 

 

т2<т\

 

 

(9.39)

во всех цепочках из двух узлов, которые могут

быть

выделены в дереве.

 

 

 

 

 

 

Условие (9.39) будем называть условием

соотношения

весов. Это условие означает, что вес левой

(правой)

вет­

ви любого

узла

(1) дерева не должен быть

меньшим,

чем вес любой из двух

ветвей узла

(2) дерева,

связанно­

го с узлом

(1)

дерева

правым (левым))

адресом. При

записи в дерево нового элемента вес т2

одной из

вет­

вей элемента

(2), в которую нас привело

направление

поиска, увеличивается

на

единицу,

что может

привести

к нарушению

выполнения

условия

(9.39). В случае

нару­

шения условия для перестройки назначается цепочка из трех элементов, начинающаяся с элемента (1) и веду-

§ 9.4. ПРЕОБРАЗОВАНИЕ ВНУТРЕННИХ ЦЕПОЧЕК ДЕРЕВА

347

щая через элемент

(2) в направлении

поиска. При запи­

си в дерево нового

элемента условие

соотношения

весов

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

Для проверки условия (9.39)| необходимо в каждом узле дерева хранить в качестве служебной информации полный вес узла. В процессе записи в дерево каждого нового элемента во всех узлах по пути поиска веса соот­ ветствующих ветвей должны корректироваться, т. е. увеличиваться на единицу. Кроме того, при прохожде­ нии каждого узла в процессе поиска в специально отве­ денных для этого ячейках ЗУ запоминаются адрес узла и вес той его ветви, на которую мы не попали в процессе поиска. Вес, который мы запомнили, дает возможность после перехода к следующему узлу проверить выполне­ ние условия (9.39). В случае его выполнения мы можем вернуться по адресу, который был сохранен, чтобы вы­ полнить требуемую перестройку.

Веса узлов, изменившиеся в результате перестройки, должны быть скорректированы. Непосредственно по рис. 9.6 можно составить табл. 9.4, показывающую, как изме­ няются адреса и веса во всех узлах перестраиваемой цепочки с двумя правыми адресами (обозначения в табл. 9.4 и 9.5 соответствуют обозначениям, введенным в гла­ ве 8).

В рассматриваемом случае выбран такой вариант перестановки адресов, при котором управляющее слово

 

 

 

 

 

 

 

 

 

Т а б л и ц а

9.4

 

Ячейка ЗУ №

l

 

Ячейка ЗУ № 2

Ячейка ЗУ № 3

 

 

 

 

 

 

 

(N

 

 

 

со

 

 

о.

•ѳ*

 

 

 

•Ѳ"

 

со

О.

.©*

s

 

 

 

s

5

«С

 

X

І

<

X

 

 

 

 

 

 

 

 

 

 

 

3

b

 

i

 

С

т3

До пере­

4

2

а

т1

5

т.2

6

7

стройки

 

 

 

 

 

 

 

 

 

 

 

 

После

2

3

b

 

4

5

а

m 4 +

6

7

С

Щ

пере­

 

 

 

 

 

 

 

 

 

 

 

 

стройки

348 ГЛ. 9. МЕТОДЫ ПЕРЕСТРОЙКИ ДВОИЧНЫХ ДЕРЕВЬЕВ

перестроенной цепочки остается в

той же ячейке ЗУ,

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

слово цепочки до пе­

рестройки. Это позволяет обойтись

без изменения адреса

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

мой цепочке в

процессе выполнения

алгоритма

записи

в дерево нового

элемента.

 

 

 

Кроме адресов и весов, в управляющих словах

долж­

но быть изменено значение веса т"ѵ

которому

должно,

быть

присвоено

скорректированное

значение

веса т 2 ,

и затем осуществлен переход по дереву к ячейке

З У № 3 .

Для цепочки с двумя левыми адресами все преобразо­

вания

выполняются аналогично.

 

 

 

По

рис. 9.7

может быть составлена табл. 9.5, пока­

зывающая изменения адресов и весов в результате пе­

рестройки цепочки с правым адресом от вершины цепоч­

ки и левым

адресом

от

следующего

элемента

 

цепочки

(обозначения

в

табл.

9.5

аналогичны

обозначениям

в

табл. 9.4).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

9.5

 

Ячейка № 1

 

Ячейка № 2

Ячейка № 3

 

 

 

 

 

ся

 

 

 

 

en

 

 

 

о.

 

о.

•Ѳ*

 

о.

•Ѳ*

 

 

 

 

£

с;

е

s

S

 

 

 

 

 

•1

До

4 2 а

3 5 ь

т2

6 7 С

т3

 

перестройки

 

 

 

 

 

 

 

 

 

 

 

После

2

3

с

4

6

а

 

7 5

Ъ

 

 

перестройки

 

 

 

 

 

 

+ 1

 

 

+

1

Корректировка веса т'[ в рассматриваемом случае осуществляется несколько сложнее, так как из вершины перестроенной цепочки, как это следует из рис. 9.7, в направлении поиска может произойти переход как к ячейке ЗУ № 2, так и к ячейке ЗУ № 3. Поэтому после перестройки признак элемента, записываемого в дерево, следует сравнить с признаком элемента в вершине пере­ строенной цепочки и в зависимости от результата срав-

§ 9.4. ПРЕОБРАЗОВАНИЕ

ВНУТРЕННИХ ЦЕПОЧЕК ДЕРЕВА

349

нения присвоить весу

т\ скорректированное значение

веса т2 с последующим переходом по дереву к ячейке

ЗУ № 3, либо присвоить весу т'[ скорректированное

зна­

чение веса т 3 с

последующим переходом к ячейку

ЗУ

№ 2.

 

 

Для цепочки

с левым адресом от вершины цепочки

и правым адресом от следующего элемента цепочки все

преобразования выполняются

аналогично.

 

Характер изменения весов

т\ и т"2 в результате пе­

рестройки цепочки

показан на рис. 9.8 и 9.9,

первый из

которых относится

к цепочке

типа рис. 9.6, а

второй —

к цепочке типа рис. 9.7.

 

 

На рис. 9.8 и 9.9 ветвь вершины цепочки

изображе­

на в виде совокупности m равноотстоящих точек на от­ резке прямой, где m — вес ветви. Каждому элементу ветви ставится в соответствие одна из m точек таким

образом,

чтобы признак элемента оказался монотонной

функцией

номера точки. На рис. 9.8 и 9.9

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

но отмечены только четыре элемента: а,

Ъ, с, d, распо­

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

Выбранный способ изображения ветви дает возмож­

ность построить два отрезка прямых,

пропорциональных

по длине весам т\ и

т2.

 

 

 

 

 

На рис. 9.8 и 9.9 ветви цепочек изображены в момент,

когда условие

(9.39)

нарушилось только

после

записи

в дерево

последнего

элемента,

т. е.

оказалось,

что

т'2—т\-\-\,

и,

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

требуется

перестройка.

Из рис. 9.8

видно, что при перестройке

цепочки

типа

рис. 9.6 возможны два варианта, отличающиеся

положе­

нием элемента d и, как следствие, величиной т'2. Одна­ ко в обоих случаях при перестройке вес т\ увеличивает­ ся, а вес т2 уменьшается и нарушение условия (9.39) всегда устраняется.

Из рис. 9.9 видно, что при перестройке цепочки типа рис. 9.7 также возможны два варианта. Если элемент d после перестройки оказывается на правой ветви вер­ шины цепочки, то вес т\ увеличивается, а вес т'2 умень­ шается и нарушение условия (9.39) устраняется. Если после перестройки элемент d оказывается на левой

350

ГЛ. 9. МЕТОДЫ ПЕРЕСТРОЙКИ

ДВОИЧНЫХ

 

ДЕРЕВЬЕВ

 

/ 2

ч .

а

 

До

перестройки

ь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После

 

перестройки

 

 

 

 

 

 

i

а

 

( бариангп N f )

 

 

 

с

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После

 

перестройки

 

 

 

 

 

 

 

 

 

(бариангп

N2)

 

Ь

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

— m

 

 

 

 

 

 

гп'г

 

 

 

 

 

-

Вершина

цепочки

 

 

 

 

 

 

 

 

о

-

Другие

 

элементы

цепочки

 

 

 

 

Р и с

9.8. Изменение

весов

в результате

перестройки

цепочки,

пока­

 

 

 

занной

 

на

рис.

9.6.

 

 

 

 

 

і г

с

 

 

 

а

 

Ло

перестройки

 

 

с

о

/77

 

i i i

i

i i i i i i i i i i i

 

 

 

i i t

 

i i i

 

 

 

m.

 

 

 

 

 

 

 

 

/77,

 

 

 

 

 

 

 

 

 

 

 

После

перестройки

\

 

 

j

 

 

 

 

 

 

 

 

(бориант

N1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

с

d

\b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/77, •

 

 

 

uJ^b

 

 

 

 

После

перестройки

і

 

 

 

 

 

 

 

 

 

 

 

(

бариангп

N2)

]

 

 

 

 

 

 

 

 

 

- г

 

 

 

 

 

I

с

 

 

 

 

 

 

 

 

 

 

 

 

 

•4-«— /77,-

 

 

 

 

-

Вершина

 

цепочки

 

 

 

 

 

 

 

 

 

 

 

 

о - Другие

 

элементы

цепочки

 

 

 

Рис. 9.9. Изменение

весов в результате перестройки цепочки, показан­

 

 

 

 

ной

на

рис.

9.7.

 

 

 

 

 

 

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