Главная » Просмотр файлов » Д. Кнут - Искусство программирования том 3 (2-е издание) - 2001 (Часть 1)

Д. Кнут - Искусство программирования том 3 (2-е издание) - 2001 (Часть 1) (1119456), страница 41

Файл №1119456 Д. Кнут - Искусство программирования том 3 (2-е издание) - 2001 (Часть 1) (Д. Кнут - Искусство программирования том 3 (2-е издание) - 2001 (Часть 1)) 41 страницаД. Кнут - Искусство программирования том 3 (2-е издание) - 2001 (Часть 1) (1119456) страница 412019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Для удобства будем рассматривать здесь лишь случай "наибольший из включенных первым исключается".) Вообще, если требуется исключить наибольший элемент, а затем вставить новый элемент я, можно выполнить процедуру "протаскивания" при 1 = 1, г = У и К = я. Если же необходимо вставить элемент без предварительного исключения, можно воспользоваться "восходящей" процедурой из упр.

16. (9) (10) () КЕТ(Р) > КЕТ(1.ЕРТ(Р)), КЕТ(Р) > КЕУ(НХСНТ(Р)); 01БТ(Р) = 1 + !п(91БТ((.ЕРТ(Р)),01ЯТ(НТСНТ(Р))); 91ЯТ(КЕРТ(Р)) > 01БТ(Н10НТ(Р)), Соотношение (9) аналогично условию существования пирамиды (3) и служит гарантией того„что в корне дерева находится наибольший ключ, а соотношение (10)— зто просто определение поля 91БТ, сформулированное выше. Соотношение (11) представляет собой интересное новшество: из него следует, что кратчайший путь к конечному узлу всегда можно получить, двигаясь вправо. Будем называть бинарное дерево с этим свойством левоеяюроняом деревом, поскольку оно, как правило, сильно "тянется" влево, Из этих определений ясно, что равенство 01БТ(Р) = и подразумевает существование, по крайней мере, 2" пустых поддеревьев, расположенных ниже Р; в противном случае нашелся бы более короткий путь от Р до концевого узла Л.

Таким образом, если в левостороннем дереве имеется Х узлов, то путь, ведущий нз корня вниз по направлению вправо, содержит н» более чем (1Я(Х + 1)) узлов. Новый Связанное представление приоритетных очередей. Эффективный способ представления приоритетных очередей в виде связанных бинарных деревьев предложил в 1971 году Кларк Э. Крэйн (см.

С1аг1г А, Сгапе, ТесЬшса) Верогг БТАЕь СЯ-72-259 (Сошрпгег Яс!енсе 1)ераггшепс, Ягап(огб Ншгегагу, 1972))). Его метод требует наличия в каждой записи двух полей связи и короткого поля счетчика, но по сравнению с пирамидами он обладает следующими преимуществами.

!) Если с приоритетной очередью работают, как со стеком, то операции включения и исключения более эффективны (они отнимают фиксированное время, не зависящее от длины очереди). Н) Записи никогда не перемещаются, изменяются только указатели. !Н) Можно слить две непересекаюпшеся приоритетные очереди, содержащие в общей сложности Ю элементов, всего за О(!оКХ) шагов. Немного видоизмененный метод Крейна проиллюстрирован на рис. 27, на котором показан особый тип структуры бинарного дерева. В каждом узле содержатся поле КЕУ, поле 91БТ и два поли связи — !.ЕРТ и Н10НТ.

Поле Р1БТ всегда устанавливается равным длине кратчайшего пути от этого узла до конечного узла (т. е. до пустого узла Л дерева). Если считать, что 91ЯТ(Л) = 0 и КЕг'(Л) = -оо, то поля КЕТ и 01БТ в этом дереве удовлетворяют слелующям соотношениям: Рнс. 2Т. Приоритетная очередь, представленная в виде левостороннего дерева. узел можно вставить в приоритетную очередь, пройдя по этому пути (см. упр. 33). Следовательно, в худшем стучае необходимо всего 0(1об)т') шагов. Наилучший случай достигается, когда дерево линейно (все связи Н10НТ равны Л), а наихудший случай — когда оно абсолютно сбалансировано. Чтобы удалить узел из корня, нужно просто слить два его полдерева. Операция слияния двух непересекающихся левосторонних деревьев, на которые ссылаются указатели Р н Ц, по своей цдее простец если КЕТ(Р) > КЕТ(Я), то берем в качестве корня Р н сливаем Ц с правым поддеревом Р. При этом изменится Р1ЯТ(Р), а ьЕГТ(Р) поменяется местами с Н1ьНТ(Р) в случае необходимости.

Нетрудно составить подробное описание этого щюцесса (см. упр. 33). Сравнение методов работы с приоритетными очередями. Если число узлов Х малб, то для поддержании приоритетной очереди лучше всего прибегнуть к одному из простых методов с использованием линейных списков. Если же тт' велико, то, очевидна, гораздо более быстрым будет метод, использующий пирамиду нли левостороннее дерево, время работы которого составляет порядка!ой)т. В разделе 6.2.3 будет рассмотрен еще один способ представления линейных списков— в виде сбалансирвваннмя деревьев. Он приводит нас к третьему методу, пригодному для представления приоритетных очередей со временем работы порядка (оба.

Поэтому уместно сравнить три данных метода. Иы видели, что операции нвд левосторониими деревьями, в целом, выполняются несколько быстрее, чем операции над пирамидамн, но пирамиды занимают меньше памяти. Сбалансированные деревья занимают примерно столько же памяти, сколько левосторонние (быть может, чуть меньше); операции над ними выполняются медленнее, чем над пирамидами, и программирование сложнее, но структура сбалансированных деревьев в некоторых отншпениях существенно более гибкая. Работая с пирамидами, не так просто предсказать, что произойдет с элементами, если у иих равные ключи. Нельзя гарантировать, что элементы с равными ключами будут обрабатываться по принципу "по|п|едним пришел — первым вышел" или "первым пришел — первым вьппел", если только ключ ие расширен и не содержит дополнительного поля "порядковый номер вставки"; тогда равных ключей просто нет. С другой стороны, если применять сбалансированные деревья, можно легко отоварить жесткие условия, относящиеся к равным ключам.

Можно также выполнять такие действия, как "вставить х непосредственно перед (или после) у". Сбалансированные деревья симметричны, так что в любой момент можно исключить либо наиболыпий, либо наименьший элемент, в то время как левосторониие деревья и пирамиды должны быть так или иначе ориентированы. (См., тем ие менее, упр. 31, в котором показано, как строить спымс|прпчнме пирамиды.) Сбалансированные деревья можно использовать и для поиска, и для сортировки. Из сбалансированного дерева можно довольно быстро удалять последовательные блоки элементов. Но два сбалансированных дерева нельзя слить менее чем за й(Х) и|ахов, в то время как два левосторонних дерева можно слить всего за О(!о8 Ю) шагов.

Итак, сортировка с использованием пирамид наиболее экономна с точки зрения требований к объему памяти; левосторонние деревья хороши тем, что позволяют быстро слить две иепересекаккциеся приоритетные очереди; и, если нужно, по весьма умеренной цене можно получить гибкость, предоставляемую сбалансированными деревьями. Ф. Со времени выхода в свет "пионерской" работы Уильямса н Крейна разработано много новых способов представления приоритетных очередей, Теперь в распоряжении програмлшстов имеется большое разнообразие опций, помимо простых списков, левостороннпх и сбалансированных деревьев. Некоторые ||з яих перечислены ниже: ° спрямлеииые деревья, которые обеспечивают обработку симметричной приоритетной очерю|и всего за 0(!о8 !ой М) п|агов, если все ключи лежат в заданном диапазоне 0 < К < М [Р.

чап Еш|!е Воаэ, В. Кааэ, Е. Х!)!эгга, Маг!|. Яуэгешэ Т!|соту 10 (1977), 99 — 127]; ° биномиальные очереди [Л. Ъ'и!1!еш!и, САСМ 12 (1978), 309-315; М, В. Вго|гп, ВТСОМР 7 (1978), 298-319]; ° пагоды [Л. Ггапсоп, О. Ъ'!епаог, Л. Уц!!1еп|!и, ГОСЯ 19 (1978), 1-7]; ь парные пирамиды [М. 1..

Ггебшап, В. Яеббетг!с!|, В. В. 8!еагог, К. Е. Таг)ап, А!8опс!ип!са 1 (1986), П1-129;,1. Т. 8|вако, Л. 8. Ъ'!г|ег, САСМ 30 (1987), 234-249]; в спиральные пирамиды [11. 11. Я!еа|ог, В. Е. Тат)ап, $1СОМР 15 (1986), 52-59]; ° пирамиды Фибоиаччи [М. 1».

Гге|Ьпап, В. Е. Тат)ап, УАСМ 34 (1987), 596-615] и более общие АГ-пирамиды [М. Е. Гге|!пшп, В. Е. 1т'Шаг|(, Х Сошрпгег ап|! Яуэгеш Ясй 48 (1994), 533-551]; ь календарные очереди [В. Вгохчп, САСМ 31 (1988), 1220-1227; О. А. Пах!эоп, САСМ 32 (1989), 1241-1243]; ° ослабленные пирамиды [3. К. ОНэсоБ, Н. Х. Оа)ке, К. БЬгсйгшап, К. Е. Таг1ап, САСМ 31 (1986), 1343-1354); ° острбга (М. 3. Р1эсЬег, М.

8. Рагегэоп,,)АСМ 41 (1994), 3-30]; ° "горячие" очереди (В. Ъ'. СЬегйаээйу, А. Ъ'. СоЫЬег8, С. 811чегэсе1п, ЗОВА 6 (1997), 83-92). Не все нз этих методов выдержали испытание временем. Лелостороннне деревья сеггэтня — уже анахронизм; ояи используются разве что в тех приложениях, в которых необхсдимо жестко соблюдать лэюцлплину "последним пришел — первым вышел", Детали реализации бнномлальиых очередей и пирамид Фпбоначчл можно найти в работе 11. Е.

Кпий, ТЬе 81апЕогс( СгарЬВаэе (Феи Уог)г: АСМ Ргеээ, 1994), 475-489. *Анализ пирамидальной сортировки. Алгоритм Н до сих пор не был полностью проанализирован математическими методами, но некоторые его свойства можно вывести без особого труда. Поэтому даяный раздел завершается довольно подробным анализом пирамид. На рис. 28 показана форма пирамиды из 26 элементов; каждый узел помечен двоичным числом, соответствующим его индексу в пирамиде. Звездочками на этой диаграмме помечены так называемые особмс уэлм, которые лежат на пути от 1 к Х Одна из наиболее важных характеристик пирамиды — множество размеров ее поддеревьев.

Например, на рис, 28 размеры поддеревьев с корнями в узлах 1, 2,..., 26 равны соответственно 26',15,10',7,7,6',3,3,3,3,3,3,2",1,1,1,1,1,1,1,1,1,1,1,1,1'. (12) Звездочками помечены особые поддеревьл с корнями в особых узлах; в упр. 20 показано, что если Л имеет двоичное представление (13) Х = (5„5„1 ... 515э)э, и = (!8Ю), то размеры особых подлеревьев равны (15л-1 ° ° ° 5150)2. (15а-т 5150)2, ° . ~(15150)2~ (150)э~ (Цэ (14) Неособые полдеревья всегда абсолютно сбалансированы, так что их размеры имеют вид 2 — 1. В упр. 21 показано, что среди неособых поддеревьев существует ровно Х вЂ” 1! ~ М -2 ~ 1Ф вЂ” 4! — ~ размером 1, ~ — ~ размером 3, ~ — ~ размером 7, ..., 2и-1 ~ (2" — 1) размера.

(15) Например, на рис. 28 изображено двенадцать неособых поддеревьев размером 1, шесть поддеревьев размером 3, два — размером 7 и одно — размером 15. Пусть э~ — размер полдерева с корнем 1, а Ми — мультимножество (эм эз,..., э,ч) всех этих размеров. Используя (14) и (15), легко вычислить Ми при любом заданном Х. В упр. 5.1,4-20 показано, что общее число способов построения пирамиды нз целых чисел (1,2,...,7ч') равно (16) Рнс.

28, Так выглядит пирамида из 26 = (11010)э элементов. Например, количество способов такого расположения 26 букв (А,В,С,..., Я) на рнс. 28„чтобы по вертикали сохранялся алфавитный порядок, составляет 26~Д26 10 6 2 1 1~з Зв 7з 15 Теперь можно проанализировать фазу построения пирамиды в алгоритме Н, т. е. вычислительные операции, которые завершаются до того, как иа шаге Н2 впервые выполнится условие 1 = 1.

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

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

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