
книги из ГПНТБ / Папернов А.А. Методы упорядочения информации в цифровых системах
.pdf290 ГЛ. 7. УПОРЯДОЧЕНИЕ ИНФОРМАЦИИ ВО ВНЕШНИХ ЗУ
трижды: один раз — для записи, другой раз — для счи тывания, третий раз — при перемотке. Количество зон,
обрабатываемых при 1-м проходе |
ленты, равно |
N, при |
2-м проходе — N—1 и т. д. вплоть |
до последнего |
прохо |
да. Всего за время выполнения процедуры упорядочения
приходится проходить -^- 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) |
|
|
в) |
элемент |
дерева с индексом і является |
неполным |
|||||||||
узлом, если т2і=0 |
или |
т2і+і |
=0, |
но |
не |
одновременно |
|||||||
т2і |
= 0 |
и т2і+1 |
= 0; |
|
с |
индексом |
і |
является |
полным |
||||
|
Г) |
элемент |
дерева |
||||||||||
узлом, если т 2 ( |
. + 0 |
и m ^ + і ^ О ; |
|
|
|
|
|
|
|||||
|
д) |
вес m 1 |
любого |
элемента дерева |
удовлетворяет |
||||||||
условию |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
ті = |
1 + т2і |
+ т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. Если правый (левый) адрес элемен та А не пуст, то соседний с ним элемент В с большим (меньшим) значением признака размещается на правой