Главная » Просмотр файлов » Новиков Ф.А. Дискретная математика для программистов

Новиков Ф.А. Дискретная математика для программистов (860615), страница 60

Файл №860615 Новиков Ф.А. Дискретная математика для программистов (Новиков Ф.А. - Дискретная математика для программистов. 2009) 60 страницаНовиков Ф.А. Дискретная математика для программистов (860615) страница 602022-01-13СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Нетрудно проверить, чтоусловие дерева сортировки выполняется и в этом случае.[ 3 ] Правая связь удаляемого узла р пе пуста и ведёт в узел и, левая связь которого не пуста. Поскольку дерево сортировки конечно, можно спуститься от узлаи до узла v, левая связь которого пуста (см. рис.

9.12, справа). В этом случаевыполняются два преобразования дерева. Сначала информация в узле р заменяется информацией узла v. Поскольку узел v находится в правом поддереве узлар и в левом поддереве узла и, имеем p.i < v.i < u.i. Таким образом, после этогопреобразования условие дерева сортировки выполняется. Далее правое поддерево 4 узла v подцепляется слева к узлу w, а сам узел v удаляется. Посколькуподдерево 4 входило в левое поддерево узла к;, условие дерева сортировки такжесохраняется.•ЗАМЕЧАНИЕВ книге [14], из которой заимствован данный алгоритм, показано, что хотя алгоритм «выглядит несимметричным» (правые и левые связи обрабатываются по-разному), па самомделе в среднем характеристики дерева сортировки не искажаются.9.4.7.

Вспомогательные алгоритмыдля дерева сортировкиАлгоритмы трех предыдущих разделов используют вспомогательные функции,описанные здесь.1. Поиск узла — функция Find.Вход: дерево сортировки Т, заданное указателем на корень; ключ а : key.Выход: р — указатель па найденный узел или nil, если в дереве пет такого ключа;q — указатель па отца узла р; s — способ подцепления узла q к узлу р (s = — 1,если р слева от q; s — +1, если р справа от q; s = 0, если р — корень).p: = T;q: = nil; s : — 0 { инициализация }while р Ф nil doif p.i = a thenreturn p, q, send ifq: = p { сохранение значения p }if a < p.i thenp : = p.i; s : = — 1 { поиск слева }else3219.4. Деревья сортировкир: — p.r; s: = +1 { поиск справа }end ifend whilereturn p, q, sОТСТУПЛЕНИЕВ этой простой функции стоит обратить внимание па использование указателя q, который отслеживает значение указателя р «с запаздыванием», то есть указатель q «помнит»предыдущее значение указателя р.

Такой приём полезен при обходе однонаправленныхструктур данных, в которых невозможно вернуться назад.2. Удаление узла — процедура Delete.Вход: р\ — указатель на удаляемый узел; р2 — указатель па подцепляющий узел;рЗ — указатель па подцепляемый узел; s — способ подцепления.Выход: преобразованное дерево,if s = - 1 thenp2.l:=p3 { подцепляем слева }end ifif s = +1 thenp2.r: = p3 { подцепляем справа }end ifdispose(pl) { удаляем узел }3. Создание нового узла — конструктор NewNode.Вход: ключ а.Выход: указатель р па созданный узел,new(p);p.i : = a; p.i: = nil; p.r: — nilreturn p9.4.8. Сравнение представлений ассоциативной памятиПусть п — количество элементов в ассоциативной памяти.

Тогда сложность операций для различных представлений ограничена сверху следующим образом.НеупорядоченныймассивДобавитьНайтиУдалитьУпорядоченныймассивДеревосортировки0(Т)0(п)0(log2(n))..0(n)0(п)Q(N)O(log 2 (n))О(П)0(log 2 (n))..0(n)Q(log 2 (n))..Q(n)Эффективность операций с деревом сортировки ограничена сверху высотой дерева.ЗАМЕЧАНИЕДерево сортировки может расти неравномерно. Например, если при загрузке дерева исходные данные уже упорядочены, то полученное дерево будет право- или леволинейпыми окажется даже менее эффективным, чем неупорядоченный массив.322Глава 9. ДеревьяВ последующих подразделах обсуждаются методы уменьшения высоты деревасортировки.9.4.9. Выровненные и полные деревьяБинарное дерево называется выровненным, если все листья находятся на одном(последнем) уровне. В выровненном дереве все ветви имеют одну длину, равную высоте дерева, однако выровненное дерево не всегда является эффективнымдеревом сортировки.Пример Дерево, состоящее из корня и двух поддеревьев, леволинейного и праволинейного, ведущих к двум листьям, является выровненным, однако такоедерево имеет высоту (р - 1)/2.Бинарное дерево называется заполненным, если все узлы, степень которых меньше 2, располагаются на одном или двух последних уровнях.

Другими словами, в заполненном дереве Т все ярусы D(r,i), кроме, может быть, последнего,заполнены:Vг е 0..(h(T) — 1) (|£>(г,г)| =2*).Пример На рис. 9.13 приведены диаграммы заполненного (слева) и незаполненного (справа) деревьев.ЛЕММАYLI=O2 I=2 K + 1~Lформуле для суммы геометрической прогрессии jT\ = 0 2г == 1 + 2 + ... + 2 == 2k+1 - 1.•ДОКАЗАТЕЛЬСТВОПОfcЗаполненное дерево имеет наименьшую возможную для данного р высоту h.ТЕОРЕМАДля заполненного бинарного дерева log2(p + 1) - 1 ^ h < log2(p + 1).9.4.

Деревья с о р т и р о в к и323На г-м уровне может быть самое большее 2г вершин, следовательно, Yli=o< Р ^ J2i=0 2*. По лемме 2h < р + 1 ^ 2h+1, и, логарифмируя,имеем: h < log2(р + 1) и h + 1 ^ log2(p + 1). Следовательно, log2(p + 1) - 1 ^ h <<log2(p+l).•ДОКАЗАТЕЛЬСТВО2{Выровненное заполненное бинарное дерево называется полным. В полном бинарном дереве все листья находятся па последнем уровне и все узлы, кромелистьев, имеют полустепень исхода 2. Другими словами, в полном дереве всеярусы заполнены.СЛЕДСТВИЕПолное бинарное дерево высотой h имеет 2h+1 - 1 узлов.Иногда полным называют бинарное дерево, в котором все нелистовые узлы имеют полустепень исхода 2, но листья могут встречаться на любом уровне. Высотадерева, полного в таком смысле, может изменяться в широких пределах.ЗАМЕЧАНИЕЗаполненные деревья дают наибольший возможный эффект при поиске.

Однако известно,что вставка/удаление в заполненное дерево может потребовать полной перестройки всегодерева, и, таким образом, трудоёмкость операции в худшем случае составит 0(р).Желательно выделить такой подкласс деревьев сортировки, в котором высотаограничена и в то же время операции по вставке и удалению элементов выполняются эффективно. Было найдено несколько таких подклассов, наиболеепопулярный из них описывается в следующем подразделе.9.4.10. Сбалансированные деревья(Бинарное) дерево называется подровненным деревом, или АВЛ-деревом (АдельсоиВельский1 и Лаидис2, 1962), или сбалансированным по высоте деревом, если длялюбого узла высоты левого и правого поддеревьев различаются не более чем на 1.Пример На рис.

9.14 приведена диаграмма максимально несимметричного сбалансированного по высоте дерева, в котором для всех узлов высота левого поддерева ровно на 1 больше высоты правого поддерева.ЗАМЕЧАНИЕКроме сбалансированных по высоте, рассматривают и другие классы деревьев, например,сбалансированные по весу деревья, в которых для каждого узла количества узлов в левоми правом поддеревьях находятся в определённом соотношении. Здесь такие классы нерассматриваются, поэтому далее термин «сбалансированное дерево» означает сбалансированное по высоте бинарное дерево сортировки.12Георгий Максимович Адельсон-Вельский (р.

1922).Евгений Михайлович Лаидис ( 1 9 2 1 - 1 9 9 7 ) .Рис. 9 . 1 4 . Сбалансированное деревоТЕОРЕМАДля сбалансированного по высоте бинарного дерева h < 2 log2 p.Рассмотрим наиболее несимметричные сбалансированные деревья, скажем, такие, у которых всякое левое поддерево на 1 выше правого.Такие сбалансированные деревья имеют максимальную возможную высоту средивсех сбалансированные деревьев с заданным числом вершин.

Пусть Р}х — числовершин в наиболее несимметричном сбалансированном дереве высоты h. По построению имеем: р = Ph = Ph-i + Ph-2 + 1. Непосредственно проверяется, чтоРо = 1. Pi = 2, Р 2 = 4. Покажем по индукции, что P/t > {y/2)h. База: Ро = 1,(л/2)° = 1, 1 ^ 1; Pi = 2 (л/2)1 =Пусть Ph > {V2)h. ТогдаДОКАЗАТЕЛЬСТВОPh+1 =Ph + Р/г—i + 1 ^ (V2) h + (V2) h ~ l + 1 == ^ ( 1 + т + ш ) > {V~2)h ( 1+ ш) >=Имеем: (\/2) /l = 2h/2 ^ Ph = р, следовательно, | ^ log 2 p и h ^ 21og2p.•Можно заметить, что рекуррентное соотношение для Ph похоже па определениечисел Фибоначчи F(n) (см. 5.7.3), откуда легко выводимоСЛЕДСТВИЕЕсли h >0,то Ph = F(h) + Ph-ЬП О индукции.

База: Pi = 2, F ( l ) = 1, Р 0 = 1, 2 = 1 + 1. Пусть= F(h-l) + Ph-2. Рассмотрим Ph. Имеем Ph = Ph-i + Ph-2 + l = F(h-1) ++Ph-2+F{h- 2) + Ph-3 + l = F{h - 1 ) + F(h - 2)+PH-2+Ph-3+ l = F{h)+Ph-1.•ДОКАЗАТЕЛЬСТВОЗАМЕЧАНИЕИзвестна более точная оценка высоты сбалансированного дерева: h < log/yg+1\ ,2 2 log2p.Сбалансированные деревья уступают заполненным деревьям по скорости поиска (менее чем в два раза), однако их преимущество состоит в том, что известныалгоритмы вставки узлов в сбалансированное дерево и удаления их из него, которые сохраняют сбалансированность и в то же время при перестройке дерева3259.4.

Деревья сортировкизатрагивают только конечное число узлов (см. следующий подраздел). Поэтомуво многих случаях сбалансированное дерево оказывается наилучшим вариантомпредставления дерева сортировки.9.4.11. Балансировка деревьевПри добавлении (или при удалении) узла в сбалансированном дереве сортировки может возникнуть ситуация, в которой баланс нарушается. В этом случаенеобходимо перестроить дерево, чтобы восстановить баланс. Алгоритм балансировки дерева представлен на рис. 9.15 и 9.16, при этом использованы следующиеобозначения: х — добавляемый узел, v — первый узел, в котором нарушен балансна пути от корпя г к новому узлу х. Тогда возможны два варианта.

Путь от vк х состоит либо из дуг одной ориентации (скажем, только из левых дуг), либоиз левых и правых дуг. Варианты, в которых путь состоит только из правых дуглибо из правых и левых дуг, зеркально симметричны. В первом варианте деревоперестраивается в соответствии с правилом простого вращения, представленнымпа рис. 9.15.h-hh-1\ уhh+ 1Рис. 9 . 1 5 . Простое вращение326Глава 9.

ДеревьяПростое вращение восстанавливает баланс и сохраняет условие дерева сортировки. Действительно, до преобразования имееми < v,p < v,q < v,p <и,q>u,w > v.Следовательно,p < u,u < v,u < q,u < w,q < v,w > vи преобразование не нарушает условия дерева сортировки. Во втором вариантедерево перестраивается в соответствии с правилом двойного вращения, представленным на рис. 9.16. Двойное вращеиие восстанавливает баланс и сохраняетРис. 9.16. Двойное вращениеусловие дерева сортировки. Действительно, до преобразования имееми <v,w > v,p > v,q> v,p < w,q > w,s > v,t > v,s < w,t < w,s < p,t > p.9.5. Кратчайший остов327Следовательно,v < р, и < р, s < р, и < v, s > v,w > p,t > p,q > p,t < w,q > wи преобразование не нарушает условия дерева сортировки.ЗАМЕЧАНИЕДетальное обсуждение алгоритмов работы с АВЛ-деревьями, включая оценки трудоёмкости в среднем и в худшем случае, можно найти в [26] и [16].9.5.

Кратчайший остовЗадача отыскания кратчайшего остова графа является классической задачей теории графов. Методы решеиия этой задачи послужили основой для многих другихважных результатов. В частности, исследования алгоритма Краскала1, описанного в подразделе 9.5.3, привели в конечном счёте к теории жадных алгоритмов,изложенной в подразделе 2.6.4.9.5.1. ОпределенияПусть G(V, Е) — граф. Остовный подграф графа G(V, Е) — это подграф, содержащий все вершины. Остовный подграф, являющийся деревом, называется остовомили каркасом.ЗАМЕЧАНИЕОстов определяется множеством рёбер, поскольку вершины остова суть вершины графа.Несвязный граф не имеет остова.

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

Тип файла
PDF-файл
Размер
6,94 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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