Главная » Просмотр файлов » Д. Кнут - Искусство программирования том 1

Д. Кнут - Искусство программирования том 1 (1119450), страница 91

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

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

(12) Более, того, деревья Т и Т' эквивалентны тогда и только тогда, когда 1п(о(и ) =!пГо(и') для 1 < л < п. (13) Обратите внимание, что 1 и г представляют собой дополнения к 1!АО и к!АО в прошитом дереве. Эта теорема характеризует любую бинарную древовидную структуру на основании двух последовательностей нулей и единиц. Доказательство. Ясно, что данное условие эквивалентности бинарных деревьев будет автоматически выполняться, если доказать заданное условие подобия. Более того, условия п = и' и (12), конечно же, необходимы, так как соответствующие узлы подобных деревьев должны занимать одинаковые позиции при прямом порядке обхода. Следовательно, достаточно доказать, что деревья Т и Т' подобны, если выполняется условие (12) и и = п'.

Доказательство осуществляется методом индукции по и с помощью следующего вспомогательного результата. Лемма Р. Пусть иы ию..., и„являются узламя непустого бинарного дерева в прямом порядке обхода, а 1(и) = 1(и) + г(и) — 1. Тогда 1'(и!) + 1'(иа)+ + 1(ил) = — 1 и у'(и!) + + 1(иь) > О, 1 < А < п.

(14) Ди!) + . + Диь) > 0 для 1 < А < пь ((и!) + + ((и„пы) = О, (15) и условие (14) снова становится очевидным. э (С другими теоремами, аналогичными лемме Р, можно ознакомиться при обсуждении польской системы обозначений в главе 10.) Для завершения доказательства теоремы А заметим, что она, очевидно, верна при и = О. Если п > О, то из определения прямого порядка с!!едует, что и! и и', являются соответствующими корнями этих деревьев и существуют такие п~ и п~~ (размеры левого поддерева), что иш ..,,и„, и ил,...,и'„+! — левые поддеревья деревьев Т и Т', ! иь +„, .., и„и и'„+„..., и'„— правые поддеревья деревьев Т и Т'. Доказательства.

Утверждение очевидно для и = 1. Если и > 1, бинарное дерево состоит нз корня и1 и других узлов. Если г'(и!) = О, то либо левое поддерево, либо правое поддерево является пустым, поэтому данное условие, очевидно, истинно по индукции. Если у(и!) = 1,предположим, что левое поддерево содержит ьл узлов; далее, используя метод индукции, получаем Доказательство этой теоремы можно завершить с помощью метода индукции, если показать, что и = п[. При этом возможны три таких случая: если !(и~) = О, то п~ — — 0 ч и[', если )(и~) = 1, г(и~) = О, то и, = и — 1 = и[., если!(и~) = г(и,) = 1, то по лемме Р можно найти такое наименьшее А > О, что ,((и~)+. +1(иь) = 0; и тогда п, = А — 1= и, '(см.

(15)). в Как следствие теоремы А, проверка эквивалентности или подобия двух прошитых бинарных деревьев может быть выполнена просто за счет прямого их обхода и проверки полей 1МРО и ТАО. Некоторые интересные расширения теоремы А получены А. Я. Бликлом [А. д. В1(к1е, Вп!!. с(е 1'Асвк), Ро!опазве <Ьв Вс!епсев, БеНе бев Бс!епсев МагЬ., Авве., Рагун., 14 (1966), 203-208]. Он рассмотрел бесконечный класс возможных порядков обхода, из которых только шесть (включая прямой порядок обхода) из-за их простых свойств были названы безадресными. Завершим этот раздел описанием типичного алгоритма для бинарных деревьев, который копирует бинарное дерево в другие ячейки памяти.

Алгоритм С (Копирование бинарного дерева). Пусть НЕАР— адрес заголовка списка бинарного дерева Т: таким образом, Т вЂ лев поддерево НЕАР, а 551МК(НЕАР)— его адрес. Пусть МОРЕ(О) †уз с пустым левым поддеревом. Этот алгоритм копирует Т, и копия становится левым поддеревом узла МОРЕ(О). В частности, если узел МОРЕ(О) является заголовком списка пустого бинарного дерева, алгоритм превращает пустое дерево в копию дерева Т.

С1. [Инициализация.] Установить Р е- НЕАР, Ц е- О. Перейти к шагу С4. С2. [Есть ли что-либо справау] Если МОРЕ(Р) имеет непу стае правое поддерево, установить Н ~ АЧА15 и присоединить МОРЕ®) справа к узлу МОРЕ(Ц). (В начале шага С2 правое поддерево узла МОРЕ(Ц) пусто.) СЗ. [Копирование 1МРО.] Установить 1МРО(Ц) е- 1МРО(Р).

(Здесь 1МРО обозначает все части узла, которые следует копировать, за исключением связей.) С4. [Есть ли что-либо слеваУ] Если МОРЕ(Р) имеет непустое левое поддерево, установить Н с.= АЧА15 и присоединить МОРЕ(Н) глева к узлу МОРЕ(Ц). (В начале шага С2 левое поддерево узла МОРЕ(Ц) пусто.) С5. [Продвижение вперед.] Установить Р е- Р*, Ц е- Ц*. С6. [Проверка завершения.] Если Р = НЕАР (или, что эквивалентно, если Ц Н51МК(О), при условии, что МОРЕ(Р) имеет непустое правое поддерево), выполнение алгоритма прекращается; в противном случае перейти к шагу С2. ! Этот простой алгоритм демонстрирует типичный пример использования метода обхода дерева.

В данном виде он может применяться для прошитых, непрошитых или частично прошитых деревьев. Для выполнения шага С5 требуется вычислить прямых последователей Рз и Цж Для непрошитых деревьев это обычно выполняется с помощью вспомогательного стека. Доказательство корректности алгоритма С представлено в упр. 29, а программа для компьютера Н11, соответствующая этому алгоритму для правопрошитого бинарного дерева, приводится в упр. 2.3.2 — 13. Для прошитых деревьев "присоединение" на шагах С2 и С4 выполняется с помощью алгоритма 1. В приведенных ниже упражнениях содержится довольно много интересных задач, имеющих отношение х теме данного раздела.

Хотя бннадные нлн дикотомнческне системы, в принципе, ОЕгупявны, онн являются едва лн не самыми неестественными типами упорядочения, которые только можно себе представить. — Омззыяав с89Ймсом, А тгеаг?ве оп гпе беодгаопу апб ставя?бсаг?оп ог Атта1в (1835) УПРАЖНЕНИЯ 1. [01] Пусть |ИРО(Р) в бинарном дереве (2) обозначает букву, йоторая хранится в узле ИООЕ(Р) .

Какой символ тогда хранится в узле 1ИРО 0 Ь?ИИ(ИЬ1ИК(21.1ИК(Т) ) ) )? ! 2. [11] Перечислите узлы бинарного дерева г з (а) в прямом порядке обхода; (Ь) в 4 5 б 7 симметричном порядке обхода; (с) в обратном порядке обхода. 3. [20] Справедливо ли следующее утверждение: "Концевые узлы бинарного дерева встречаются в одном и том же относительном порядке для прямого, симметричного и обратного обходов"? 4. [20] В данном разделе определяются три основных порядка обхода бинарного дерева.

В дополнение к ним можно предложить еще один альтернативный способ обхода: а) попасть в корень, Ь) пройти правое поддерево, с) пройти левое поддерево. Далее это правило применяется рекурсивно для всех непустых поддеревьев. Имеет ли такой порядок какую-либо простую связь с тремя другими рассмотренными выше поряд- ками? б. [22] Узлы бинарного дерева можно идентифицировать последовательностью нулей и единиц, используя обозначения, подобные десятичной системе обозначений Дьюи для деревьев, следующим образом. Корень (егли он существует) представляется последовательностью 1.

Корни (если они существуют) левого и правого поддеревьев узла о соответственно представляются последовательностями аО и а1. Например, узел Н дерева (1) в данной системе обозначений выглядел бы как 1110 (см. упр, 2.3 — 15). Покажите, что с помощью такой системы обозначений было бы удобно описывать прямой, симметричный и обратный порядки обхода. 6. [М22] Допустим, что бинарное дерево имеет и узлов, которые в прямом порядке обхода обозначаются как и~ из...

и, а в симметричном порядке — как игн яр~... ир„. Покажите, что перестановку р~рэ р„можно получить, передавая в стек последовательность 12... и, как в упр. 2.2.1-2. И наоборот, покажите, что любая перестановка р~рг ..р, которую можно получить с помощью стека, соответствует некоторому бинарному дереву. 7. [22] Покажите, что, зная прямой и симметричный порядки узлов бинарного дерева, можно восстановить структуру бинарного дерева. Можно ли это сделатгч зная прямой и обратный (вместо симметричного) порядки или симметричный и обратный порядки? 8. [20] Найдите все бинарные деревья, узлы которых располагаются в одинаковой последовательности (а) как в прямом, так и в симметричном порядках: (Ъ) как в прямом, так и в обратном порядках; (с) как в симметричном, так и в обратном порядках.

9. [М20] Сколько раз выполняются шаги Т1-Тб при обходе бинарного дерева с и узлами согласно алгоритму Т в зависимости от и? ь 10. [ЕО] Какое максимальное количество элементов может находиться в стеке во время выполнения алгоритма Т при работе с деревом с и узлами? (Ответ на этот вопрос очень важен при распределении памяти, когда стек располагается в последовательных ячейках памяти.) 11. [ИМА1] Найдите среднее значение для наибольшего размера стека при выполнении алгоритма Т в зависимости от числа узлов и при условии, что все бинарные деревья с и узлами рассматриваются как равновероятные. 12. [22] Напишите алгоритм, аналогичный алгоритму Т, который совершает обход бинарного дерева в прямом порядке, и докажите его корректность. ь 13.

[24] Напишите алгоритм, аналогичный алгоритму Т, который совершает обход бинарного дерева в обрашнам порядке, и докажите его корректность. 14. [22] Покажите, что если бинарное дерево с и узлами имеет вид (2), то общее количество Л-связей в таком представлении можно выразить с помощью простой функции от и. Эта функция не зависит от формы дерева 15. [)б] В прошитом представлении дерева (10) каждый узел, за исключением заголовка списка, имеет в точности одну связь, которая указывает на нее сверху вниз, а именно— связь от родителя этого узла. Некоторые узлы также имеют связи, которые указывают на них снизу вверх.

Например, узел С имеет два указателя, направленных на него снизу вверх, а узел Š— только один.". Существует ли простая зависимость между количеством связей, указывающих на данный узел, и другими основными свойствами узла? (Это нужно для того, чтобы при изменении структуры дерева знать количество связей, указывающих на узел.) ь 16. [Ей] Схемы, представленные на рис 24, позволяют предложить следующие интуитивно понятные правила расположения узла МОВЕ(Цэ) в бинарном дереве по отношению к узлу МОВЕ(Ц).

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

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

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