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

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

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

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

Отдельные списки, датируемые примерно 300 г. до н. з., которые были найдены на островах Эгейского моря, содержат имена членов некоторых религиозных общин, упорядоченные только по первой букве (представляя, таким образом, результат одного прохода поразрядной сортировки слева направо). Некоторые греческие папирусы, датируемые 134-135 г. н. э., содержат списки налогоплательщиков, упорядоченных по первым двум буквам. Аполлоний Софист«* (Аро11опшз БорЫзса) использовал алфавитный порядок по первым двум буквам (а иногда н по последующим) в своем словаре поэзии Гомера (1 в. н. э.).

Известны примеры более совершенного упорядочения, например Н!рросгайс С!оазез Галена«*е (ок, ЮО г.), но это было крайне редким явлением. По первым буквам были упорядочены слова и в Егуто!ой!агпш Св. Исидора (ЯФ. 1зЫогпз)вв«е (ок. 630 г., книга Х), а в Согрнз 6!оззагу (ок. 725 г.) использовались только две первые буквы каждого слова. Эти две работы были, пожалуй, крупнейшими нечисловыми файламн данных, скомпилированными в средние века. Впервые описание алфавитного порядка появилось в Сазьойсоп Джованни Генуэзского (С(оуапш 61 Оепоа'з) в 1286 году. В предисловии поясняется, что ьзьо аФео ашот зпзрибепз сиз!из ро!мзепиз предшествует предшествует предшествует предшествует предшествует предшествует ашо аЬео ага а!из !таргзм(епз сиз!заза ро!мзпгйегоп (т. е.

приводятся примеры ситуаций, в которых порядок следования слов определяется первой, второй, ..., шестой буквами)»и далее точно так же". Он отмечает, что для изобретения подобного способа упорядочения слов потребовались значительные усилия. »Я прошу тебя, читатель, не презирать мой огромный труд н этот порядок, как нечто ничего не стоящее." Подробным изучением развития алфавитного порядка до начала книгопечатания занимался Ллойд В. Дейли (1,1оуб %. Па1у) (Со!!есбоп Еагошиз 90 (1967), 100 р.], «такая же система была принята в Древней Руси: применялись алфавит и специальный символ ("титло"), а также некоторые дополнительные обозначения для тысяч, миллионов и т.

д. — Прим. нерее. ««Одни из грамматиков древности; выкодец из Александрии. ««* Римский врач и естествоиспытатель, классяк античной медицины. *«««Исидор Севильский — испанский епископ, выдаюпгийся ученый и писатель. Им найдено несколько интереснейших старинных рукописей, которые, несомненно, использовались в качестве черновых записей при сортировке слов по первой букве (см, с. 89-90 его монографии). В первом словаре английского языка Роберта Коудри (НоЬегь Савч(геу) 2ЪЫе А!рЬаЬег!са)! (Ьопбоп, 1604) содержатся следующие инструкции.

Если слово, которое ты ищешь, начинается с "а", то ищи его в начале, а если оно начинается с "г", то ищи его в конце книги. Опять-таки, если слово начинается с "са", то искать его следует в начале буквы "с", а если с "сн", то смотреть надлежит в конце этой буквы. И так поступай до конца слова. Создается впечатление, что Коудри сам учился своему методу расставления слов в алфавитном порядке в процессе работы — на первых страницах словаря многие слова находятся не на своих местах, в то время как остальная часть словаря содержит гораздо меньше ошибок.

Бинарный поиск был впервые упомянут Джоном Мочли (ЗоЬп МансЫу) в, пожалуй, первой опубликованной дискуссии о нечисленных методах программирования (ТЬеогу апс! 2ЬсЬпк!иев гог гЛе Овэ!бп о! Е!ее!гоп!с О!8!Фа! Сотригегэ, ео1гео Ьу О. Ж. Раыьтвоп, 1 (1946), 9.7-9.8; 3 (1946), 22.8 — 22.9].

Метод становится хорошо известным программистам, однако ни у кого не возник вопрос, как работать с Ь!, не равным 2" — 1. (См. А. О. ВоотЬ, г!агиге 176 (1955), 565; А. 1, Ошпеу, Сошригегэ апд А иготайоп 5 (ОесешЪег, 1956), 7 (здесь бинарный поиск назван так: "Двадцать вопросов"); Оаше1 О. МсСгасйеп, О!8!Ге! СотриГег Ргойгагпш!п8 (%!1еу, 1957), 201-203; М. На!реги, САСМ 1,1 (РеЬгцагу, 1958), 1-3.] Д.

Г. Лехмер (О. Н. ЬеЬшег), пожалуй, был первым, кто опубликовал алгоритм бинарного поиска, работающий при любьгх Х ]Ргоа сутр. Арр!. МаВь 10 (1960), 180-181]. Следующий шаг был сделан Г. Боттенбруком (Н. ВогсепЬгцсЬ), который представил интересный вариант алгоритма В, в котором отдельные проверки равенства отодвигаются в конец алгоритма (Х4СМ 9 (1962), 214], Используя ! ~- !'(!+и)/2] вместо ! ~- '1(! + и)/2] на шаге В2„он устанавливает ! г — ! при К > К;; тогда и — ! уменьшается на каждом шаге. В конце, когда ! = в, мы имеем К! ( К < К~~~ н можем проверить, является ли поиск успешным, при помощи еще одного сравнения (Боттенбрук полагал, что изначально К > К~).

Данная идея позволяет несколько ускорить внутренний цикл на многих компьютерах; этот же принцип может быть применен и к другим алгоритмам поиска, обсуждавшимся в этом разделе, Впрочем, успешный поиск потребует в среднем около одной дополнительной итерации в соответствии с (2). Так как внутренний цикл выполняется примерно около 18 Ф раз, более быстрый цикл сможет компенсировать дополнительную итерацию только при очень больших Ф (см.

упр. 23). С другой стороны, алгоритм Боттенбрука будет находить крайнее справа вхождение ключа в таблицу, имеющую дубликаты; а это свойство алгоритма может оказаться важным для определенного класса задач. К. Ю. Айверсон (К. Е. 1гегэоп) (А Ргойгаглт!п8 Ьапхпабе (%!!еу, 1962), 14Ц привел описание алгоритма В, однако не рассмотрел случай неудачного поиска. Д. Э. Кнут (О. Е. КпнгЬ) (САСМ 6 (1963), 556-558] представил алгоритм В в качестве примера, использованного автоматической системой построения блок-схем. Однородный бинарный поиск (алгорнтм С) был предложен автору А. К. Чандрой (А. К.

СЬаш(га) из Станфордского университета в 1971 году. Поиск Фибоначчи изобретен Дэвидом Э. Ферпосоном (ПагЫ Е. Регбцвоп) [САСМ 3 (1960), 648]. Бинарные деревья, подобные деревьям Фибоначчи, появились в "пионерской" работе норвежского математика Акселя Тью (Ахе1 ТЬце) еще в 1910 году (см. упр. 28). Деревья Фибоначчи без меток появились также в качестве курьеза в популярной книге Хьюго Штейнгауза (Нцбо БсеьпЬацв) Маьйешайса) БпарвЬосз (Ыев Уогй: БгесЬег1, 1938, с. 28).

Они изображались корнем вниз и выглядели почти как настоящие деревья, с правыми ветвями, которые были в два раза длиннее левых (так что все листья находились на одном уровне). Ннтерполяционный поиск был предложен В. В, Петерсоном (%. 'гг'.

Ресегвоп) [1ВМ Х Нгн. 3г Веге). 1 (1957), 131-132], однако корректный анализ этого метода был сделан значительно позже (см. упр. 22), УПРАЖНЕНИЯ 1. [31] Докажите, чта если на шаге В2 бинарнага поиска и с Ь та в =1 — 1 и К, < К < Кь (Полагаем, что Ка = — оа и Кл+~ = +со, хотя зти искусственна введенные ключи в действительности алгоритмом не испальзуютсл и не обязаны находиться в таблице.) ° 2. [26] Будет ли алгоритм В прсдалжать корректно работать при наличии К в таблице, ели мы: (а) установим на шаге Вб "1 +- г" вместо сй < — 4+ 1"; (Ь) установим на шахе В4 "в +- Р вместо "и г- 1 — 1"; (с) внесем аба зти изменения? 3.

[46] Какой метод поиска соответствует дереву Каково среднее число сравнений выполняется при успешном и неудачном поиске? 4. [лд] Если поиск с использованием программы 6.13 (последовательный поиск) выпалняетсв ровно 636 единиц времени, та как долго будет работать программа В (бинарный поиск)? б. [Мй(] Для каких значений г? программа В в среднем въшалняется медленнее последавагельнага поиска (праграмма 6.1()') в случае успешного поиска? 6. [28] (К. Ю. Айеерсон (К. Е. 1тегвап).) Упр. 5 принадит нас к мысли, что стбит иметь некий гибридный метод, переходящий ат бинарного поиска к последовательному при лостата'шам уменьшении интервала поиска.

Напишите соответствующую программу для Н1Х-кампьютера н определите наилучший момент перемены метода поиска. 7. [МЗЗ] Будет ли алгоритм (5 корректно работать, если мы изменим шаг Б1 так, чта а) и Ь и гп установятся равными [г?/21; Ь) и Ь и ш установятся равными [К/2]? ]Уюиаяие. Предположите, чта первый шаг был "Установить 1 +- О, т <- К (или Ж+ 1), перейти к шагу С4".] 6. [М20] Пусть д, = вйьта (?3 является у-и приращением в алгоритме С, как определена в (6). а) Чему рвана сумма 2 1вл1.~-24 т Ь) Чему равны минимальное и максимальное значения в, которые могут паявитьсв на шаге С2? й.

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

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

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