Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
abramov_s_a_lekcii_o_slozhnosti_algoritmov.doc
Скачиваний:
136
Добавлен:
11.05.2015
Размер:
2.74 Mб
Скачать

Глава 2. Сложность в среднем

n, m размера входа. Беря максимум этих сложностей по всем m та­ким, что l^m^n, определяем сложности T{n), T{n) по числу срав­нений в худшем случае и в среднем с использованием n в качестве размера входа. Показать, что T{n) = Q{n2) и T(n)<4n.

Указание. Возьмем U(n) = max T(k). Очевидно, что U(n) не убывает при

ЫЫn

возрастании n и что T(n) ^ U(n). Доказывается неравенство

U(n) г£ i(U(n - 1) + тах{U(1), U n - 2)} + ... n

... + max{U(n - 2), U(1)} + U(n - 1)) + n - 1, из которого, в силу неубывания U(n), следует

U(n)s£-(U(n-l) + U(n-2) + ... + U(|nJ))+n. Отсюда с помощью индукции выводится, что U(n) <4n для всех n> 1.

36. В инверсионном векторе (bъ b2,..., bn) произвольной переста­ новки (a1,a2,...,an)бПn каждая компонента bi равна количеству це­ лых j таких, что 1 ^ j <i и aj >ai. Например, инверсионный вектор перестановки (2, 4, 3,1, 6, 5) —это (0, 0,1, 3, 0,1). Показать, что каж­ дому целочисленному вектору (bъ b2, •••, bn), для которого 0 ^ bi < i, i = 1, 2,..., n, соответствует некоторая перестановка длины n, для ко­ торой этот вектор является инверсионным.

Указание. Очевидно, что если bn = k, 1Цk<n, то an=n-k, и это со­ображение приводит к алгоритму построения (a1,a2,...,an), применимому к любому вектору b, удовлетворяющему оговоренным условиям: просматри­ваем компоненты вектора b, продвигаясь от последней к первой, находим значение соответствующей компоненты перестановки a и удаляем найден­ное значение из множества M, первоначально равного {1, 2,..., n}; при этом значение ai , i = n,n 1,..., 1, определяется как (bi - 1)-й наибольший в мно­жестве M (самый большой элемент —это первый наибольший, следующий по величине элемент —это второй наибольший и т.д.).

37. Показать, что один этап пузырьковой сортировки понижает на единицу значение каждой неотрицательной компоненты инверсион­ ного вектора перестановки (см. предыдущую задачу) и не изменяет нулевые компоненты. Показать, что вероятность того, что значение максимума компонент инверсионного вектора выбранной наугад пе­ рестановки длины n равно k, 0^k<n, есть j1.

Указание ко второй части задачи. Количество векторов (b1; b2,..., bn), для каждого из которых bi е N+, 0 г£ bi < i, i = 1,2,..., n, и max{b1; b2,..., bn} г£ k,

Задачи

71

1 ^ к ^ п - 1, равно к\ кп к г, так как Ь; может принимать любое значение между 0 и £ - 1 при £ ^ к и любое значение между 0 и к - 1 для k<i^n.

38. Показать, что математическое ожидание числа этапов пузырь­ковой сортировки совпадает с (6.9).

Указание. Пользуясь решением предыдущей задачи, легко получить, что это математическое ожидание есть

J(fc(fcn-fc/c!-(/c-l)n-fc+1(fc-l)!),

J_ n!

fc=l

что равно

— (>(fcn-fc+1fc! - № - l)n-fc+2№ - 1)!) - V(fc - l)"-k+1(k - 1)! V

' k=l k=l

В упрощении последнего выражения поможет дискретный аналог формулы Ньютона—Лейбница (см. задачу 27).

                  1. Используя идею решения задачи 35, предложить рандомизи­рованный алгоритм восстановления перестановки длины п по ее ин­версионному вектору (см. задачу 36), имеющий сложность в среднем по числу сравнений 0{п2).

                  1. Пусть {аъа2,...,ап) произвольная перестановка длины п. Ее преобразование

for i = n downto 2 do j := 1 + random(i - 1); щ^а} od

может дать любую перестановку длины п с вероятностью —. (Это дает алгоритм построения случайных перестановок с равномерным распределением вероятностей.)

41. Предположим, что у нас нет другого генератора случайных чи­ сел, кроме генератора, в результате обращения к которому появля­ ется 0 или 1 с одинаковой вероятностью | (аналог подбрасывания монеты), и пусть р, O^p^l, — заданное вещественное число. Ка­ ким образом с помощью этого генератора можно определить гене­ ратор randp, в результате обращения к которому появляется 0 или 1 с вероятностями соответственно р и 1 - р (незначительные отклоне­ ния допустимы)? Сложность в среднем алгоритма получения одного случайного числа с помощью randp должна быть меньше 2 (затраты определяются числом обращений к изначально имеющемуся генера­ тору).

Указание. Представить р (возможно, с небольшой погрешностью) в виде конечной суммы вида —- Н—| + ... + -|, где а{ —это 0 или 1 для всех £, а к — некоторое целое положительное число.

72

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]