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

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

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

290 ГЛ. 7. УПОРЯДОЧЕНИЕ ИНФОРМАЦИИ ВО ВНЕШНИХ ЗУ

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

обрабатываемых при 1-м проходе

ленты, равно

N, при

2-м проходе — N1 и т. д. вплоть

до последнего

прохо­

да. Всего за время выполнения процедуры упорядочения

приходится проходить -^- N(N-\-l)

зон

(без учета по­

правки на самый

последний проход,

когда

записывает­

ся последняя

из

упорядоченных

зон), что

эквивалентно

 

 

 

 

 

(ЛЧ-1)

прохождению

длины исходного

массива

 

раз или с

 

 

 

 

 

 

3

учетом трехкратного прохождения каждой зоны ( J V - j - 1)

раз.

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

жение,

что означает четвертое прохождение каждой

зоны. В

этом случае процедура упорядочения требует

2 ( І Ѵ - И )

проходов исходной информации.

ГЛАВА ti

ОРГАНИЗАЦИЯ ИНФОРМАЦИИ В ВИДЕ Д В О И Ч Н Ы Х Д Е Р Е В Ь Е В

§8.1. Определение двоичного дерева

иосновная терминология

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

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

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

этого элемента, и поэтому он должен

быть

явно указан в

некоторой специально

отведенной для

этой

цели

ячейке.

2) На любом шаге

дихотомического поиска в

массиве

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

10*

292 ГЛ. 8. ОРГАНИЗАЦИЯ ИНФОРМАЦИИ В БИДЕ ДЕРЕВЬЕВ

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

рых больше, чем у проверявшегося элемента,

назовем

правым адресом.

 

 

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

озна­

чает, что размер соответствующей зоны поиска

обратил­

ся в нуль. В результате подобного распределения

адре­

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

состав

управляющего

 

слова вводится еще один

адрес

связи Аянф,

указывающее адрес

основной

информации

об элементе.

 

 

 

 

 

 

8.1.2. Определение

двоичного дерева. Двоичным

де­

ревом

мы будем называть множество элементов инфор­

мации,

распределенных

по ярусам

таким

образом, что:

а)

в первом ярусе

расположен

только один элемент,

б) к любому элементу, расположенному в і-м ярусе,

ведет

адрес связи от одного из элементов,

расположен­

ных в

1)-м ярусе,

 

 

 

 

 

в) от любого элемента, расположенного в і-м ярусе,

могут

исходить два адреса связи к двум элементам, рас­

положенным

в (/+1)- м

ярусе. Один или два элемента

(і+1) - го яруса могут отсутствовать, и в соответствии с

этим один

или два адреса связи могут оказаться пустыми.

 

Двоичное дерево схематически может быть изображе­

но

в виде

графа (рис. 8.1), где кружками

изображены

отдельные

элементы

списка, а стрелками — адреса связи

от

одного

элемента

к другому. В каждый

кружок, за

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

8.1.3. Основная терминология. Вершиной дерева

называется единственный элемент списка, расположен­ ный в 1-м ярусе. Адрес вершины дерева должен быть за-

§ 8.1. ОПРЕДЕЛЕНИЕ ДВОИЧНОГО ДЕРЕВА

293

писан в специально отведенной для этой цели ячейке

памяти.

 

 

 

 

 

Полными

узлами

дерева называются

элементы, оба

адреса

связи

которых

не являются пустыми.

Неполными

узлами

дерева

называются элементы, у которых имеется

один непустой адрес

связи. Концевыми

узлами

дерева

называются элементы с двумя пустыми адресами связи. Допустим, что перемещаясь от некоторого элемента дерева А по одному из записанных в нем адресов связи к

другому

 

элементу,

далее

 

от

него

 

по

какому-либо

Вершина

его адресу связи к третье­

 

му элементу и т. д., мы в

 

конце

концов

достигаем

 

некоторого

элемента

В.

 

Группу

элементов,

через

 

которые мы при этом про­

 

ходим,

включая

и

самые

 

элементы

А

и

В,

будем

 

называть путем от элемен­

 

та

А к

элементу

В.

Ес­

Рис. 8.1. Дихотомическое двоичное

тественно,

что

от

вер­

шины дерева имеется путь

дерево.

к любому его элементу.

 

 

Полной

ветвью

элемента

А называется совокупность

всех элементов дерева, к которым имеется путь от эле­ мента А, включая и самый элемент А.

Левой (правой) ветвью элемента А называется сово­ купность всех элементов дерева, к которым имеется путь от элемента А через его левый (правый) адрес связи.

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

число с количеством разрядов, совпадающим с

номером

яруса,

на котором

расположен

узел. Старший

разряд

индекса

всегда равен единице,

а любой другой, т. е.

/-й (/.>2), разряд

равен нулю,

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

верши­

ны к

соответствующему узлу в /-й ярус привел левый

адрес

элемента

(/—1)-го яруса, и единице, если на этом

же пути

в /-й

ярус

привел правый адрес элемента

(/—1)-го

яруса.

Для

сокращения записи индекс можно

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

294 ГЛ. 8. ОРГАНИЗАЦИЯ ИНФОРМАЦИИ В БИДЕ ДЕРЕВЬЕВ

Из

определения

индекса следует, что:

а)

индекс вершины дерева

всегда равен единице;

б)

если

индекс

некоторого

узла

А, расположенного

в /-м

ярусе,

равен

і, то индекс узла

(/+1) - го яруса, к

которому ведет левый адрес из узла А, равен 2і; индекс

узла

(/+1)-го

яруса, к которому

ведет правый

адрес

из узла А,

равен

2 і + 1 ;

 

 

 

в) индексы различных элементов дерева различны.

Существенной

характеристикой

каждого

узла

явля­

ется

вес

тр

определяемый как

количество

элементов

дерева, размещающихся на полной ветви элемента с ин­

дексом і.

 

 

 

 

 

 

 

 

 

 

 

 

Из определения веса следует, что:

 

 

 

 

 

а) вес любого концевого узла дерева равен

единице;

 

б) вес вершины дерева равен общему количеству

элементов дерева,

т. е.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

т1 = п;

 

 

 

 

(8.1)

 

в)

элемент

дерева с индексом і является

неполным

узлом, если т=0

или

т

=0,

но

не

одновременно

т

= 0

и т2і+1

= 0;

 

с

индексом

і

является

полным

 

Г)

элемент

дерева

узлом, если т 2 (

. + 0

и m ^ + і ^ О ;

 

 

 

 

 

 

 

д)

вес m 1

любого

элемента дерева

удовлетворяет

условию

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ті =

1 + т

+ т2і+і.

 

 

 

(8.2)

 

 

 

 

 

 

 

«

 

 

 

 

 

 

 

Для любых двух элементов дерева

С и D,

от которых

нет

пути

друг

к другу, всегда можно указать по край­

ней

мере

один

элемент,

на полной

ветви

которого они

оба размещаются. Во всех случаях одним из таких эле­ ментов является вершина дерева. Однако среди элемен­

тов,

от

которых

имеется путь как к элементу

С,

так

и к

элементу D,

существует один и только один эле­

мент, от которого к элементам С я D ведут разные

адре­

са связи

(левый

и правый). Назовем этот элемент

бли­

жайшей

вершиной

элементов

С и D.

 

 

Упорядоченным

деревом

называется дерево,

элемен­

ты которого удовлетворяют следующему дополнитель­ ному условию: разность между значением признака любого элемента, размещающегося на правой (левой)

§ 8.1. ОПРЕДЕЛЕНИЕ ДВОИЧНОГО ДЕРЕВА

295

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

В упорядоченных деревьях, информация о которых хранится в ЗУ цифровых машин, обычно принимается дополнительное условие, что все элементы с нулевой

разностью

между

значением

своего

признака и

зна­

чением

признака

элемента А могут

размещаться либ«©*"-

только

на

левой,

либо только

на

правой ветви

эле­

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

сколько

уточнится.

 

 

 

 

 

 

 

 

Упорядоченным

деревом

будем

 

называть

 

двоичное

дерево,

каждый элемент А которого

может

содержать

на своей правой ветви элементы,

у

которых

 

разность

между

значением

их

признака

и

значением

призна­

ка элемента

А

неотрицательна,

а

на

левой

ветви —

элементы,

у

которых

разность

между

значением их

признака

и значением

признака

элемента

А

отрица­

тельна.

 

 

 

 

 

 

 

 

 

 

 

К любому

дереву

можно

добавлять

новые

элемен­

ты, записывая в пустые адреса связи адреса этих эле­ ментов (или приданных этим элементам управляющих слов). Процесс добавления к сформированному упоря­

доченному

дереву

новых элементов будем

называть

ростом дерева.

 

 

В п.8.2.2

будет

показано, что каким бы

ни был

признак элемента, добавляемого к упорядоченному

дереву, можно

всегда, и

притом единственным

обра­

зом,

назначить

некоторый

пустой

адрес связи для

запи­

си в него адреса этого нового

элемента

при

сохране­

нии

упорядоченности

дерева. В

связи

с

этим

все пу­

стые

адреса связи в

упорядоченном

двоичном

 

дереве

называются также точками

роста

дерева.

 

 

 

296 ГЛ. 8. ОРГАНИЗАЦИЯ ИНФОРМАЦИИ В ВИДЕ ДЕРЕВЬЕВ

§ 8.2. Свойства упорядоченных двоичных деревьев

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

С в о й с т в о 1. Если элемент

В располагается

на

правой (левой)| ветви элемента Л,

а элемент С — на

ле­

вой (правой) ветви элемента В, то признак элемента С имеет промежуточное значение между признаками эле­

ментов А к В.

 

 

 

 

С, так

 

 

 

 

В,

Действительно,

элемент

же

как

и элемент

располагается

на

правой

(левой)

ветви

элемента А

и

в то же время на левой

(правой)

ветви элемента

В.

Следовательно, признак элемента

С не меньше

(меньше)

признака элемента А и меньше

(не

меньше)

признака

элемента В.

 

 

 

 

 

В и С

 

 

 

С в о й с т в о

2.

Если

элементы

располагаются

на ветви элемента

А,

а

элемент D — вне

ветви элемен­

та Л, то признак элемента D не может быть промежуточ­

ным между признаками элементов В и С.

 

 

 

Рассмотрим два

случая:

 

 

 

 

 

 

1. Имеется путь от элемента D к элементу Л. В этом

случае элементы В и С лежат на

той

же

ветви элемен­

та D, что и элемент Л. Согласно определению упорядо­

ченного дерева

знаки

отклонений

признаков

элементов

Ви С от признака элемента D одинаковы.

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

ного дерева знаки отклонений признаков элементов В и С от признака элемента Е, а тем более от признака элемента D одинаковы.

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

§ 8.2. СВОЙСТВА

УПОРЯДОЧЕННЫХ ДВОИЧНЫХ ДЕРЕВЬЕВ

297

С л е д с т в и е

2 и з с в о й с т в а 2. Все элементы

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

мещенных вне полной ветви элемента

А.

 

 

С л е д с т в и е 3

и з с в о й с т в а

2. В

момент

при­

соединения к дереву

элемента В в процессе

роста

дере­

ва признаки элемента В и элемента А, адрес связи ко­ торого ведет к элементу В, имеют соседние численные значения.

Действительно, после присоединения элемента В ле­ вая (правая) ветвь элемента А будет содержать един­ ственный элемент, и поэтому признак элемента В явля­ ется промежуточным между признаком элемента А и признаком элемента дерева с минимальным отрицатель­ ным (минимальным положительным) отклонением от

признака элемента А.

 

 

 

 

8.2.2.

Соотношения

между

количествами узлов

дере­

ва разных типов. В дереве,

содержащем

п элементов,

количество полных узлов м„, количество

неполных уз­

лов пн

и количество

концевых узлов пк

связаны

друг

с другом естественным

соотношением

 

 

 

па

+ па + пк = п.

 

(8.3)

Поскольку полный узел не имеет точек роста, непол­ ный узел имеет одну точку роста, а концевой узел — две точки роста, общее количество точек роста пр равно

Лр = лн + 2Лк.

(8.4)

Кроме очевидных соотношений (8.3) и (8.4), имеют

место еще некоторые соотношения, в частности

 

Л к = я п + 1 ,

(8-5)

т. е. количество концевых узлов на единицу больше ко­ личества полных узлов.

Докажем формулу (8.5) методом математической ин­ дукции. Она выполняется, очевидно, для дерева, состоя­ щего из одного элемента, не имеющего ни одного полно-

298 ПІ. 8. ОРГАНИЗАЦИЯ ИНФОРМАЦИИ В ВИДЕ ДЕРЕВЬЕВ

го узла и один концевой узел. Если предположить, что формула (8.5) справедлива для любого дерева из ѣ элементов, то легко показать, что она остается справед­ ливой и для дерева из п+\ элемента. Действительно, если (п+1)-к элемент присоединяется к концевому узлу дерева, то он превращается в неполный узел, т. е. коли­ чество неполных узлов увеличивается на один, а количе­ ства полных и концевых узлов остаются прежними. Если (п+1)-й элемент присоединяется к неполному узлу, то неполный узел превращается в полный. Это значит, что количество неполных узлов уменьшается на единицу, а количества полных и концевых узлов увеличиваются на единицу. В обоих случаях соотношение (8.5) при добав­ лении (л+1) - го элемента сохраняется.

Из (8.3)|—(8.5) следует, что

"Р = П„ + 2пк = пя +пк +п„+ 1 = n + I ,

(8.6)

т. е. количество точек роста на единицу больше количе­

ства элементов дерева.

 

 

Формула

(8.6)

допускает вполне естественное

толко­

вание:

признаки

п

элементов разбивают числовую

ось

на п+

1 интервал.

 

 

 

 

Признак

(п+\)-ѵо

элемента, присоединяемого

к

де­

реву из п элементов, может попасть в любой из этих интервалов. Каждому из этих интервалов соответствует своя точка роста.

Если признаки всех элементов дерева есть незави­ симые друг от друга случайные величины и конкретные значения признаков элементов ранее сформировавшейся части дерева нам неизвестны, то естественно предполо­ жить, что попадание признака присоединяемого (п+\)-то элемента в любой из интервалов равновероятно. Соот­ ветственно можно считать, что вероятности присоедине­ ния нового элемента к любой точке роста дерева равны друг другу, т. е. все одинаковы и равны 1/(п+1) .

8.2.3. Признаки соседства элементов дерева. Если все элементы дерева занумерованы таким образом, что при­ знак оказывается монотонной функцией от номера эле­

мента, то два

элемента

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

называются

соседними.

 

В случае, когда признаки всех элементов дерева от­

личаются друг от друга,

распределение номеров по эле-

§ 8.2. СВОЙСТВА УПОРЯДОЧЕННЫХ ДВОИЧНЫХ ДЕРЕВЬЕВ

299

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

При выбранном правиле

формирования

дерева

(п. 8.1.3) после того, как в состав

дерева оказался

вклю­

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

во позже,

размещается

на правых ветвях

всех элемен­

тов

этой

группы, включенных

в дерево

раньше).

При

этом

в каждом ярусе

дерева

может разместиться

нѳ

более одного элемента с совпадающими значениями при­ знаков.

Уточнение правила нумерации элементов дерева со­

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

зна­

чениями

признаков

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

ряд

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

ных номеров, причем чем меньше

номер

яруса,

на

котором разместился

элемент, тем меньше номер

самого

элемента.

 

 

В,

 

 

 

 

Алгоритм отыскания элемента

соседнего

боль­

шего или

соседнего

меньшего заданному

элементу

А,

основан на формулируемых ниже свойствах соседних элементов.

С в о й с т в о 3. Соседние элементы А и В не могут размещаться, на разных (т. е. правой и левой) ветвях какого-либо элемента С. Действительно, в противном случае признак элемента С оказался бы промежуточным между признаками элементов А и В, что противоречит условию.

Из свойства 3 непосредственно вытекает С в о й с т в о 4. Один из двух соседних элементов обя­

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

С в о й с т в о 5. Если правый (левый) адрес элемен­ та А не пуст, то соседний с ним элемент В с большим (меньшим) значением признака размещается на правой

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