(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Нисходящие Б-деревья в Delphi

Источник: codingrus
Kest

Процедура добавления нового элемента к Б-дереву сначала рекурсивно отыс-
кивает по всему дереву сегмент, в который нужно поместить элемент. Когда она
пытается вставить новый элемент на свое место, ей может понадобиться разбить
блок и переместить один из элементов узла в его родительский узел.
При возврате из рекурсивных вызовов вызывающая процедура проверяет,
требуется ли разбиение родительского узла. Если не нет, то элемент помещается
в родительский узел. При каждом возврате из рекурсивного вызова вызываю-
щая процедура должна проверять, не требуется ли разбиение следующего роди-
теля. Поскольку разбиение сегментов происходит, когда процедура заканчивает
рекурсивное обращение, такой процесс называется восходящей рекурсией. Б-де-
ревья, управляемые таким образом, иногда называются также восходящими Б-де-
ревъями (bottom-up B-tree).

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

Когда процедура достигает листа, в который нужно поместить элемент, в ро-
дительском узле обязательно будет место для размещения нового элемента. Если
программа должна разбить лист, то всегда есть место для размещения среднего
элемента листа в родительском узле. Поскольку эта система работает от вершины
вниз, этот тип Б-деревьев называется нисходящим Б-деревом (top-down B-trees).
При этом разбиение блоков происходит чаще, чем необходимо. Нисходящее
Б-дерево разбивает полный узел, даже если в его дочерних узлах достаточно много
свободного места. При нисходящем методе дерево содержит большее количество
пустых записей, чем при восходящем. С другой стороны, разбивая узлы заранее,
этот метод сокращает риск возникновения длинного каскада разбиений сегментов.
К сожалению, не существует нисходящей версии объединения узлов. Проце-
дура удаления узлов не может объединять встречающиеся полупустые узлы на
пути вниз, потому что в этот момент еще неизвестно, нужно ли будет объединить
два дочерних узла и удалить элемент из их родителя. Поскольку также неизвест-
но, будет ли удален элемент из родительского узла, нельзя заранее сказать, потре-
буется ли слияние родителя с одним из узлов, находящимся на том же уровне.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 24.08.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Zend Server with Z-Ray Developer Edition - Standard
JIRA Software Commercial (Cloud) Standard 10 Users
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Программирование в AutoCAD
СУБД Oracle "с нуля"
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100