AOP_Tom3 (1021738), страница 114

Файл №1021738 AOP_Tom3 (Полезная книжка в трёх томах) 114 страницаAOP_Tom3 (1021738) страница 1142017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Алгоритм В [Бинпрнапз поиск (В1пагу аеагсИ)). Дана таблица записей Я, Лз... 11ч, ключи которых расположены в порядке возрастания: Ка < Кз « .. - Кн, алгоритм используется для поиска в таблице заданного аргумента К. В1. [Инициализация.] Установить 1 ч — 1, и ч — 1У. В2. [Получение срединьь) [На этом шаге мы знаем, что если К имеется в таблице, то справедливо условие К~ < К < Ка. Более точное описание ситуации можно найти в приведенном ниже упр. 1.) Если и < 1, алгоритм завершается неудачно; в противном случае следует установить 1 е- [[1+ и)/2[, .чтобы 1 соответствовало примерно средине рассматриваемой части таблицы. В3. [Сравнение.) Если К ( К„перейти к шагу В4; если К > Ка, перейти к шагу В5; если К = К,, алгоритм успешно завершается.

В4. [Изменение и.) Установить и <- 1 — 1 и перейтн к шагу В2. В5. [Изменение Ц Установить 1+- 1+ 1 и перейти к шагу В2. 1 На рис. 3 приведена блок-схема алгоритма, а на рис. 4 показаны два случая проведения бинарного поиска: в первом разыскивается число 653, имеющееся в таблице, а во втором — число 400, отсутствующее в таблице.

Скобки показывают положеаие указателей 1 и и, а подчеркнутое число — — К;. В обоих случаях поиск завершается после выполнения четырех сравнений. а) Поиск 653: [061 087 154 170 275 426 503 509 512 612 653 677 703 765 897 908] 061 087 154 170 275 426 503 509[512 612 653 677 703 765 Я97 908) 061 087 154 170 275 426 503 509[512 612 653] 677 703 765 897 908 061 087 154 170 275 426 503 509 512 612[б53] 677 703 765 897 908 Ь) Поиск 400: 677 703 765 897 908] 677 703 765 897 908 677 703 765 897 908 677 703 765 897 908 677 703 765 Я97 908 (061 087 154 !70 275 426 503 509 512 612 653 [061 087 154 170 275 426 503] 509 512 612 653 061 087 154 !70[275 426 503] 509 512 612 653 061 087 154 170[275) 426 503 509 512 612 653 061 087 154 170 275)[426 503 509 512 612 653 Рис.

4. Примеры бинарного поиска. Программа В [Бинпрны!! поиск). Как и в программах из раздела 6.1. полагаем, что К; представляет собой полное слово, находягцееся по адресу ИВУ+1. В приведенном коде гН: — 1, г12 ив з и, г13 з— з 1. в~и и+- А". Переход к шагу В2. Переход, если К = К,. Вб. Изменение!.

1+-1+ 1. В2. Попечение с е ины. гА < — 1+ и. гА +- [гА/2]. (Изменяется также гХ ) Переход, если и < !. 1 < — ш!Оре!п!. ЕЕ11. Еи Переход. если К > К, В4. Изменение и. и < — ю — 1. Переход к шагу В2 9 Эта процедура не вполне удачно реализуется на компьютере М1Х в связи с небогатой арифметикой индексных регистров. Время работы составляет [18С вЂ” 105+12) и, где С = С1+ С2 -- количество произведенных сравнений [количество выполнений шага ВЗ) н 5 = 1 при успешном [или О при неуда пюм) исходе поиска. Обратите внимание, что операция в строке 08 — БНВ [еЬ!В г!КЬ! Ьшзгу 1 — — побитовый сдвиг вправо на единицу) -" допустима лишь в бннарньгх версиях И1Х; в общем случае ее следует изменить на МОЕ =1//2+1=, что приведет к увелнчени!о времени работы программы до [26С вЂ” 185+ 20)и.

Представление в ниде дерева. Для лучшего понимания работы алгоритма В представим описанную процедуру в виде бинарного дерева принятия решения, как показано на рис. 5, при К = 16. 01 БТАВТ 08 03 04 БН 05 Об 2Н 07 08 09 10 11 18 13 ЗН 1~ 15 1б 17 ЕИТ1 1 ЕИТ2 И 1МР 2Г 1Е БОССЕББ ЕИТ1 1,3 ЕИТА 0,1 1ИСА 0,2 БВВ 1 БТА ТЕМР СИР1 ТЕИР 30 ГА1ЬОВЕ ЬОЗ ТЕМР ЕОА К СИРА КЕУ,З ЛОЕ ЕВ ВИТ2 -1,3 ЛИР 2В 1 1 1 С1 С1 — 5 С 41 — 5 С+1 — 5 С+1 — 5 С+1 — 5 С+1 — 5 С+1 — 5 С С С С С2 С2 Рис. 5. Дерево сравнений, соответствующее бинарному поиску.для Х = 1б. При Х = 16 сначала согласно алгоритму сравниваются К и Кв, 'на рисунке зто показано корневым узлом ®. Затем, если К < Кю алгоритм переходит в левое поддерево и сравниваются К с К4, точно твк же при К > Кв будет выполняться работа с правым поддеревом.

Неудачный поиск приведет в один из внешних "квадратных" узлов, пронумерованных от [о) ло Е, например узел (б1 будет достигнут нами только при Кв с К < Кт. Бинарное дерево, соответствующее бинарному поиску по Л' записям, может быть построено следующим образом: если Х = О, дерево представляет собой просто один узел (Я. В противном случае корневой узел— (.Ч/2) При атом левое поддерево представляет собой бинарное дерево с (Л/21 — 1 узлами, а правое — с (Л/21 узлами (все числа в узлах увеличены на (Х/21). Точно так в виде бинарного дерева с Х узлами, в котором все узлы пронумерованы от 1 до Ж, может быть представлен любой алгоритм поиска в упорядоченной таблице длиной Л' (если только алгоритм не выполняет излишние сравнения). Верно и обратное — любое бинарное дерево соответствует некоторому методу поиска и упорядоченной таблице; достаточно просто пометить узлы ~Е (, ) И (2.) И ИН ® Е (1) в симметричном порядке слева направо.

Если аргумент поиска алгоритма В равен К1о, алгоритм выполняет сравнения К > Кв, К < Кип К = К1о. На рис. 5 зто соответствует пути от корня дерева к вершине (ю). Точно так поведение алгоритма В при поиске других ключей соответствует некоторому пути из корня дерева. Метод построения бинарных деревьев, соответствующих алгоритму В, позволяет легко доказать с помощью индукции по Ж следуюшую теорему. Теорема В. Для 2" ' < Л' < 2" успешный поиск по алгоритму В требует (ппп 1, шах к) сравнений; неудачный поиск прн 2" ' < Х < 2" — 1 требует й — 1 либо и сравнений. 1 Дальнейший анализ бинарного поиска. (Читателям, для которых математика не представляет интереса, рекомендуем пропустить материал до формулы (4).) Представление в виде дерева показывает нам также простой путь вычисления среднего числа сравнений.

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

Отсюда следует несколько неожиданное соотношение между См и С~.. (2) р + ц((18ж) + 2) — 20з')+'. (3) (См. 5.3.1-(34).) Из формул (2) и (3) мы можем вычислить точные средние значения количества сравнений, полагая, что все аргументы поиска равновероятны. К=1 См = 1 С' =1 10 11 12 13 2з 3 3 — ' Зз зв зв 3Ы зи й й зз зв 14 15 16 з в в Зв 4 4з 1в ы 2 3 4 5 6 11 1з 2 21 22 1з 2 2з 2в 2в з 7 8 9 23 25 21 3 Зз Зв з зв В общем случае при й = (18 1з') мы имеем следующее: Са = /с+1 — (2"+' — й — 2)~У = 18У вЂ” 1+в+ (1с+2)/У, С~~~ = )в + 2 — 2~в'~/(У+ 1) = 1$Р + 1) + в (4) где 0 < в, в' < 0.0861 (см.

5.3.1-(35)) . Итак, алгоритм В никогда не делает более ()8 )т') + 1 сравнений; среднее количество сравнений при успешном поиске составляет около 18Х вЂ” 1. Никакой друтой Эта формула, выведенная Т. Н. Хиббардом (Т. 51. Н1Ьоагй) [.7АСМ 9 (1962), 16 — 17), справедлива для всех методов, соответствующих бинарным деревьям; другими словами, она справедлива для всех методов, не использующих излишних сравнений.

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

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

Важное изменение. Вместо трех указателей (1, 1 и и) в процессе поиска можно использовать только два: текущее положение 1 и величину его изменения б. После каждого сравнения, не давшего равенства, мы можем установиты < — 1х б и б < — б/2 (приблизительно). Это вполне возможный путь, хотя и требующий исключительного ваимаиия к мельчайшим деталям, как в приведенном ниже алгоритме. Более простые подходы будут неработоспособны. Алгоритм 11 (Одноробнмй бинарный поиск (Вгя/опи Ипату зеогсЬ)).

Дана таблица записей Вы Вю..., Вн, ключи которых расположены в порядке возрастания: К, < Кз < . с Кл. Алгоритм обеспечивает поиск заданного аргумента К. В случае четного Х алгоритм будет обращаться к Фиктивному ключу Ке, значение которого должно быть равно — оо (или любому значению, меиыпему К).

Алгоритм работает в предположении, что Х > 1. Ш. (Инициализация,] Установить 1 < — 1)У~2~1, пз < — (Х/2) . Ю2. (Сравнение.) Если К с К„перейти к шагу 1'3; если К > Кн перейти к шагу 1:4; если К = Кн алгоритм успешно завершен. 113. (Уменьшиты.] (Мы определили интервал продолжения поиска, содержащий нз или ьп — 1 записей; 1 указывает на первый элемент справа от интервала.) При т = 0 алгоритм завершается неудачно.

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

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

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

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

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