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

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

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

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

Верно и обратное — любое бинарное дерево соответствует некоторому методу поиска в упорядоченной таблице; достаточно просто пометить узлы в симметричном порядке слева направо. Если аргумент поиска алгоритма В равен К»е, алгоритм выполняе~ сравнения К > Ке, К < Кш, К = Кш. На рис. 5 это соответствует пути от корня дерева к вершине Я~у. Точно так поведение алгоритма В при поиске других ключей соответствует некоторому пути из корня дерева. Метод построения бинарных деревьев, соответствующих алгоритму В, позволяет легко доказать с помощью индукции по Х следующую теорему.

Теорема В Дня 2» 1 < Я < 2» успешный поиск по алгоритму В требует 1шш 1 гпах я) сравнений; неудачный поиск при 2» ' < Х < 2» - 1 требует )с - 1 либо )с сравнений. 1 Дальнейший анализ бинарного поиска. (Читателям, для которых математика не представляет интереса, рекомендуем пропустить материал до формулы (4).) Представление в виде дерева показывает нам также простой путь вычисления сред'- него числа сравнений.

Пусть См — среднее число сравнений при успешном поиске; предположим также, что все Л' ключей равновероятны в качестве аргумента поиска. Среднее число сравнений при неудачном поиске — С(„все Х + 1 интервалов внутри н вне граничных значений также равновероятны. Тогда по определению длин внутреннего и внешнего путей длина внутреннего пути дерева ~ю =1+ Х длина внешнего пути дерева У+1 Из 2.3.4.5-(3) видно, что длина внешнего пути всегда на 2Л' больше длины внутрен- него пути.

Отсюда следует несколько неожиданное соотношение между См и С~: 1~ Ся = ~1+ — ~С' -1. Л./ (Л + 1)(рйЛ) +2) 20вл)+~. (3) (См. 5,3.1-(34).) Из формул (2) и (3) мы можем вычислить точные средние значеяия количества сравнений, полагая, что все аргументы поиска равновероятны. Ю = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 С, =1 1,' 1уз 2 2~ 2~ 2~ 25 21 2~ 3 3~ 3Д зз 314 3Д В общем случае при Й = (18 Л') мы имеем следующее: Сь = 8+1 — (2ьы — й — 2)/Л' = 16Ф вЂ” 1+с+(Й+2)/Л', (4) С~л = й + 2 — 2 +~/(Х+ 1) = 18(Л~ + 1) + е где 0 < е, с' < 0.0861 (см. 5.3.1-(35)). Итак, алгоритм В никогда не делает более (18 Л'1 + 1 сравнений; среднее количество сравнений при успешном поиске составляет около 18 Л' — 1. Никакой другой Эта формула, выведенная Т. Н. Хиббардом (Т, Н. Н1ЬЬагс)) (3.4СМ 9 (1962), 16-17), справедлива для всех методов, соответствующих бинарным деревьям, другими словами, она справедлива для всех методов, не использующих излишних сравнений.

Дисперсия среднего числа сравнений при успешном поиске также может быть выражена через дисперсию среднего числа сравнений при неудачном поиске (см. упр. 25). На основании приведенных выше формул мы можем сказать, что "наилучший" путь поиска методом сравнения тот, дерево которого имеет минимальную длину внешнего пути среди всех бпнарных деревьев с Х внутренними узлами. К счастью, можно доказать, что в атом смысле алгоритм В оптимален для любого Л' (как помните, в упр. 5.3,1-20 было доказано, что бинарное дерево имеет минимальную длину пути тогда и только тогда, когда все внешние узлы расположены не более чем на двух соседних уровнях).

Отсюда следует, что длина внешнего пути дерева, соответствующего алгоритму В, равна метод поиска, основанный на сравнении ключей, не может превзойтн этот результат. Среднее время работы программы В составляет приблизительно (18!8 Х вЂ” 16) и для успешного поиска, (1818Х+ 12)и для неудачного поиска (в предположении равновероятных исходов поиска), Важное изменение.

Вместо трех указателей (1, 1 н и) в процессе поиска можно использовать только два: текущее положение 1 и величину его изменения Ю. После каждого сравнения, не давшего равенства, мы можем установить 1 ~ — 1~8 и б ь- 6/2 (приблизительно). Это вполне возможный путь, хотя и требующий исключительного внимания к мельчайшим деталям, как в приведенном ниже алгоритме. Более простые подходы будут неработоспособны.

Алгоритм 11 (Однороднмв бинарный поиск (Уив/оггп Мпагу эеагсЬ)). Дана таблица записей Вм Вю ° °, В~ч, ключи которых расположены в порядке возрастания: Кг < Ке ( "° с К~д. Алгоритм обеспечивает поиск заданного аргумента К. В случае четного Ю алгоритм будет обращаться к фиктивному ключу Кс, значение которого должно быть равно — оо (или любому значению, меньшему К). Алгоритм работает в предгюложении, что Х > 1. Ш. (Инициализация.) Установиты <- (Х/2), ш <- 1Х/21. 112.

1Сравнение,, 'Если К < К;, перейти к шагу ПЗ; если К > К,, перейти к шагу 114; если К = К;, алгоритм успешно завершен. 113. (Уменьшить а,) (Мы определили интервал продолжения поиска, содержащий гп или пт — 1 записей; 1 указывает на первый элемент справа от интервала.) При гп = 0 алгоритм завершается неудачно.

В противном случае следует сначала установить 1 < — 1 — (гп/2), а затем — т +- 1гп/2) и перейти к шагу 1)2. 114. (Увеличение 1.) (Мы определили интервал продолжения поиска, содержащий гп или гп — 1 записей; 1 указывает на первый элемент слева от интервала.) При гп = 0 алгоритм завершается неудачно. В противном случае сведует сначала установить 1 +- 1+ (т/2), а затем — щ +- 1гп/2) и перейти к шагу П2.

] На рис. б показано бинарное дерево, соответствующее поиску при АГ = 10. В случае неудачного поиска алгоритм может выполнить излишнее сравнение непосредственно перед окончанием работы; такие узлы на рисунке заштрихованы. Мы называем этот процесс поиска однородным потому„что разность между числами узла на уровне 1 и его узла-предшественника на уровне 1 — 1 представляет собой константу 6 для всех узлов на уровне 1. Теория, лежащая в основе алгоритма П,может быть пояснена следующим обра» зом. Предположим, что у нас имеется интервал для поиска длиной и — 1; сравнение со средним элементом (для четного и) или с одним из средних элементов (для нечетного и) дает нам два интервала — длиной 1п/2) — 1 и (и/2) — 1, После повторения этого процесса я раз мы получим 2" интермлов, наименьший из которых имеет длину (п/2") — 1, а наибольший — ~'и/2ь) — 1.

Следовательно, длина двух интервалов на одном уровне отличается не более чем на единицу; это делает возможным выбор "среднего" элемента без запоминания точных значений длин интервалов. Рис. 0. Дерево сравнений дле "однородного" бинарного поиска при Х = 10. Алгоритм С (Однородный бинарный поиск), Этот алгоритм подобен алгоритму 11, но использует вспомогательную таблицу вместо вычислений. 1»У + 2~ ' 1 ОЕЬТА(у) = ~ ~ для 1 < 1 ( (180») + 2, (6) С1. (Инициализация.) Установить 1»- ОЕ1 ТА Ш, 1»- 2. С2. 1Сравнение.) Если К < К», перейти к шагу СЗ; если К > К», перейти к шагу С4; если К = Ко алгоритм успешно завершается. СЗ.

(Уменьшение Ц Если ОЕЬТАЦ) = О, алгоритм завершается неудачно, В противном случае установить»»- » — ОЕ1 ТАЦ), г' +- у'+ 1 и перейти к шагу С2. С4. )Увеличение Ц Если ОЕЬТА(Я = О, алгоритм завершается неудачно. В противном случае установить»»-1+ ОЕЬТАЯ, у' »-,у+ 1 и перейти к шагу С2, 3 В упр.

8 доказывается, что настоящий алгоритм использует искусственный ключ Ке = -оо только прн четных А«. Программа С (Однородный бинарный гюпск). Эта программа выполняет ту же задачу, что н программа В, нспсаьзуя алгоритм С; при этом гА аз К гП ш1, г12 «д у, г13 гй ОЕ1 ТАЮ. ЕНТ1 6+1»2 1 С .

Ийвцийлииийд «»- (%+1)% 00 ЕМТ2 2 1 1»-2. 00 ЬОА К 1 04 УНР 2Р 1 00 ЗН ЗЕ ЗОССЕЯЗ С1 Переход, если К = К». 00 ЛЗЕ РАПЛНЕ С1- Я Переход, если ОЕЬТА(у) «~ О. О» «««««.«а«-«-«««. ««~«~ 08 6Н ХНО2 1 С-1 у»-6+1, Принципиальное достоинство алгоритма П заключается в том, что нам совершенно не нужно хранить значение гп; необходима только ссылка на небольшую таблицу 6 для использования на каждом уровне дерева. Таким образом, алгоритм сводится к следующей процедуре, одинаково подходящей как для бинарных, так и для десятичных компьютеров. Рис.

Т. Дерево сравнений ллк почти равномерного поиска по методу Шара прн 1т" = 10. с о2 о~ С С С2 С2 1 — Я ок 2Н 193 10 СИРА Л ЛЕЕ 12 1НС1 1У УЗИЕ .Ц ГА11ЛВЕ ЕЦО ОИ.ТА, 2 ЕЕ1,1 ЗВ О,З ВВ Переход, если К < Ко С4. Увеличение 1. Переход если вйьТА121 а1 О Выход прн отсутствии в таблице. !8.5!ЕЮ вЂ” 6)и при успешном поиске, !8.51!ЕЮ) + 12)н при неудачном поиске. Это более чем в два раза быстрее программы В; прн этом специфика бинарного ком- пьютера не используется 1в случае времени работы (5) программы В предполагалось наличие команды битового сдвига в компьютере И11).

Другая модификация бинарного поиска, предложенная в 1971 году Л. 3. Шаром (1. Е. ВЬаг), на некоторых компьютерах будет работать еще быстрее, так как она однородна после первого шага и не требует использования таблицы, Первый шаг состоит в сравнении К и Кь где ! = 2", А = ! !Едет'1. Если К < Кн мы используем однородный поиск с 5 = 2а ~, 2" ~, ..., 1, О. С другой стороны, если К > Ко мы устанавливаем 1 = Г =- Ф+ 1 — 2', где 1 = ~18!Х вЂ” 2" + Ц~, и„делая вид, что первое сравнение на самом деле было К > Кг, используем бинарный поиск с 5 = 1 ~, 2~ а, ..., 1, О.

Метод Шара для Х = 10 проиллюстрирован на рис. 7. Подобно предыдущим алгоритмам„он никогда не выполняет больше ! 18 Ф) + 1 сравнений, Следовательно, выполняемое им количество сравнений превышает минимально возможное среднее значение не более чем на единицу — несмотря на то, что иногда алгоритму В случае успешного завершения поиска данный алгоритм соответствует бинарному дереву с такой же длиной внутреннего пути, как и в алгоритме В, поэтому среднее количество сравнений См остается прежним.

При неудачном поиске алгоритм С всегда выполняет в точности )!ЕЛА) + 1 сравнений. Общее время работы программы С не совсем симметрично по отношению к левым и правым ветвям, и С1 имеет больший вес, чем С2. Впрочем, в упр. 11 будет показано, что случаи К < К; имеют ту же вероятность, что и К > К;. Следовательно, программа С работает приблизительно следующее время; приходится проводить несколько избыточньп сравнений при успешном поиске (см.

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

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

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