Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Добавление ключа

Общий алгоритм поиска

Свойства Б-дерева

Б-деревья

Правила корректировки признака баланса

Общий алгоритм добавления вершины в сбалансированное дерево

1. Производится добавление новой вершины, в которой признак баланса устанавливается в 0 и флаг баланса в true.

2. После этого производится возврат от добавленной вершины к корню, в процессе которого корректируются признаки баланса вершин. Процесс заканчивается:

- Достигли корня и обработали все дерево. Дерево является сбалансированным.

- При корректировке признака баланса получено недопустимое значение (2 или -2), следовательно, в данной вершине возник дисбаланс и выполняется балансировка дерева по рассмотренным ранее схемам.

  1. Если флаг баланса “false”, то признак баланса не изменятся.
  2. Если флаг “true”:

- Если в вершину пришли с правого поддерева, то признак увеличивается на 1. Если с левого, то уменьшается на 1.

- Если признак равен 0, то флаг устанавливается в ‘false’.

(рисунок)

Б-деревья относятся к классу сильно ветвящихся деревьев.

Дерево строится на основе следующего типового элемента, который является вершиной дерева:

  k1 k2 kn
p0 p1 p2 pn

 

Вершина дерева содержит n ключей и (n+1) указателей.

Указатель p0 указывает на поддерево, содержащее ключи, меньше k1, pn указывает на ключи, большие kn, pi указывает на ключи, большие ki и меньшие ki+1.

p0<k1, pn > kn, ki+1 < pi > ki

Ключи отсортированы в порядке возрастания.

  1. Все листья дерева находятся на одном уровне.
  2. Все вершины дерева, кроме корня, имеют от n/2 до n ключей.

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

  1. Указатель на текущую вершину устанавливается на корень.
  2. Если указатель пустой, то поиск завершен с ошибкой и переход к п.5.
  3. Производится поиск заданного ключа среди вершин текущей вершины (применяется двоичный поиск). Если ключ найден, то установка признака успешного поиска и переход к п.5.
  4. Если ключа нет, то указателю на текущую вершину присваивается значение соответствующего указателя по значению ключа. Переход к п.2.
  5. Конец.

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

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

Если вершина содержит все n ключей (т.е. нет свободного места), то происходит разделение ключей на два множества (пополам) и создается новый лист с вынесением среднего ключа в вершину-родитель.

Б-деревья используются в тех случаях, когда невозможно заданное множество ключей расположить в оперативной памяти. Т.е. нет возможности работать со всем деревом сразу. Таким образом, часть дерева будет в оперативной памяти, а часть дерева будет во внешней памяти и вершины дерева будут вызываться в оперативную память по мере надобности. Вершины Б-дерева называются страницами и их размер соответствует минимальной или кратной единицы хранения данных на внешнем носителе. Ссылки на вершину представляют собой указатель на место вершины на внешнем носителе.

 

4.6 Древовидная таблица

Древовидная таблица строится на основе двоичного упорядоченного дерева, в котором ключ является кодом вершины и вершина имеет поле для хранения информации. может строится на основе динамического списка и на основе массива записей, в котором имеются поля:

  Ключ информация ЛП ПП
       
    -1 -1
    -1  
    -1 -1
..

 


Раздел 3: Системы программирования низкого уровня

Классификация систем программирования

Классификацию выполним по степени взаимодействия программной системы с аппаратной частью компьютера.

Система программирования Назначение и состав Используемые языки Языки разработки
1. Операционная система Предназначена для обеспечения работоспособности компьютера, выполнения программ, организации обмена данными и управления памятью. Языки управления заданиями Assembler, C (для визуализации)
2. Системы программирования низкого уровня Предназначены для обеспечения разработки и выполнения несложных программ. Состав: ассемблер (транслятор), редактор связей (компоновщик), загрузчик, простой текстовый редактор, отладчики, библиотека. Ассемблер (+ иногда дополнительные языки) Ассемблер, в настоящее время С
3. Системы программирования на универсальных языках Предназначены для разработки программных продуктов в различных областях. Языки высокого уровня (C, Paskal) Раньше Ассемблер, сейчас С, Paskal
4. Системы программирования на специализированных языках Разработка прикладных программ. Состав: СУБД, САПР, системы удаленного доступа. Специализированные языки (SQL, FoxPro, GPSS, HTML и т.д.) Универсальные языки
5. Прикладные программы Предназначены для решения конкретных задач пользователя. Специализированные языки, реже – универсальные языки  

 

<== предыдущая лекция | следующая лекция ==>
Структура сбалансированного дерева | Двухпросмотровый ассемблер
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 474; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.