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

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

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

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

Аналогичным образом получаем соотиошеняя Вл(г) = ~ ~ Ьгнлг" В,-1(г)Вл-,(г), г=! >=Е л Сл(г) = — ~ *л"'С,-1(г) Сл- (г), !У Ф Юл(г) = — з7'/2, (г)0л .(г), Е л Ел(г) = р) Е,-,(г)Ен- (г) г $ при Ж > М. Здесь Ьмя — вероятность того, что э и Х примут данные значения в последовательности длиной 5/, а именно Последнее выражение равно произведению трех сомножителей: числа перестановок множества (1,..., з — 1), числа перестановок множества (э+ 1,..., Н) и числа способов взаимной замены ! элементов нз одного подмассива и ! элементов из другого подмассива. Первый сомножитель есть произведение (1/Ж!) и (э — Ц1, второй сомножитель равен (5! — а)1, а третий равен (' )(, '). При 0 < !г С ЛХ получим Ви(Ъ) = Сн(з) = Вя(х) = 1, Р ( ) = П'= ((1+ (й — 1) )/5) В. ( ) г й =,((1+ а+ ".

+ ' ')/5). (Интересно проанализировать поведение этой производящей функции при большом йг; последовательность, аналогичная Сл(з), но г а~+', замененным на ам ~, как известно, сходится к распределению, отличному от нормального, что не позволяет проанализировать его полностью. (См. статью Р. Неппечп!п, М. Кейп!ег, П. 11оэ!ег, ВАХВО уяеогебса! 1п/огтабсз апд Аррйсайопз 23 (1989), 317-333; 23 (1989), 335-343; 26 (1991), 85-100.)] 23. При Ж > М получаем Ал = 1+ (2/Ж 'Х,езэ<л Аэ; Вл = Ее<э«л 5ми (! + В, ~ + Вл,) = (1/5Х) ),',((е-1)(!эХ вЂ” э)/(Н-1)+В,-~+Вл-,) = (!0-2)/6+(2/дг) ~ ейэ<лВэ ]см. упр. 22]; Рл = (2/УХ) 2 е«э<лРэ; Ян получается аналогично. При г! > 2М + 1 получаем Ял = (2/Ф) 4 о<э<и Яэ + (Н вЂ” 2М вЂ” 2)/К.

Каждое из этих рекуррентных соотношений имеет форму (20) при некоторой функпии /„. 24. Рекуррентное соотношение Ск = Н вЂ” 1+ (2/йг) 2„<л Сэ при Н > М имеет решение (!Ь'+1)(2Нл+~ -2Нм+э+1-4/(М+2)+2/(ХХ+1)). (Таким образом, мы могли бы сэкономить около 416/М сравнений. Но для каждого сравнения потребуется больше времени, если за ним последует анализ э и 11 В результате мы проиграем, если только потери при сравнении двух ключей не превысвт в -'М !п Ф раз потери от сравнения двух регистров. Многие теоретические выводы относительно сортировки не удалось реализовать на практике, посшшьку предлагаемые <усовершенствования" превращали быструю сортировку в существенно менее быструю!) 25.

(Многократно примените формулы (17), подставив а = 1.) А = 5Х вЂ” ЛХ, В = О, С = ( эа) — (и+'),Рм ВмВ=О. 26. Действительно, нет ничего хуже, чем сортировать 1 2 3 ... й! — М !9 !0-1 ... Ф-М+1. Часть этой вогледовательностн Х М-1 М вЂ” 2 ... 1 М АХ+1 ... Ф-1 почти так же плоха. Но это лишь чуть-чуть хуже, чем в упр. 25, посколысу при таком наборе получим Р=М вЂ” 1, Е= (и). 27. 12 231 8 6759 10 11 41614151320 1819172122 23; трсбует 546и.

Можно показать, что наилучшим при Н = 3(М + 1)2" — 1 будет случай, когда подмассивы прн каждом разбиении делятся пополам до тех пор, пока не достигнут размера ЗМ + 2. Затем нужно использовать деление на треть, чтобы избежать переполнения стека. Получим А = 3-2" -1, С = (й + э )(йг+ 1), Ю = 2э — 1, В = Р = Е = О. (Найти лучший случай для любого М и Ж вЂ” задача очень интересная, но и очень сложная.) 28. Рекуррентное соатношенне можно преобразовать в 29. В общем случае рассмотрим рекуррентное соотношение и 2 ~- (й — 1) (п — /с) 121+ 1/ которое возникает, когда разделение управляется медианой 2! + 1 элементов.

Полшвя С(л) = ~„"„С л", его можно преобразовать а (1 — л)'+'С!л'+'!(л)/(21+ 2)! = 1/(1 — л)'+ + С!0(л)/(!+1)(, Пусть /(х) = СО!(1-х); тогда рр(д)/(х) = (21+2)!/х'+~„где д — оператор х(!(/дх) н р!(х) = (! — х)'+' — (2! + 2)'+!. Общее рещение уравнения: (д — а)д(х) = хл имеет внд 9(х) = хл/(л — а) + Сх~ прн а .„а д н д(х) щ хя(!пх+ С) при а ы д. Имеем рс(-! — 2) = О, так что общее решение этога днфференпнального уравнения таково: Сн!(л) = (21+ 2)! 1п(1 — л)/р!(-! — 2)(1- л)'+ + ) с,(1 — л)"', где ае, ., а! — корни уравнения р!(х) = О, а константы с! зависят ат начальяых значений С!,..., Сл. Удобное тождество !и( — )ы~~1 (Н„е — Н )( )л", т>О, ейе приводит к удивительно простому решению в земкирщам виде С„= (н+ Ц+ —, ~ с (-а ) Н +! — Нс+! 1 :! Несет Ню+! нз которого легко выводится аснмптотнческая формула.

(Главный член и!пн/ (Нм+л— Н!е!) выделил М. ван Змден [см. М. Н. еап Епн!еп, САСМ 13 (1970), 563-567), используя теоретико-информационный подход. Действительно, предположим, что необходимо проанализировать произвольный процесс разделения, такой, что в левом подмассиве будет содержаться х7!! элементой с асимптотической вероятностью / /(х) дх прн Ж -+ аа, для 0 < х < 1, Ван Змден доказал, что среднее число сравнений, необходимых для полной сор! тировки всего массива, нмеет асимптотическое выражение а 'н (и и, где а = -1/) (/(х) + /(1 — х))х )и х де. Зта формула применима к обмеяной поразрядной сортировке, а также к быстрой сартнровке и другим методам.

См. также Н. Нпгвчсз, САСМ 14 (1971), 99-102.) 30. Рещение 1 (представляет, скорее всего, историческую ценность). Каждый подмасснв можно описывать четырьмя величинами (1, г, к, Х), где ! и г — граннць! (как н ранее), й уназывает число слов в ключах, о которых нзвестно, чта оня равны ва всем падмассиве, а Х вЂ” нижняя граница (я+1)-х слов в ключах. В предположении, чта ключн неотрнцательны, нмеем вначале (1, г, й, Х) = (1, Ф,О,О). При разделении массива полагаем К равным (й+ 1)-му слову проверяемого ключа Ке. Еслн К > Х, то при разделения все ключн > К оказываются справа, а все ключи < К вЂ” слева (еслн смотреть каждый раз только на (й + 1)-е слово ключа).

Соответственно разделенные подмасснвы получают описания (1, в'-1, и, Х) и (в', г,)в, К). Но если К = Х, то при разделении все ключи > К попадают вправо, а все ключи < К ]фактически = К] — влево; разделенные подмассивы получают описании соов ветственно (1, в к+ 1, 0) и (2+ 1, г к К). В обоик случаях нельзя быть уверенным в том, что запись Йв заняла окончательное положение, поскольку мы не просмотрели ((в+ 2)-е слова. Для правильной работы с граничными условиями необходимо внести другие очевидные изменения.

Добавив в описание пятый компонент, "верхняя граница", можно сделать этот метод симметричным относительно левой и правой частей массива. Решеиее 8 (Вепс!еу, Бебйешю)в, ЯООА 6 (1997), 360-369]. Пусть, как и в решении 1, К будет (к+ 1)-ым словом в К» в подмассиве, описанном (1, г, (г), Но далее используйте алгоритм из упр. 41 для разделения подмассива на три части, (1,в — 1,к), (в)у,й + 1), (в'+ 1,г,к), для случаев <К, =К, >К.

Этот подход, который авторы назвали ши(Вйеу 4ивсбвогв (быстрая сортировка по мультнключу), дает значнтелъно лучшие результаты, чем решение 1, н квляегся вполне достойным конкурентом самых быстрых методов сортировки символъных строк. 31. Выполните обычное разделение, и пусть Вл попадет в позицию Л . Если в = ш, то иа этом можно закончить. Если в < т, воспользуйтесь тем же методом для нахождения (пв — в)-го наименъшего элемента в правом подмассиве. Если же в > т, найдите т-й наименьший элемент в левом подмассиве. (САСМ 4 (1961), 321-322; 14 (1971), 39-45.] В работе К.

С. 11гошеу, Бойэвате Ргасйсе бв Ехрепелсе 16 (1986), 981 — 986, показано, что понадобится меньше сравнений и перезаписей, если прекращать каждую фазу разделении, как только в или у достигнет позиции т. 32. Рекуррептное соотношение здесь следующее: Сы = О и С„= и+ 1+ (А„+ В„„,)/и прил >1, где А = ~~ С1„„ц н Влт = ~~~ С( м, 16ю< т<вй» пРи 1 < гл < и. ПосколькУ А<„~вд е» = А, + Се и В;„+и = В + С „можно сначала найти формулу для В„= (и+ 1) Сшэц~,„+Ы -пС„,„, а затем сложить эти формулы и получить ответ 2((п+1)Н (и+2 пв)Н э1- ~ (ш+1)Жи+н+ ) Зб ви Зб~ 1 вб вбть Прн и = 2гл — 1 он примет вид 4гл(Нем в — Нм) + 4т — 4Н~ + -(1 — бмв) = (4+ 4!и 2)ш— 4 !впь — 47 — -' + О(гл ') = 3 39п.

(См. П. Е. Кпцсл, Ргос, 1Р)Р Сопбгвви (1971), 19-2Ц Другое решение является следствием теории, изложенной в разделе 6,2.2. Предположим, что ключи — это (1,2,..., и), и пусть Х ь — число общих предков узлов в' и (в в дереве двоичного поиска, соответствующем быстрой сортировке. Тогда число сравнений, которые необходимо выполнить для реализации алгоритма из упр. 31, можно представить в виде 2 ",Х, + Х вЂ” 2(узел гл есть лист]. Вероятность того, что узел в является общим предком узлов у и й в случайном дереве двоичного поиска, есть 1/(шах(в',у,л)— ппв(в,у',й) + 1).

Среднее число сравнений получим, исходя из того, что ЕХ в ж Н. + Н +, в+ 1 — 2Н» в ы при 1 < 1' < л и Рг(узел ш есть лист) = Рг(за пв не следует гл х 1 в случайной перестановке ) = в + ебтв + 1б~„+ вб„,~бпьв [См. К. Вешав, 81САСТ Меев 26, 2 (Лове, 1994), 86-89.] Анализ аналогичного алгоритма, в котором используется разбиение по методу меди»- ны трех значений, приведен в работе К1гзсйепЬо(ег, Ргоб)пбег, МагВпш, Иалдош Ввгисвнгви н А18огйлшз 1О (1997), 143-156. Асимптотически более быстрый метод анализируется в уцр.

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

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

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