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

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

PDF-файл Д. Кнут - Искусство программирования том 3 (2-е издание) - 2001 (Часть 2), страница 9 Практикум (Прикладное программное обеспечение и системы программирования) (37176): Книга - 4 семестрД. Кнут - Искусство программирования том 3 (2-е издание) - 2001 (Часть 2): Практикум (Прикладное программное обеспечение и системы программирования) 2019-05-09СтудИзба

Описание файла

PDF-файл из архива "Д. Кнут - Искусство программирования том 3 (2-е издание) - 2001 (Часть 2)", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 9 страницы из PDF

Первые обзоры по проблеме поиска опубликованы А. И. Думи (А. 1, Ощпеу), Сотрпгегэ Хг АиготаВоп 5, 12 (ОесетЬег, 1956), 6-9; В. В. Петерсоном (Ж. %. РеФегэоп), 1ВМ,1. ВеэеагсЬ де Пе е)ортепг 1 (1957), 130-146; Э. Д. Бугом (А, О. ВоосЬ), 1л1огтаг1ол алд Сопего) 1 (1958), 159-164; А. Ш. Дугласом (А. Я. Ооп81аэ), Сотр. д. 2 (1959), 1-9. Более подробный обзор, посвященный проблемам сортировки, был сделан несколько позже Кеннетом К). Айверсоном (КеппесЬ Е.

Ь егэоп), А Ргойташт1л8 Ъвлйиайе (Кеи Ъогй: %!1еу, 1962), 133 — 158, и Вернером Букхольцем (Ъегпег ВцсЬЬоЬ), 1ВМ Яуегегпя д. 2 (1963), 86-111. В начале 60-х годов было разработано несколько новых процедур поиска, основанкых на древовидных структурах (с ними мы встретимся немного позже). Исследования алгоритмов поиска ведутся и в настоящее время. 6Д. ПОСЛЕДОВАТЕЛЬНЫЙ ПОИСК "Нлчлть с нлчллл и продолжать, пока не будет найден искомый ключ; затем остановитьсн." Эта последовательная процедура представляет собой очевидный путь поиска и может служить отличной отправной точкой длн рассмотрения множества алгоритмов поиска, поскольку они основаны на последовательной процедуре.

Мы увидим, что за простотой последовательного поиска скрывается ряд очень интересных, несмотря на их простоту, идей. Вот более точная формулировка алгоритма. Алгоритм В (Последовательный поиск (Яедиепйа1 ееагсЬ)). Дана таблица записей Вы Вэ,..., Вм с ключами Км Кю..., Кл соответственно. Алгоритм предназначен для поиска записи с заданным ключом К. Предполагается, что Ю > 1. 81. (Инициализация.) Установиты +- 1. 82. (Сравнение.1 Если К = К,, алгоритм заканчиваетсл успешно.

83. [Продвижение.) Увеличиты на 1. В4. (Конец файла?1 Если 1 < Ь', перейти к шагу 82. В противном случае алгоритм заканчивается неудачно. $ Обратите внимание на то, что этот алгоритм может завершиться успешно (искомый ключ найден) и неудачно (искомый ключ отсутствует).

Данное утверждение справедливо для большинства алгоритмов, рассматриваемых в этой главе. йХХ-программа пишется очень просто. Неудаавае ааварвевве Усвеввее аавервеаве Рис, 1. Последовательный поиск. Программа Б (Последовательный поиск). Предположим, что К; хранится по адресу КЕТ + а, а оставшаяся часть записи (В;) — по адресу 1ИРО + й Программа использует УА ал К, гП = 1 — М. По адресу ЯОССЕЯЯ находится команда 1,ОА 1ИРО+И,1, которая помещает необходимую информацию в гА. $ Анализ этой программы несложен. Очевцдно, что время выполнения алгоритма Б зависит от двух факторов: С вЂ” количество сравнений ключей; Я = 1 при успешном окончании поиска, Π— при неудачном, (1) Программа 5 требует для работы 5С вЂ” 25+ 3 единиц времени.

Если при поиске успешно найден К = К,, получим С = а, о' = 1; таким образом, полное время составляет (ба + 1)и. С другой стороны, если поиск неудачен, мы получим С = Ф, Я = О и общее время работы программы — (5Ф + З)и. Если все ключи поступают на вход программы с одинаковой вероятностью, то среднее значение С в случае успешного поиска равно 1-~. 2.~- .~-.в1 й ч-1 (2) М 2 При этом значение среднеквадратичного отклонения, естественно, достаточно велико и составляет около 0.289Ф (см.

упр. 1), Данный алгоритм, несомненно, знаком всем программистам, но лишь некоторые из них знают, что этот способ — не самая лучшая реализация последовательного поиска! Небольшое изменение — и алгоритм выполняется существенно быстрее (если записей не слишком мало). Алгоритм ье (Быспарый последооатаельный поиск). Перед вами тот же алгоритм, что и алгоритм Б, однако в нем имеется дополнительное предположение о наличии фиктивной записи Вв+г в конце файла. ьс1.

(Инициализация,) Установить а +- 1 и Кл+~ <- К. 01 ВТАЕТ 1.ОА К 00 ЕИТ1 1-И 08 2И СИРА КЕТ+И,1 01 ЛЕ ЯОССЕВВ 00 1ИС1 1 06 31ИР 2В 07 ГА1ЫЖЕ ЕЦО а ~а 1+- 1. и Саеааа Выход, если К = Кь аа аае~~~ а~.~~в.й~ Выход при отсутствии в таблице. ь42. )Сравнение.) Если К = Ко перейти к шагу (44. Ссз. )Продвижение.) Увеличить 1 на 1 и перейти к шагу ()2. ь)4. )Конец файлау] Если 1 < Ф, алгоритм заканчивается успешно; в противном случае алгоритм заканчивается неудачно (1 = Л + 1). Программа Ц (Быстрый последовательный поиск), гА вз К гП из 1 — Х Я~~. ° . Кл+~ +- К. 1+- О. ЯЮ Пел~~ аа.арв~.

Переход к С)З, если К; ф К. Я к~аыве Выход при отсутствии в таблице. $ используя те же значения С и о', что и в программе Б, получим, что значение времени работы равно (4С вЂ” 48+ 10)и; таким образом, мы получаем выигрыш по срввнеиню с предыдущим алгоритмом в случае С > 6 для успешного поиска и Х > 8 — для неудачного. При переходе от алгоритма Я к алгоритму () использован важный ускоряющий принцип — при нескольких проверках во внутреннем цикле следует постараться свести их к одной. Вот еще один способ сделать программу (4 еп1е быстрее, Программа Я' (Быстрый последовательный поиск). гА ив е К, гП ы 1 — /О.

1 1 1 ((С вЂ” Б + 2)/2) ((С - Б+ 2)/2) ((С вЂ” о *2)/2) ((С вЂ” 5+ 1)/2) ((С вЂ” Б+ 1)/2) (С вЂ” 5) пюо2 1 1 — Б Внутренний цикл дублирован, что позволяет избежать выполнения половины ин- струкций М +-1+ 1", тем самым снижая затраты времени до З,ЗС - З.ЗБ+ 16+ (С ~) шо" 2 2 единиц времени. При работе с большими таблицами это сохраняет до ЗОЯ нашего времени, Такой способ ускорения применим ко многим существующим программам иа языках высокого уровня )см., например, П. Е, Кппй, Сошрпг)лМ Яигтеуэ В (1974), 266-269). Можно воспользоваться другим улучшенным алгоритмом, если ключи расположены в порядке возрастания: 01 ЯТАВТ 02 ОУ ~Ц 05 00 07 08 РА11ЛВЕ 01 БТАВТ ОЗ 08 04 ЗН 00 ОО 07 00 00 10 4Н 11 РАПЛВЕ Ы)А К БТА КЕТ+М+1 ЕМТ1 -М 1МС1 1 СМРА КЕУ+М,1 ЯМЕ ь-2 21МР БУССЕБЯ ЕЦУ ЫА К БТА КЕТ+М+1 ЕМТ1 -1-М 1МС1 2 СИРА КЕУ+М,1 ЛЕ 4Р СМРА КЕТ+М+1,1 ЛМЕ ЗВ 1МС1 1 31МР ЯУССЕЯБ ЕВО 1 1 1 С+1 — Б С+1 — Б С+1 — Б 1 1 — Б Я~ Кл~ы е- К.

1 <- — 1. яьвц.д~~ ь ) Яг. Сд~ Переход к шагу ье4, если К = К;, Я2 ~й~ю ( у Переход к ивгу 123, если К ~ Кьеь Продвюкеиие А я4,е два Выход при отсутствии в таблице. 1 Алгоритм Т (Пооледооатпельпый поиск е упорядоченной 1паблице). Дана таблица записей Вы Вэ,, .., Вл, ключи которых расположены в порядке возрастания: К1 < Кз « Кл. Алгоритм предназначен для поиска записи с заданным ключом К Для удобства и ускорения работы алгоритма предполагается наличие фиктивной записи Вл+~ с ключом Кл+~ = оо > К.

Т1. (Инициализация.) Установить 1 +- 1. Т2. 1Сравнение.) Если К < Кп перейти к шагу Т4. ТЗ. (Продвижение.) Увеличить 1 на 1 и перейти к шагу Т2. Т4. (Равенство?] Если К = К,, алгоритм заканчивается успешно. В противном случае — неудачное завершение алгоритма. $ В предположении, что все входные аргументы-ключи равновероятны, алгоРитм по скорости работы в случае успешного поиска аналогичен алгоритму ь); при неудачном же поиске отсутствие нужного ключа определяется примерно вдвое быстрее. Во всех приведенных здесь алгоритмах использовалась запись с индексами для элементов таблиц (она более удобна для описания алгоритмов).

Однако все описанные алгоритмы применимы и к другим типам данных, например к таблицам со солгоппььи представлением данных, поскольку в них данные также расположены последовательно (см. упр. 2-4). Если мь1 можем размещать записи в таблице в любом порядке, значение Сл минимально при р1 >рэ» 'рм (4) т. е. когда наиболее часто используемые записи находятся в начале таблицы. Рассмотрим случаи Различных распределений вероятностей и выясним, какой выигрыш може г дать оптимальное расположение записей в таблице, указанное в (4).

В случае равновероятного появления ключей р~ = рэ = .. = Рк = 1/В формула (2) сводится к См = (Х + 1)/2, т. е. к ранее полученному нами резущьтату (2). Теперь предположим, что распределение вероятностей имеет вид 1 РМ = 2м, (б) 1 Рз 1 р1 = 2 1 рл-1 =: ~Ф-1 Согласно упр. 7 в данном случае См = 2 — 2' "'; при этом среднее количество сравнений, если записи расположены в надлежащем порядке, меньше доул. Еще одно, клиновидное, распределение вероятностей определяется как (б) Частота обращений. До сих пор мы предполагали, что все аргументы поиска равновероятны.

В общем случае это не так: вероятность запроса на поиск с ключом Вт Равна р;, пРичем р1+рэ+ +рм = 1. Время, требуемое для успешного завершения поиска, пропорционально количеству сравнений С, которое имеет среднее значение где с = — + —;-. Здесь мы не получим такого эффекта, как при распределении (5).

В случае клиновидного распределения Н+2 бл = с ~~'л ~! ( т + 1 !с) = —, а=1 3 Рг сл с/1, рэ = с/2, ..., Рн ле с/Я, (8) где с = 1/Нн. Оно получило известность благодаря работам Д. К. Зипфа (С. К. 21р(), который, исследуя естественные языки, обнаружил, что и-е по частоте употребления слово языка встречается с частотой, примерно обратно пропорциональной и (см.

ТЛе РзусЛо-В!о!ойу ог Ъаляиайе (Возгоп, Мазал НоийЬсои М161ш, 1935); Нитаи ВеЛэь4ог элг! сЛе Рг!лс!р!е ог" Хеэзг Е!!огг (ВеасИп8, Мазал АсИэоп-ттеэ1еу, 1949)]. Аналогичные распределения встречаются, например, в таблицах переписи населения, в которых районы расположены в порядке убывания численности населения. В случае подчинения ключей в таблице закону Знпфа находим Поиск в таком файле осуществляется примерно в 1 1и Н раз быстрее, чем в неупорядоченном файле [см. А. О. ВоосЬ, 1. ВгапсЬноой, апб 3. Р. С!нате, МесЛап!са! Незо!ибоп ог" улпйи!збс РгоЫехиз (Кебич Ъог)с: Асас)еппс Ргезз, 1958), 79), Другое близкое к реальному распределение — это распределение„соответствующее правилу ч80-20", которое часто наблюдается э коммерческих приложениях (свеч напРимеР, %. Р. Не1эш8, ИМ ЯУзсетз Х 2 (1963), 114-115).

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