Главная » Просмотр файлов » 1626435697-9d9ede204f9baad60159c2d6531787c7

1626435697-9d9ede204f9baad60159c2d6531787c7 (844297), страница 20

Файл №844297 1626435697-9d9ede204f9baad60159c2d6531787c7 (Хопкрофт, Ульман 1979 - Построение и анализ вычислительных алгоритмов) 20 страница1626435697-9d9ede204f9baad60159c2d6531787c7 (844297) страница 202021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

пусть А,— первая цепочка в списке ОЧЕРЕДЬ; 7. переместить А, из списка ОЧЕРЕДЬ в черпак Цагг) епа(; 8. 1ог 1Е НЕПУСТОЙ[1) до Ьей(п 9. присоединить содержимое списка Щ1] к концу списка ОЧЕРЕДЬ; 1О. сделать список 1~[11 пустым епй епо' епп х) С формальной точки зрения можно присоединять лишь к концу очереди, но конкатенация к началу не должна вызывать никаких трудностей. Более аффективным приемом здесь был бы такой: выбрать цепочки А; из списка ДЛИНА[О сначала в строке 6, а затем из списка ОЧЕРЕДЬ и совсем не устраивать конкатенации списков ДЛИНА(т) и ОЧЕРЕДЬ.

Рис. Зхь Лексикографическая сортировка цепочек разной длины. ства писать в списках сами цепочки, а не указатели иа них. Однако надо помнить, что в очередях хранятся эти указатели, а не сами цепочки. В части 1 алгоритма 3.2 формируется пара (1, а) из первой цепочки, пары (1„Ь), (2, а), (3„Ь) из второй и (1, а), (2, Ь), (3, с) из третьей. Упорядоченный список этих пар выглядит так: (1, а) (1, а) (1, Ь) (2, а) (2, Ь) (3, Ь)(3, с) Просматривая его слева направо, заключаем, что НЕПУСТОЙ [Ц=а, Ь; НЕПУСТОЙ[2[=а, Ь; НЕПУСТОЙ 131= Ь, с 1йв З.к ЦИФРОВАЯ СОРТИРОВКА цеенчня ЦАнаме Рнс.

3.3. Структура данных нлн Веночек. В части 2 алгоритма 3.2 вычисляем 1,=1, 1,=3 и 1,=3. Следовательно, ДЛИНА[!]=а, список ДЛИНА[2] пуст и ДЛИНА[3]=ЬаЬ, аЬс. Поэтому часть 3 начинаем с того, что полагаем ОЧЕРЕДЬ= Ьад, аЬс, и затем располагаем эти цепочки по их третьей компоненте. Равенство НЕПУСТОЙ[3]=Ь, с гарантирует, что при построении упорядоченного списка в соответствии со строками 8 — 1О рис. 3.2 не обязательно присоединить 1е[а! к концу списка ОЧЕРЕДЬ. Таким образом, после первого прохождения цикла в строках 3 — !О рис. 3.2 ОЧЕРЕДЬ=ЬЦЬ, аЬс. При втором прохождении ОЧЕРЕДЬ не меняется, так как список ДЛИНА[2] пуст, а упорядочение по второй компоненте не изменяет порядок.

При третьем прохождении мы, согласно строке 4, получаем ОЧЕРЕДЬ=а, ЬаЬ, аЬс, Упорядочение по первой компоненте дает ОЧЕРЕДЬ=а, аЬс, ЬаЬ; получили правильный порядок. Заметим, что при третьем прохождении список а1[с] становится пустым, а поскольку с не входит в список НЕПУСТОЙ[!], не нужно присоединять 9с] к концу списка ОЧЕРЕДЬ. [] Теорема 3.2.

Алгоритм 3.2 упорядочивает свой вход за время н 0(1н+т), где 1А=Х1И га-3 До к а з а тел ь с т в о. Простая нндукция по числу прохождений внешнего цикла в программе на рис. 3.2 показывает, что после 1 прохождений список ОЧЕРЕДЬ содержит цепочки длины, ие меньшей 1,„— 1+1, и они расположены в соответствии с их компонентами с номерами от 1 „„— 1+1 до 1,„. Поэтому рассматриваемый алгоритм лексикографически упорядочивает свой вход.

101 гл а. соптииовкл и пооядковын стлтистики Что касается затрачиваемого временн, то в части 1 расходуется время 0(1е) на образование списка пар н 0(т+1а) на его упорядочение. Аналогично часть 2 занимает не более 0((е) времени. Теперь исследуем часть 3 н программу на рнс. 3.2. Пусть и!— число цепочек, имеющих с-е компоненты. Пусть т; — число различных символов, появляющихся в г-х компонентах цепочек (т. е. т! — длина списка НЕПУСТОЙ(!)). Рассмотрим фиксированное значение 1 в строке 3 рнс, 3.2. Цикл в строках 5 — 7 занимает 0(п,) времени, а в строках 8 — 10 — 0(т,) времени. Шаг 4 выполняется за постоянное время, так что одно прохождение цикла в строках 3 — 10 занимает 0(тхтп!) времени.

Таким образом, весь цикл занимает ! 0 ~ (т,+и) времени. Так как ! шах ! мах ~а тся (а н ~ па~(а, г=! с=! то строки 3 — ! О выполняются за время 0((а). Теперь, учитывая, что на строку 1 тратится постоянное время, а на строку 2 время 0(т), получаем нужный результат. () Приведем пример, когда упорядочение возникает прн разработ- ке алгоритма. Пример 3.2. Два дерева называются изоморфными, если можно отобразить одно нз ннх в другое, изменив порядок сыновей его уз- лов. Рассмотрим задачу распознавания изоморфизма двух данных деревьев Т, н Т,. Следующий алгоритм делает это за время, пропор- цнональное числу узлов. Этот алгоритм приписывает целые числа узлам двух данных деревьев, начиная с узлов уровня О н двигаясь вверх до корней, так что деревья нзоморфны тогда н только тогда, когда нх корням приписано одно н то же число.

Алгоритм работает так. 1. Приписать число О всем листьям деревьев Т, н Т,. 2, (Индукцня,) Предположим, что целые числа уже приписаны всем узлам, находящимся в деревьях Т, н Т, на уровне ! — 1. Пусть Š— список узлов .уровня ! — 1 в дереве Т„ расположенных в порядке неубывання приписанных нм чисел, а Ьа — соотвегствующнй список для Т,'). 3. Приписать нелнстьям уровня ! в дереве Т, кортеж целых чисел следующим образом; просмотреть список 1.! слева направо н для каждого узла и нз Ь! взять число, ему приписанное, в !) Надо уволиться, что, проходя дерево в прямом порядке, можно приписать номера уровней аа 0(п) шагов.

° ва 3.2. циФРОВАя ООРтиРОВкА качестве очередной компоненты кортежа, который ставится в соответствии отцу узла п. После выполнения этого шага каждому нелисту 1п уровня 1 в дереве Т, будет поставлен в СООтВЕтСтВИЕ КОртЕж (Юы 1м ..., )а), ГдЕ 1И Ю'а...., ЕЬ— целые числа, приписанные сыновьям узла 1п и расположенные в порядке неубывання. Обозначим через 5, последовательность кортежей, построенных для узлов уровня 1 в дереве Т,. 4. Повторить шаг 3 для Т,; пусть 5, — последовательность кортежей, построенных для узлов уровня 1 в дереве Т,. б.

Упорядочить 5, и 5, с помощью алгоритма 3.2, Пусть соответственно 5; и 5; — упорядоченные последовательности кортежей. 6. Если 5; и 5; не совпадают, то остановиться; в этом случае исходные деревья не изоморфны. В противном случае приписать число 1 тем узлам уровня 1 в дереве Т„которые представлены первым кортежем в 5;, число 2 — вторым отличающимся кортежем'), и т. д.

Так как эти целые числа приписаны узлам уровня 1 в дереве Т„построить список Е, из узлов, которым таким способом приписаны числа, Добавить к началу списка Е, все листья дерева Т„расположенные на уровне й Пусть Т.а — соответствующий список узлов дерева Т,. Эти два списка теперь можно использовать для приписывания кортежей узлам уровня 1+1 с помощью процедуры иа шаге 3. 7. Если корням деревьев Т, и Т, приписано одно и то же число, то Т, и Т, изоморфны. На рис. 3.4 иллюстрируется приписывание чисел и кортежей узлам двух изоморфных деревьев.

Теорема 3.3. Изоморфизм двух деревьев с и узлами можно распсзнать за время 0 (и). Д о к а з а те л ь с т в о. Теорема следует из формализации алгоритма, изложенного в примере 3.2. Доказательство корректности алгоритма мы опускаем. Время работы можно оценить, если заметить, что приписывание целых чисел узлам уровня 1, отличным от листьев, занимает время, пропорциональное числу узлов уровня 1 — 1. Суммирование по всем уровням дает время 0(п). Работа по приписыванию чисел листьям также пропорциональна п, и, таким образом, весь алгоритм занимает время 0 (л), С) 17омеченным называется дерево, в котором узлам приписаны метки. Допустим, что метками узлов служат целые числа между 1 ') Имеется в виду не кортеж, стоящий на 2-м месте в списке 5т (который может совпасть с кортежем, стоящим яа )-и месте), а тот кортеж, который окажется на 2-и месте после вычеркивания иа 5т всех повторений.— Прим.

ред. 103 ГЛ. 3. СОРТИРОВКА И ПОРЯДКОВЫЕ СТАТИСТИКИ Уров Уроеогв 2 Уроеевв 1 агапово Т, Уроееав Урвоеед 1 Урпмгв о ,аорвао ?а Рис. ЗЛ. Числа, приписанные алгоритмом распознавания изоморфизма деревьев. и и. Тогда изоморфизм двух помеченных деревьев можно распознать за линейное время, если включить метку каждого узла в качестве первой компоненты кортежа, приписываемого этому узлу изложенным выше алгоритмом. Таким образом, справедливо Следствие. Распознавание изоморфизма двух помеченных деревьев с п узлами, метками которых служат целые числа между 1 и п, занимает время 0(п), 3.3.

СОРТИРОВКА С ПОМОЩЬЮ СРАВНЕНИЙ Здесь мы изучим задачу упорядочения последовательности из и элементов, взятых из линейно упорядоченного множества 5, о структуре которых ничего не известно. Информацию об этой последовательности можно получить только с помощью операции сравнения двух элементов. Сначала мы покажем, что любой алгоритм, упо- 3.3. ООРтиРОВкх с помощью сРАВнений рядочивающий с помощью сравнений, должен делать по крайней мере 0(п 1оя и) сравнений на некоторой последовательности длины и.

Пусть надо упорядочить последовательность, состоящую из и различных элементов а„а„..., а . Алгоритм, упорядочивающий с помощью сравнений, можно представить в виде дерева решений так, как описано в равд. 1.5. На рис. 1.18 изображено дерево решений, упорядочивающее последовательность а, Ь, с. Далее мы предполагаем, что если элемент а сравнивается с элементом Ь в некотором узле о дерева решений, то надо перейти к левому сыну узла о при а(Ь и к правому — при агЬ.

Как правило, алгоритмы сортировки, в которых для разветвления используются сравнения, ограничиваются сравнением за один раз двух входных элементов. В самом деле, алгоритм, который работает на произвольном линейно упорядоченном множестве, не может никак преобразовать входные данные, поскольку при самой общей постановке задачи операции иад данными "не имеют смысла'*. Так или иначе, мы докажем сильный результат о высоте любого дерева решений, упорядочивающего последовательность из и элементов. Лемма 3.!. Двоичное дерево высоты Ь содержит не более 2" листьев.

Д о к а з а тел ь с т в о. Элементарная индукция по 6. Нужно лишь заметить, что двоичное дерево высоты Ь составлено из корня и самое большее двух поддеревьев, каждое высоты не более /3 — 1. П Теорема 3.4. Высота любого дерева решений, упорядочивающего последовательность из и различных элементов, не меньше !Оя и!. До к а з а те л ь от в о. Так как результатом упорядочения последовательности из и элементов может быть любая из и! перестановок входа, то в дереве решений должно быть по крайней мере п1 листьев. По лемме 3.1 высота такого дерева должна быть не меньше 1оя и!. П Следствие.

В любом алгоритме, упорядочивающем с помощью сравнений, на упорядочение последовательности из и элементов тратится не меньше сп 1оя и сравнений при некотором с)0 и достаточно большом и. Доказательство. Заметим, что при п)! — — ТН-®' так что !Оя п)=э(п/2)!Од(п/2))(п/4)!Од и при п)4. () По формуле Стирлинга точнее приближает и! функция (и/е)", так что и (!Оя и — !оя е) =и 1оя и — 1,44п служит хорошим приближением нижней границы числа сравнений, необходимых для упорядочения последовательности из и элементов.

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

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

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

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