- •Глава 1
- •§ 1. Затраты алгоритма для данного входа, алгебраическая сложность
- •§ 1. Затраты алгоритма для данного входа
- •§ 1. Затраты алгоритма для данного входа
- •§ 1. Затраты алгоритма для данного входа
- •§ 1. Затраты алгоритма для данного входа
- •§ 2. Асимптотические оценки (формализм)
- •§ 2. Асимптотические оценки (формализм)
- •§ 2. Асимптотические оценки (формализм)
- •§ 3. Асимптотические оценки (два примера) 23
- •§ 3. Асимптотические оценки (два примера)
- •§ 3. Асимптотические оценки (два примера)
- •§ 3. Асимптотические оценки (два примера)
- •§ 3. Асимптотические оценки (два примера)
- •§ 4. Длина числа как возможный размер входа
- •§ 4. Длина числа как возможный размер входа
- •§ 4. Длина числа как возможный размер входа
- •§ 4. Длина числа как возможный размер входа
- •Глава 2
- •§ 5. Понятие сложности в среднем
- •§ 5. Понятие сложности в среднем
- •Глава 2. Сложность в среднем
- •§ 5. Понятие сложности в среднем
- •Глава 2. Сложность в среднем
- •§ 6. Сортировка и конечные вероятностные пространства.
- •§ 6. Сортировка и конечные вероятностные пространства 47
- •Глава 2. Сложность в среднем
- •§ 6. Сортировка и конечные вероятностные пространства 49
- •Глава 2. Сложность в среднем
- •§ 6. Сортировка и конечные вероятностные пространства 51
- •Глава 2. Сложность в среднем
- •§ 7. Пример медленного роста сложности в среднем
- •§ 7. Пример медленного роста сложности в среднем в сравнении со сложностью в худшем случае
- •Глава 2. Сложность в среднем
- •§ 7. Пример медленного роста сложности в среднем 55
- •Глава 2. Сложность в среднем
- •§ 7. Пример медленного роста сложности в среднем
- •Глава 2. Сложность в среднем
- •§ 8. Функция затрат рандомизированного алгоритма
- •§ 8. Функция затрат рандомизированного алгоритма
- •Глава 2. Сложность в среднем
- •§ 8. Функция затрат рандомизированного алгоритма
- •Глава 2. Сложность в среднем
- •§ 8. Функция затрат рандомизированного алгоритма
- •Глава 2. Сложность в среднем
- •Глава 2. Сложность в среднем
- •Глава 2. Сложность в среднем
- •Глава 2. Сложность в среднем
- •Глава 2. Сложность в среднем
- •Глава 3
- •§ 9. Функции, убывающие по ходу выполнения алгоритма
- •§ 9. Функции, убывающие по ходу выполнения алгоритма 75
- •§ 9. Функции, убывающие по ходу выполнения алгоритма 77
- •§ 9. Функции, убывающие по ходу выполнения алгоритма 79
- •§ 9. Функции, убывающие по ходу выполнения алгоритма 81
- •§ 10. Качество оценок
- •§ 10. Качество оценок
- •§ 10. Качество оценок
- •§ 10. Качество оценок
- •§ 11. Завершимостъ работы алгоритма
- •§ 11. Завершимость работы алгоритма
- •§ 11. Завершимостъ работы алгоритма
- •§ 11. Завершимостъ работы алгоритма
- •§ 12. Вложенные циклы (дополнительные примеры)
- •§ 12. Вложенные циклы (дополнительные примеры)
- •§ 13. Нецелые размеры входа и непрерывные оценочные функции 97
- •§ 13. Нецелые размеры входа и непрерывные оценочные функции
- •§ 13. Нецелые размеры входа и непрерывные оценочные функции 99
- •Глава 4
- •§ 14. Понятие нижней границы сложности
- •§ 14. Понятие нижней границы сложности
- •§ 15. Оптимальные алгоритмы
- •§ 15. Оптимальные алгоритмы
- •§ 15. Оптимальные алгоритмы
- •§ 15. Оптимальные алгоритмы
- •§ 16. Асимптотические нижние границы. Алгоритм, оптимальный по порядку сложности
- •§ 16. Асимптотические нижние границы
- •§ 16. Асимптотические нижние границы
- •§ 17. Нижняя граница сложности в среднем
- •§ 17. Нижняя граница сложности в среднем
- •§ 17. Нижняя граница сложности в среднем
- •§ 17. Нижняя граница сложности в среднем
- •§ 17. Нижняя граница сложности в среднем 125
- •§ 18. Нижние границы сложности рандомизированных алгоритмов. Принцип Яо
- •§18. Нижние границы сложности рандомизированных алгоритмов 127
- •Глава 5
- •§ 19. Битовые операции
- •Глава 5. Битовая сложность
- •§ 19. Битовые операции
- •Глава 5. Битовая сложность
- •§ 20. Наивная арифметика: умножение
- •§ 20. Наивная арифметика: умножение
- •Глава 5. Битовая сложность
- •§ 20. Наивная арифметика: умножение
- •Глава 5. Битовая сложность
- •§ 21. Наивная арифметика: деление с остатком
- •§ 21. Наивная арифметика: деление с остатком
- •Глава 5. Битовая сложность
- •§ 21. Наивная арифметика: деление с остатком
- •Глава 5. Битовая сложность
- •§ 22. Модулярная арифметика
- •§ 22. Модулярная арифметика
- •Глава 5. Битовая сложность
- •§ 22. Модулярная арифметика
- •Глава 5. Битовая сложность
- •§ 22. Модулярная арифметика
- •Глава 5. Битовая сложность
- •§ 23. Булева арифметика
- •§ 23. Булева арифметика
- •Глава 5. Битовая сложность
- •§ 23. Булева арифметика
- •Глава 5. Битовая сложность
- •Глава 5. Битовая сложность
- •Глава 6
- •§ 24. Простейшие рекуррентные уравнения
- •§ 24. Простейшие рекуррентные уравнения
- •§ 24. Простейшие рекуррентные уравнения
- •§ 25. Об одном классе нелинейных рекуррентных соотношений 163
- •§ 25. Об одном классе нелинейных рекуррентных соотношений
- •§ 25. Об одном классе нелинейных рекуррентных соотношений 165
- •§ 25. Об одном классе нелинейных рекуррентных соотношений 167
- •§26. Асимптотические оценки решений рекуррентных неравенств 169
- •§ 26. Асимптотические оценки решений рекуррентных неравенств
- •§ 26. Асимптотические оценки решений рекуррентных неравенств 171
- •§ 27. Добавление нулей
- •§ 27. Добавление нулей 173
- •§ 27. Добавление нулей 175
- •§ 27. Добавление нулей
- •§ 27. Добавление нулей 179
- •Глава 7 Сводимость
- •§ 28. Линейная сводимость
- •Глава 7. Сводимость
- •§ 28. Линейная сводимость
- •Глава 7. Сводимость
- •§ 28. Линейная сводимость
- •Глава 7. Сводимость
- •§ 29. Линейная сводимость и нижние границы сложности
- •§ 29. Линейная сводимость и нижние границы сложности 191
- •Глава 7. Сводимость
- •§ 29. Линейная сводимость и нижние границы сложности 193
- •Глава 7. Сводимость
- •§ 30. Классы PиNp
- •§ 30. Классы р и np
- •Глава 7. Сводимость
- •§ 30. Классы PuNp
- •Глава 7. Сводимость
- •§ 30. Классы PuNp
- •Глава 7. Сводимость
- •§ 31. Существование задач распознавания, не принадлежащих р 201
- •§ 31. Существование задач распознавания, не принадлежащих р. Связь моделей мт и рам
- •Глава 7. Сводимость
- •§ 31. Существование задач распознавания, не принадлежащих р 203
- •Глава 7. Сводимость
- •§ 32. Полиномиальная сводимость. Np-полные задачи
- •§ 32. Полиномиальная сводимость. Np-полные задачи
- •Глава 7. Сводимость
- •Глава 7. Сводимость
- •Глава 7. Сводимость
- •Глава 7. Сводимость
- •Глава 1. Сложности алгоритмов как функции числовых аргументов. Сложность в худшем случае
- •119002, Москва, Большой Власьевский пер., 11. Тел. (499) 241-74-83
Глава 2. Сложность в среднем
s_^_J
Рис. 11. Навес из костяшек домино.
(рис. 11). Предложить алгоритм конструирования таких навесов, требующий O(el) костяшек.
Указание. Будем характеризовать навес из n костяшек неотрицательными числами l1;l2, ...,ln, где li — расстояние от правого края i-й сверху костяшки до вертикальной (пунктирной на рис. 11) линии, проходящей через правый край 1-й, т. е. самой верхней, костяшки. (Таким образом, lt = 0, ln = l.) Считая, что вес каждой костяшки равен 1, можно показать, что условием равновесия является система неравенств
li+1<ai+i)+fe+ i )+-+ai+i) , i=i,2,...,n-i
(каждое такое неравенство означает, что центр тяжести конструкции из i верхних костяшек не выходит за правый край (i + 1)-й костяшки). Самый длинный навес получается тогда, когда числа l1;l2, ... подчинены рекуррентному соотношению
li+i = i > li=°-
Далее можно идти тем же путем, что и при решении соотношения (7.2) и т. д.
31. Перестановка (aъ a2,..., an) е Пn называется полной, если ai ф i, i = l,2,...,n. Вероятность dn = Pn(Dn) события Dn, состоящего в том, что данная перестановка является полной, равна 0 при n = 1 и равна
1.-1. + ... + -L (8.4)
при n > 1 (следствие: lim dn = -).
Задача о значении dn широко известна как задача о шляпах. На собрание, состоявшееся поздно вечером, n его участников пришли в шляпах и оставили их в раздевалке, а когда собрание окончилось, разобрали шляпы наугад в темноте (в раздевалке перегорела лампочка) и разошлись по домам. Какова вероятность того, что каждый пришел домой в чужой шляпе?
Указание. Для любого r такого, что СЩЩn, можно рассмотреть вероятность p (n, r) того, что перестановка длины n имеет ровно r непо-
Задачи
69
движных точек (ровно г человек пришли домой в своих шляпах). Тогда р(п,0) + р(п, 1) + ... +р(п,п) = 1. Далее надо доказать, что р(п,г) =
= (")-, г— тР(" - г, 0) = -р(п - г, 0), откуда будет следовать, что
г пуп- 1)...(п -г) г!
^d„ + Y[dn-! + ^„-! + ... + (-TjA-! + ^do = 0.
С
учетом
d0
=
1 последнее
соотношение
однозначно
определяет
все
dt,d2,
...
Остается
убедиться,
что
подстановка
значений
(8.4) в
левую
часть
этого
соотношения
дает
0. Подставляя
т-77
+ ?7-о7
+ --- + i^,
r
=
°>
*> •••>
п,
в
левую
часть
этого
соотношения,
получим
J]
-
.^
(роль
г
играет
п
- j).
Слагаемые этой суммы можно перегруппировать так, чтобы внутри группы значение i+j было постоянной величиной I. Это даст
ZjZj (Z-i)!i! Z_iJ! Zj (Z-i)!iP ' '
!=0 i=0 г=о ;=o
последний шаг доказательства очевиден.
При быстрой сортировке (в любом из рассмотренных ее вариантов) число пар индексов (i,j), попадающих в стек отложенных заданий, не превосходит длины п исходного массива.
Верно ли, что определение усредненных затрат некоторого рандомизированного алгоритма требует задания распределения вероятностей
а) на множестве всех допустимых входов?
б) на каждом из множеств всех входов фиксированного размера?
34. Если измерять затраты рандомизированной быстрой сортиров ки количеством обращений к генератору случайных чисел, то слож ность этой сортировки есть величина порядка п. То же самое верно, если в определении функции затрат вместо математического ожида ния взять максимум затрат по соответствующим сценариям.
35. Идея, лежащая в основе быстрой сортировки, может быть использована для нахождения rn-го наименьшего элемента среди аъа2,...,ап,1^т^п (самый маленький элемент—это 1-й наимень ший, следующий элемент —2-й наименьший и т.д.). Разбиение мас сива с использованием случайно выбранного разбивающего элемента порождает два массива длины i - lиn - i при некотором 1 ^ i ^ п. Ес ли т = i, то поиск закончен, если т ^ i - 1, то далее рекурсивно нахо дится т-й наименьший в первом массиве, а если т > i, то рекурсивно находится (т - 0-й наименьший во втором массиве. Можно ввести сложность по числу сравнений при рассмотрении двух параметров
70