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

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

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

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

Доказать это утверждение на удивление легко. Предположим, что каждая из Ж! возможных перестановок Х ключей с равной вероятностью используется для построения дерева путем последовательных вставок. Число сравнений, необходимых для поиска ключа, ровно на одно больше числа сравнений, необходимых для его вставки в дерево. Таким образом, если Ск — среднее количество сравнений при успешном поиске, а С~, — при неудачном, то С' + С,' + " + С' С„= 1+ (2) Однако согласно соотношению между длинами внутреннего н внешнего путей (6.2.1— (2)) с = (1+ — ',)с' -1. Объединяя (3) и (2), получим (3) (л'+ цс' = гл" + со+ с', + ° +си,. Это рекуррентное соотношение легко решается: вычтя следующее равенство л'с',, =2(л' — ц+с'+с, '+ - +с' из предыдущего, мы получим (Н+ ЦСй — Л'С'т, = 2+С' Так как С', = О, то следовательно, С~д = С~и 1 + 2/(Л' + ц.

С,', = гик„- г. (5) Применив (3) и выполнив некоторые упрощения, получим требуемый результат: Сн =2(1+ -)Н,, -3. 15 л.) (6) В упр. 6-8 приводится более детальная информация — можно определить не только средние значения Сл и С~, но и их точные распределения вероятностей. Сортировка путем вставки в дерево. Алгоритм Т был разработан для поиска, однако он может применяться и в качестве основы алгоритма внутренней сортировки; его можно рассматривать как естественное обобщение вставки в список — алгоритма 5.2.11.. Если этот алгоритм будет корректно реализован, то среднее время его работы лишь незначительно превысит время работы лучших алгоритмов, обсуждавшихся в главе 5. После того как дерево построено, остается только симметрично его обойти (алгоритм 2.3.1Т): так мы получим записи в рассортированном виде.

Тем не менее следует предпринять определенные меры предосторожности— требуются некоторые отличия на шаге Т2 при К = КЕУ(Р) в связи с тем, что нашей целью является не поиск, а сортировка. Одно из возможных решений — считать, что К = КЕ1'(Р) эквивалентно К > КЕ1(Р). Сортировка, при этом будет вполне корректна (отметим, что записи с одинаковыми ключами необязательно должны находиться в смежных узлах — важно„чтобы они последовательно встречались при симметричном обходе дерева). Однако при нюзичин большого количества повторяющихся ключей этот метод может дать плохо сбалансированное дерево, и процесс сортировки окажется замедленным. Еще одним решением может служить хранение списка записей с одним я тем же ключом для каждого из узлов.

В этом случае потребуется дополнительное поле ссылок, однако при большом числе повторяющихся ключей такая сортировка окажется более быстрой. Таким образом, применение алгоритма Т только для сортировки является неплохим, хотя и не лучшим, решением. Однако этот алгоритм настоятельно рекомендуется использовать в случае комбинирования в одном приложении как поиска, так и сортировки. Интересно отметить тесную взаимосвязь между анализом сортировки путем вставки в дерево и анализом "быстрой сортировки", хотя, на первый взгляд.

эти методы совершенно различны. При успешной вставке Л ключей в изначально пустое дерево мы выполняем то же среднее число сравнений ключей, что и в алгоритме 5.2,2() (за небольшими исключениями). Например, в случае вставки в дерево каждый ключ сравнивается с Км затем каждый ключ, меньший, чем Кы сравнивается с первым ключом, меньшим, чем Км и т. дл в случае быстрой сортировки каждый ключ сравнивается с первым разделяющим элементом К, затем каждый ключ, меньший, чем К, сравнивается с некоторым элементом, меныпнм, чем К., и т, д. Среднее количество сравнений, необходимое в обоих случаях, равно ХСя — Л' (впрочем, в алгоритме 5.2.2(е на самом деле выполняется несколько дополннтельньгх сравнений для ускорения внутреннего цикла),.

Удаление. Иногда приходится заставлять компьютер забыть одну нз записей таблицы. Мы можем легко удалить узел, поле ГЫМК или ВЫМК которого равно Л; однако, если оба полдерева не пусты, мы должны проделать некоторые специальные действия, так как ссылка не может указывать на два места одновременно. Рассмотрим еще раз рис. 10. 1(ак удалить из дерева корневой узел, САРВ1СОВМТ Одно из решений состоит в удалении следующего по алфавиту узла, ссылка 1ЫМК которого пуста, н его вставке на место узла, который надо удалить.

Например, на рис, 10 мы можем удалить ОЕМ1М1, а затем заменить САРВ1СОВМ значением ОЕМХМ1. Это позволит сохранить порядок элементов таблицы. В приведенном далее алгоритме содержится детальное описание такого процесса. Алгоритм 1) (Удаление иа дерева ('7)ее де(е(юп)), Пусть Ц вЂ” переменная, указывающая на узел дерева поиска, представленного, как в алгоритме Т. Алгоритм предназначен для удаления этого узла, причем дерево останется бинарным деревом поиска.

(На практике имеем либо Ц = ВООТ, либо Ц = 1ЫМК(Р), либо Ц ьз В1.1МК(Р) для некоторого узла дерева. Алгоритм изменяет значение Ц с учетом проведенного удаления.) 1)1. [()уста ли ссылка ВЫМКТ] Установить Т +- Ц. Если ВЫМК(Т) = Л, установить Ц ( — (.ЫМК(Т) и перейтн к шагу 04. (Например, если Ц = ВЫМК(Р) для некоторого Р, мы можем присвоить ВЕ1МК(Р) +- ШМК(Т).) 1)2. [Поиск преемника.] Установить В с- В1.1МК(Т), Если 1Л 1МК(В) = Л, присвоить (.ЫМК(В) (- 1ЫМК(Т), Ц +- В и перейти к шагу П4.

1)3. [Поиск пустой ссылки ШМК ] Установить Б +- (.ЫМК(В). Затем, если 1Д 1МК(Б) ф Л, присвоить В <- Б и повторять этот шаг до тех пор, пока не будет получено ГЫМК(Б) = Л. (Теперь Б будет равно Це, следующему за Ц элементу при симметричном обходе.) И, наконец, установить ШМК(Б) +- ШМК(Т), 1.1.1МК(В) +- ВЫМК(Б), ВЫМК(Б) С- ВЫМК(Т), Ц <- Б. 1)4, [Освобождение узла.] Выполнить АРАП. ч= Т, т. е. вернуть удаленный узел в пул свободной памяти. $ Читатель может проверить работоспособность данного алгоритма, удаляя узлы АЦОАВ10Б, САМСЕВ и САРВ1СОВМ на рис.

10; каждый из этих случаев имеет свои особенности. Особо придирчивый читатель, конечно, обратит внимание на то, что случай ВЫМК(Т) ~ Л, 1Л.1МК(Х) = Л отдельно не выделен. М(ы отложили обсуждение этого специального случая "на потом", поскольку в приведенном виде алгоритм обладает некоторыми интересными свойствами. Алгоритм Р представляется весьма несимметричным, н создается впечатление, что длинная цепь удалений разбалансирует дерево (н все оценки эффективности работы при этом потеряют сиду). Однако "все не так, как на самом деле", и выро. ждения не будет.

Теорема Н (Т. Н. Хиббард (Т. Х. Н)ЬЬегд), 1962.) После удаления элемента яз случайного дерева по алгоритму Р дерево остается случайным. [Читателям, которым математика не доставляет никакого удовольствия, настоятельно рекомендуется пропустить все до формулы (10).[ Эта формулировка, естественно, несколько туманна. Сформулируем теорему более строго. Пусть Т представляет собой дерево из и элементов и пусть Р(Т) — вероятность появления Т, если его ключи вставляются в случайном порядке согласно алгоритму Т.

Одни деревья более вероятны, чем другие. Пусть сг(Т) — вероятность того, что после вставки случайным образом с помощью алгоритма Т и+ 1 элементов и удаления любого из них (выбранного наудачу) по алгоритму Р получится дерево Т. При вычислении Р(Т) предполагается, что все и! перестановок ключей равновероятны; при вычислении Я(Т) предполагается равновероятность (и+ 1)! (и+ 1) перестановок ключей и выбора удаляемого ключа. Теорема гласит, что для всех Т Р(Т) = Я(Т). Докаэагпельстпео.

По условию теоремы равновероятны не деревья, а перестановки, поэтому доказывать теорему мы будем, рассматривая в качестве случайных объектов перестпаноеки. Сначала определим удаление из перестановки, а затем докажем, что случайный элемент, удаленный яз случайной перестановки, оставляет перестановку слу чайной. Пусть а~ ат...

а„*1 — перестановка множества (1, 2,..., и+1); мы хотим определить операцюо удаления аь которая даст в результате перестановку Ь| Ьт...Ь„ множества (1, 2,..., и). Эта операция должна соответствовать алгоритмам Т и Р, так что, если мы начнем с дерева, сконструированного последовательностью вставок амат,...,а„.~м н удалим аь перенумеровав затем ключи от 1 до и, получится дерево, которое может быть построено последовательностью вставок Ь1 Ьэ... Ь„.

Такую операцию удаления можно легко определить. Возможны два случая. Случай 1. а~ = и + 1 нли а; + 1 = а для некоторого у' < 1. (Это соответствует условию 31,1ИК(а,) = Л.) Ъдаляем а; из последовательности и вычитаем единицу из каждого элемента, большего, чем аь Случай й. а; + 1 = а для некоторого у > 1. Заменим а; элементом а, удалим а из его первоначального положения и вычтем единицу из каждого элемента, большего, чем а;.

Рассмотрим, например, перестановку 4 6 1 3 5 2. Если пометить элемент, который должен быть удален, кружком, получим С4)6 1 3 5 2 = 4 5 1 3 2 4 6 1С3)5 2 = 3 5 1 4 2 4Д61 3 5 2 = 4 1 3 5 2 4 б 1 3®2 = 4 5 1 3 2. 4 6(,'()3 5 2 м 3 5 1 2 4 4 6 1 3 5С2)~ 3 5 1 2 4 Поскольку имеется (и + 1)! (и + 1) возможных операций удаления, теорема будет доказана, если мы сможем показать, что каждая перестановка (1, 2,..., и) является результатом в точности (и + 1)э удалений.

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

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

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