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

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

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

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

Такая замена изменит общую стоимость на -с — 9»(!» — 1»+з — 1) + 9»+з < 9»ч.~ — 9» з. Значит, данное дерево не было оптимальным, если выполнялось условие 9» ~ > 9»~.~,' в случае 9» ~ = 9»~.~ оптимальное дерево было трансформировано в другое оптимальное дерево. В последнем случае последовательность таких трансформаций приведет к 1» <!»+м $ Более глубокий анализ структуры даст нам значительно больше.

Лемма Х. Предположим, что у я к — индексы, такие, что у < й и 1) ф з > 9з.~.~ пйн 1 < 1 < й; Й) 9»-~ < 9»+з,' 61) Ф < 9» з + 9» при 7 < 1 < к )ч) %-з > 9»-~ +9». Тогда существует оптимальное дерево, в котором 1» ~ = 1» и либо а) 1 = 1» — 1, либо Ь) 11 —— 1» и '(,!') является левым дочерина узлом. Доказан»ельстео. При замене "левого" "правым" в лемме % мы увидим, что (й) означает существование оптимального дерева„в котором 1» ! > 1».

Однако ле»»ма 1т' и (1) означают, что 1! < 1» « ° 1». Следовательно, 1» ! = 1». Предположим, что 1, < 1» — 1 < 1,+! для некоторого ! < з < й. Пусть 1 представляет собой наименьший индекс, меньший й, такой, что 1! = 1». Тогда 1,.»! = " = 1! ! = 1» — 1 и [в+1) представляет собой левый дочерний узел. Отсюда вытекает, что !-е нечетно и узел Я является левым дочерним уз!»о»! при ! = »+1, »+3,..., 8. Заменим родительский узел узла Я узлом !+1, а узел Я вЂ” узлом ~в+1~ для я < ! < 1.

Кроме того, заменим внешний узел ~е] внутренним узлом, дочерними узлами которого являются Я и Г».»1). Все зти замены приведут к изменению цены на < д, — д! — д»е! < д, — д» ! — ды т. е. к улучшению дерева при д, < д» ! + д». Следовательно, согласно (1И) 11 > 1» — 1. Дозтого момента мы ни разу не использовали гипотезу (1т). Если 1; = 1» и ' не является левым дочерним узлом, то Я должен быть правым "брауом" узла '-1 .

Заменим их родительский узел узлом ~Я~, а затем заменим каждый лист листом (»-1) для ! < ! < й. Заменим также внешний узел (и) внутренним узлом, являющимся родительским по отношению к (к--») и (»;). Эти действия изменят цену на — д »+9» »+д» < О, так что мы получим оптимальное дерево, удовлетворяющее условию (Ь).

! Лемма Ъ'. Пусть .! а й те же, что и в лемме Л. Рассмотри»! измененные вероятности(де,...,д„',) = (де,...,д »,д», +д»,д,,д» »,д» „...,д„), полученные посредством удаления д» ! и д» и вставки д» ! + 9» после д !. Тогда С(дО ''' д -!) < (д»-»+д») +С(де д ) (29) Доказан»ельсп»во. Достаточно показать, что любое оптимальное дерево для (де,..., д„) может быть трансформировано в дерево той же цены, в котором Я.—:и) и (к) являются "братьями"„т.

е. имеют один и тот же родительский узел, н листья которого появляются в следующем порядке: ДО ()!!'-.0 Я-Я (к) Ц ... (к — 2 2)()Б) ... Я. (30) Мы начнем с дерева, сконструированного в лемме Х. Если зто дерево тина (Ь)„ просто переименуем листья, сместив,й-1~ и $~ влево на Й вЂ” 1 — У мест. Если же это дерево типа (а), предположим, что 1!-~ = 1»-1 н 1, = 1». Вэтом случае мы действуем следующим образом: сначала сместим (я — !.) н Я влево на Й вЂ” 1 — и мест, затем заменим нх новый родительский узел узлом, дочерними узлами которого являются (»Я~ ~и Я~, а также заменим узел Я узлом (з — 1~ для всех,1 < ! < ж $ Лемма 2.

Прп выполнении условий леммы У неравенство (29) становится равен- ством. Доказан»ельсвпео. Каждое дерево для (де,..., д'„, ) соответствует дереву с листьями (30), в котором выпадающие из общего порядка листья Я-0 и Б) представляют дочерние узлы одного н того же родительского узла. Пусть зтот родительский узел — (х). Мы хотим показать, что любое оптимальное дерево этого типа может быть конвертировано в дерево той же цены, но в котором листья располагаются в нормальном порядке — Я) ... Я. 556 ! 414 ! ЗЗЗ 2 !ее 3 147 3 !22 3 Ыб 5 114 3 431 з Зе 6 53 4 Зе б Рис. 18. Применение нисоритма ! арсии-Вача к данным о честознх поивления буки; фазы 1 и 2.

156 64 !3 22 31 153 2! !5 47 1 5 2 4 б 6 5 б 5 4 7 В'СЕЕР55115 З2 25 57 63 15 1 б 6 4 4 б В 2 О Р Я 45 Ы 66 2З Е \Е ! 1Е 5 4 4 6 6 6 6 6 7 Е 5 Т 5 Т В 2 Т Есви 1 = л — 1, доказывать нечего. В противном случае мы имеем 4,', > д,'чч дла1 <1< 5-1, посколькУоэ ~ > дь ~+Дэ > дэ. Следовательно, согласнолемме% 1х < 1 « 1э м где 1, — уровень Ох и 1, — уровень Г~ ~ для 1 < 1 < л — 1. Если же 1 = 1ь ач мы просто смешаем узел Я вправо, замещая последовательность Ох Я, . (л-2) последовательностью Я ... (х-2) Ох; это расположит листья в требуемом порядке. В противном случае предположим, что 1, = 1г и 1,~.~ > 1,. Сначала заменим ® )э') ... ~в на Е ...

Я Я; получим 1 < 1+~ < < 1ь т, где 1 = 1, + 1— общий уровень узлов Я-Д~ и Щ. И, наконец, заменим узлы (ЕЦ ) л) )э+1) ....~~-2 при помощи циклической перестановки. В упр. 40 доказываетсл, что этп действия приведут к уменьшению цены (за исключением случая 1ь . = 1). Однако поскольку согласно лемме Ъ' цена не может уменьшаться, следовательно, 1я э = 1 и лемма доказана. ! Эти леммы показывают, что задача для и + 1 весов 4е, ш, ..., д„может быть сведена к задаче для и весов: сначала находим наименьший индекс А„такой, что йя ~ < 4ь+ы а затем — наибольшее у < л, для которого 4 ~ > дя ~+4ь. После этого мы УдалЯем оь г и Оэ и вставлием сУммУ Уэ-~ +4ь ЯепосРедственно после дэ ~.

В специальном случае з = 0 или )г = и, как вытекает из доказательства, мы должны действовать так, как если бы У нас были бесконечные веса 4 ~ и д„э ~ слева н спРава. Доказательства также показывают, что любое оптимальное дерево Т', полученное на основе новых весов Щ,...,д'„,), может быть переупорядочено в дерево Т, в котором исходные веса (цо: .

° ., д„) находятся в корректном порядке слева направо; более того, каждый вес появляется на одном н том же уровне как в дереве Т, так и в дереве Т'. В качестве примера на рис. 18 показано построение дерева для весов 4я, представляющих относительные частоты появления букв „„А, В, ..., 2 в английском тексте. Первые веса в этом списке равны 186, 64, 13, 22, 32, 103, ..., и выполняются неравенства 186 > 13, 64 > 22, 13 < 32; следовательно, мы должны заменить 13,22 значением 35. В вовой последовательности 186, 64, 35, 32, 103, следует заменить 35,32 значением 67 и сдвинуть 67 левее 64, получив при этом последовательность 186, 67, 64, 103, .... Затем 67, 64 превращаются в 131 и мы приступаем к исследованию весов, следующих за 103.

После того как 27 исходных весов превращаются в один вес, 1000, история комбинн1ювания весов определяет бинарное дерево, которое и является решением поставленной задачи. 667 1 7 166 7 '31 3 166 7 35 5 37 5 38 4 57 38 5 70 5 16 5 48 5 З1, Р 37 Н я !8 Рис. 59. Применение алгоритма Гарсии«47оча к данным о частотах ноивмиии букв; фаза 3, 67 „ 1ОЗ „ 6З 3 57 Е 1 ЗЗ» 71 б 155 6 с р с 1 7 5 3 к 58 4 57 4 63 64 4 51 4 86 4 67 И 0 Б Т 1» б ЗЗ„8 е Р 8З 78 8 17 ., Е 1б 6 Т Однако листья дерева на рис.

18 не находятся в правильном порядке, поскольку при каждом перемещении 4» ~ + 4» влево дерево тщатш~ьно запутывается (см. упр. 41). Тем не менее дою»зательство леммы 2 гарантирует существование дерева, листья которого расположены в правильном порядке н на тех же уровнях, что н в "запутанном" дереве. Такое 'распутанное" дерево показано на рис. 19; зто оптимальное дерево получено по алгоритму Гарсия-Воча.

Алгоритм С (Алгорипьн Гарсия-Вача построения онпп»молиных бинорнмл деревьев). Дана последовательность неотрицательных весов юо„юы ... „ю„. Алгоритм позволяет построить бинарное дерево с н внутренними узлами, ~» н~»1» которого минимальна (здесь 1» представляет собой расстояние внешнего узла ~Я от корня дерева). Алгоритм использует массив из 2н + 2 узлов с адресами Х», где О < Й < 2н + 1.

Каждый узел имеет четыре поля, а именно — ЫТ, Ы.1ИК, К(.1ИК и 1.КЧБ., Листья построенного дерева — это узлы Хо... Х„; внутреинимн узлами будут узлы Х„+~ ...Хэ„. Корневым узлом дерева является узел Хтю а узьл'Хоо используется в качестве временного. Алгоритм, кроме того, использует рабочий массив указателей Ро, Рм, Рс где 1 < н + 1. С1. [Начало фазы Ц Установите ЫТ(Х») +- ю» и Ы.1ИК(Х») +- й1.1ИК(Х») +- Л для О < Л < н. Установите также Ро» вЂ” Ха +ы ИТ(Ро)» — оо, Р) +- Хо 1+- 1, т+- н.

Затем выполните шаг 62 для 1 = 1, 2, ..., н и перейдите к шагу 63. С2. [Поглощение»о ..[ (В этот момент у нас выполнены базовые „словия ЫТ(Р; ») > ЧТ(Р»»~) для 1 < 1 < й (31) Другими словами, веса в рабочем массиве "попарно убывающие".) Выполните подпрограмму С, описанную ниже, несколько роз, пока не будет соблюдено условие ИТ(Р»») > в) (если это условие соблюдено изначально, то вьшолнять подпрограмму С не нужно).

Затем установите 1+- 1+ 1 и Р» +- Х . СЗ. [Завершение фазы 1.[ Выполните подпрограмму С несколько раз (возможно, ни разу), пока 1 не станет равным 1. С4. [Фаза2.[ (Теперьр~ = Хоа — кореньбинарногодереваиИТ(Р~) =во+ +ю„.) Установите 1» равнымн расстояниям от узла Х» до узла Р~ для О < к < н (см. упр. 43; на рис. 18 приведен пример построенного дерева; номера уровней показаны справа от узлов). СБ. [Фаза 3.[ Изменяя связи Х„+ы..., Хя и постройте новое бинарное дерево с теми же уровнями 1», но с листьями, расположеннымн в симметричном порядке Хо, ..., Х„(см. упр. 44; пример полученного дерева показан на рис. 19), $ Подпрограмма С (Ооаединение). Эта подпрограмма является "сердцем" алгоритма Гарсия-Воча.

Она объединяет два веса н смещает нх на необходимое количество полей влево„обеспечивая выполнение условия "попарного убывания" (31). С1. [Инициализация,) Установите к»- й С2. [Создание нового узла.[ (В настоящий момент А. > 2,) Установите га»- гн+ 1, 1.1.1ИК(Х, ) +- Р» ы й( 1ИК(Х ~) + — Р», ИТ(Ха~) ~- ИТ(Р»-») + ЪТ(Р»). СЗ. [Сдвиг последующих узлов влево.) Установите г < — ( — 1, а затем Р.»» +- Р для й<1<й С4. ]Сдвиг предыдущих узлов вправо.] Установите у +- !с — 2: затем, пока ИТ(Р!) < ИТ(Х,„), присваивайте Р чп +- Р. и ! +- ! — 1.

Сб. ]Вставка нового узла.] Присвойте Р~+~ < — Хч . Сб. ]Все?! Если у > 0 и ИТ(Р ~) < ИТ(Х,„), присвойте й+- у и вернитесь к шагу С2. ! Как указывалось выше, подпрограмме С может потребоваться П(п) шагов для создаиия и вставки нового узла, поскольку оиа использует последовательное хранение в памяти вместо связанных списков. Таким образом, общее время работы алгоритма О может составлять Й(пт). Однако более тщательная разработка применяемых структур данных может привести к использованию не более О(п)ойп) шагов (см. упр.

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

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

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