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

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

Источник: codingrus
Kest

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

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

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

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


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

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
Kaspersky Internet Security для всех устройств. 2-Device 1 year Base Download Pack
IBM DOMINO ENTERPRISE CLIENT ACCESS LICENSE AUTHORIZED USER ANNUAL SW SUBSCRIPTION & SUPPORT RENEWAL
Bitdefender Antivirus Plus 2020/1 год/1 ПК
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Реестр Windows. Секреты работы на компьютере
СУБД Oracle "с нуля"
Вопросы и ответы по MS SQL Server
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Слот Биг Бэнг (6)
Большой взрыв как правящая теория сотворения мира. Теперь вы можете поиграть слот Big Bang в...
 
Отличается ли ДрифтКазино от беттинга? (57)
Друзья, давно заметил, что на Дрифте уже несколько месяцев во всю рекламируется и предлагается...
 
Подскажите лучшее онлайн казино (8)
Вот нашёл интересную игровую площадку, и это онлайн казино Вавада. Может кто что подсказать по...
 
Помощь по MS Access (345)
Доброе время суток. Случайно оказался на этом сайте, искал статьи по OLAP. Вижу, что...
 
Требуется Краснодар: Java -разрабочик (2)
Обязанности: Разработка корпоративных backend-приложений для автоматизации розничных продаж...
 
 
 



    
rambler's top100 Rambler's Top100