Главная » Просмотр файлов » В.Д. Валединский - Краткий конспект курса лекций «Работа на ЭВМ и программирование»

В.Д. Валединский - Краткий конспект курса лекций «Работа на ЭВМ и программирование» (1119512), страница 3

Файл №1119512 В.Д. Валединский - Краткий конспект курса лекций «Работа на ЭВМ и программирование» (В.Д. Валединский - Краткий конспект курса лекций «Работа на ЭВМ и программирование») 3 страницаВ.Д. Валединский - Краткий конспект курса лекций «Работа на ЭВМ и программирование» (1119512) страница 32019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Красно-черным деревом называется бинарное дерево,1. Для каждой вершины которого определен «цвет» этой вершины – красный иличерный (корень дерева всегда черный)2. Красная вершина имеет только черных потомков3. В любой ветке от корня одинаковое число черных вершин («черная длина дерева»)(RB-свойства дерева)Длина красно-черного дерева не более чем в 2 раза превышает длину идеальносбалансированного дерева.

Действительно, рассмотрим все ветки от корня. Пусть h – чернаядлина дерева, а n – обычная. В силу того, что у красных вершин только черные потомки,Лекции по ЭВМ. Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год9имеем, что в каждой ветке красных вершин не больше, чем черных, а черных,соответственно – не менее половины.

Очевидно, отсюда h < n < 2h. Черное деревоабсолютно идеально сбалансировано, так что если H – число черных вершин, тоh  log 2 H  log 2 N  n  2h  2 log 2 N .Заметим, что добавлять элемент в дерево мы можем только в концевые вершины (дляупорядоченного дерева можно добавлять элемент, как мы добавляли его в сбалансированноедерево (конечно, без применения балансировки дерева) – в структуре дерева при этомспособе просто добавляется еще один концевой элемент). При добавлении элемента пока небудем менять раскраску нашего дерева, а добавленный элемент покрасим в красный цвет.Теперь будем двигаться снизу вверх, восстанавливая корректную раскраску дерева.Единственно ошибочная ситуация после добавления – наш элемент красный, его «родитель»- тоже красный (поскольку черная раскраска дерева не менялась, то она осталасьсбалансированной).

Из исходной раскраски дерева следует, что родитель родителя нашегоэлемента – черный, а число черных вершин в поддеревьях одинаково:CBACLBLВ зависимости от раскраски CL возможны 2 варианта балансировки:Если CL – красный, то перекрашиваем C в красный, CL и B – в черный и тем самымвосстанавливаем корректность раскраски – это легко проверить (баланс черного сохранился,а раскраска теперь может оказаться нарушена только у C, тогда применяем процедуруперекраски для него):CBACLBLЕсли же CL – черный, то придется «вращать» поддерево (т.е. фактически сохраняя егоструктуру переставить элемент, с которого оно начинается).

Для показанного случаяполучается:BACBLCLЛегко видеть, что эта перестановка совершенно аналогична L1 (R1), применявшейся длябалансировки сбалансированного дерева поиска, но еще придется перекрашивать B вчерный цвет, а C – в красный. Если BL – красный, то придется применить еще и первуюописанную перекраску:Лекции по ЭВМ. Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год10BACBLCLОчевидно, черный баланс дерева сохраняется (1 + черная длина A), корректностьраскраски – тоже. При этом на каждом шаге алгоритма мы поднимаемся на 1 уровень вверхпо дереву, так что в конце концов мы придем к ситуации вида:BACТогда нам останется только покрасить B в черный цвет.

Это – единственная ситуация,которая может изменить черную длину дерева. Возможно, что мы до нее и не дойдем ираскраска станет корректной еще на более ранних стадиях работы алгоритма. Трудоемкостьдобавления элемента – порядка длины дерева, т.е. O log 2 N  .Более сложной операцией является удаление элемента из красно-черного дерева.Удаление произвольного элемента упорядоченного дерева опять-таки можно организоватьтаким образом, чтобы из структуры дерева удалялась вершина, содержащая не более 1потомка.Если удаляемая вершина – красная, то все в порядке, никакие правила не нарушены(легко также видеть, что у этой вершины нет потомков вообще, т.к. если были бы, то былибы оба и оба черные – из определения к-ч дерева).

Хуже, если приходится удалять чернуювершину – черный баланс дерева при этом нарушается. Легко видеть, что удаляемаявершина либо не имеет потомков вообще, либо имеет только красного потомка (одного) – всилу того, что потомков не более 1го, а черная длина левого и правого поддеревьеводинакова. Если красный потомок существует, то он займет место удаляемой вершины ибудет перекрашен в черный цвет – никаких проблем с раскраской здесь не возникнет.Поэтому в дальнейшем рассматриваем случай удаления черной концевой вершины.Поставим на место нулевых указателей в дереве фиктивные элементы черного цвета –«листья» дерева. После удаления концевого элемента черного цвета из бывших 2х листьевэтого элемента поставим один и покрасим его в «дважды черный» (на рисунках далееобозначен серым цветом).

Будем избавляться от дважды черных вершин в дереве.Первая возможная ситуация – у дважды черного элемента «брат» – черного цвета и хотябы один потомок брата – красного цвета (либо оба не существуют)ABCCLCRВ этом случае применяем перестановку R1:Лекции по ЭВМ. Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год11СACRCLBЕсли A была черной, то C красим в дважды черный; если A была красной, то C красим вчерный.Второй случай –ABCCRDDRDL- здесь уже понадобится R2:DABCDLCRDRЗдесь D красится в красный, если A была красной; в черный, если A была черной.Окраска полностью восстанавливается.Третий случай – брат элемента – черный, оба его потомка – тоже черныеИтак, либоABCCLCR- перекрашиваем A в дважды черный, B – в черный, C – в красный и переходим науровень выше:Лекции по ЭВМ.

Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год12ABCCRCLВо второй ситуацииABCCRCLдостаточно перекрасить A в черный, B в черный, C в красный.Легко видеть, что эти 2 ситуации полностью исчерпывают ситуацию «черный брат».Если брат – красный,ABCCLCRТо здесь достаточно применить R1, тогда получится один из ранее рассмотренныхслучаев (перекраска после поворота: A – в красный, C – в черный).Отдельный случай – когда дважды черный элемент оказался к корне.

В этом случаеперекрашиваем корень просто в черный цвет и это единственный случай, когда меняетсячерная длина дерева.Еще один тип деревьев является своеобразным обобщением деревьев поиска. B –деревом порядка n называют дерево1.Каждая вершина которого содержит не менее n и не более 2n значений (заисключением корня, просто содержащего не более 2n значений)2.Все значения, хранящиеся в вершине, упорядочены (по возрастанию)3.Вершина с k значениями имеет k+1 потомков, либо является концевой4.Если a – m-е значение в вершине все значения m-го потомка вершины меньше a,а значения в m+1 потомке – больше a5.Все концевые вершины в B-дереве лежат на одном уровнеЛекции по ЭВМ.

Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год13Пример B-дерева порядка 2:3010213806543411712461100Очевидно, длина B – дерева порядка n не превосходит log n N  1 . Действительно, если унас на k-м уровне N kэлементов, то на следующем уровне N k 1   N k  1 n иk 1k 1jk 1соответственно справедлива оценка N k  N1n   n  N1 n , а для общего числаj 1элементов в дереве - M k  N k откуда и следует оценка для длины B-дерева.Поиск в B-дереве происходит за время, не превосходящее  log 2 N  1 log n N  1 немного медленнее, чем в бинарном дереве поиска (на каждом уровне – бинарный поискумноженный на число уровней).Вставка элемента в B-дерево происходит так: вначале ищем место, куда вставитьэлемент – спускаемся вниз до концевых вершин, ища место, куда вставить элемент.

Еслиэлемент нужно вставлять туда, где еще есть свободное место, то производим вставку сразу(пример: добавление элемента 45 в приведенное ранее B-дерево); если элемент нужнодобавить в уже заполненную вершину (например, 5 в примере выше), то создаем новуювершину уровнем выше и «переливаем» половину данных из заполненной вершины всвежесозданную вершину. При добавлении элемента 5 это даст в примере выше10361171221304143658010054Если уровень выше, то алгоритм будет пробовать «разлить» и его по двум уровням ит.д.

Обрывается такой алгоритм при необходимости «разлить» корневой элемент. Например,добавим еще числа 6, 7, 8 в наше дерево. После первых двух шагов получится1031122456173061414365801007и такой алгоритм уже не работает. Но несложной модификацией его можно заставитьработать и в этом случае: создадим «нулевой» уровень, пока что пустой, и применим к немунаш алгоритм. Затем переставим указатели на корень дерева на этот новый элемент.ПолучитсяЛекции по ЭВМ. Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год1410172456130638126517418010043Т.е.

длина B-дерева в этом случае автоматически увеличится на 1, а все его свойствасохранятсяАналогично производится удаление элементов B-дерева. Если удаляемый элементлежит в концевой вершине и число элементов в ней больше n, то просто удаляем его. Еслиудаляемый элемент в концевой вершине и число элементов в ней уже n, то пробуем«перелить» несколько элементов из левого или правого соседа текущей вершины, чтобыраспределить число элементов в них поровну, и затем удаляем элемент. Если элементсодержит потомков (не лежит в концевой вершине), то пробуем перелить этот элементуровнем ниже и поставить на его место элемент из нижележащих уровней, после чегоспокойно удалить элемент. Первый метод неприменим когда у нас надо удалить элемент извершины с n элементами и левый или правый соседи этой вершины тоже содержат по nэлементов.

Характеристики

Список файлов лекций

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6455
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее