- •Глава 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
§ 13. Нецелые размеры входа и непрерывные оценочные функции 97
ся следствием формулы Стирлинга (см. § 9). Это дает нам оценку
6(Lv n3 + 1J logLv n3 + 1J) для интересующих нас затрат. После упрощения получаем в(n3/2 logn). В этом примере затраты однозначно определяются по n, поэтому полученная оценка определяет асимптотику сложности рассматриваемого алгоритма при использовании n в качестве размера входа.
Оценку O(L\/n3 + lJ logL\/n3 + lJ) и, тем самым, O(n3/2 logn) можно было бы получить не прибегая к формуле Стирлинга, исходя из того, что сумма конечного числа неотрицательных слагаемых не превосходит произведения наибольшего слагаемого на число слагаемых суммы. Для в этот прием не работает, как показывает пример суммы
2 2i.
i=i
§ 13. Нецелые размеры входа и непрерывные оценочные функции
Предложение 13.1. Пусть для некоторого алгоритма A можно указать входы v0,v1, ..., размеры которых ограничены сверху и снизу положительными константами cг и c2:
ci^l|vil|^c2, i = 0,l,...,
и в то же время затраты CA(vi) неограниченно возрастают при i -» оо. Тогда не существует такой непрерывной на отрезке [cъ c2] функции f(x) вещественной переменной, что TA(x)^f(x) для всех значений x размера входа, принадлежащих отрезку [cъc2].
Доказательство. Очевидно, что TA(||vi||) ^ CAT{vi), и поэтому по следовательность TA(||vi||), i = 0,l, ..., не ограничена. В то же время, любая функция f, непрерывная на [c1,c2], ограничена на этом от резке. □
Сформулируем еще одно столь же легко доказываемое утверждение (доказательство опускаем).
Предложение 13.2. Пусть A —некоторый алгоритм, и f(x) — функция вещественной переменной, определенная на некотором интервале I. Пусть TA(x) ^f(x) всякий раз, когда xеI и значение TA(x) определено. Пусть x0 е I и для любых ǫ > О, N > 0 найдется такой вход v алгоритма A, что |x0 - ||v|| \<ǫ и CTA{v) >N. Тогда f(x) разрывна в точке x0.
98 Глава 3. Оценивание числа шагов (итераций) алгоритма
Пример 13.1. Вновь рассмотрим алгоритм Евклида, используя теперь в качестве размера входа (ап, а-.) рациональное число —, кото-рое, как указывалось в примере 9.1, однозначно определяет соответствующее количество делений с остатком (сложность Tl — ], соот-
ь aj
ветствующая этому размеру, совпадает с затратами: СЕ{а0,аг)). В силу формулы Бине (10.2) имеем
lim Щ^ = Ф,
при этом CE(Fn+1,FJ = n. Поэтому если функция вещественной переменной f{x) такова, что CE(a0,ai) «S/f—1, то, в силу предложе-
ния 13.2, /(х) разрывна в точке ф. Мы воспользовались тем, что для любого е > 0 и любого натурального JV найдется рациональное число
u/v такое, что | ф - - | < е и СЕ{и, v) =г JV. v Можно доказать, что здесь дело не в числе ф—то же самое справедливо для любого х0 > 1. Пусть 0 < s < х0 - 1. Докажем, что в рациональных точках е-окрестности VXot£ числа х0 функция ГЕ(г) не является ограниченной. Предположим противное: пусть г = — е VXot£ —рациональное число, на котором достигается максимум. Пусть частные, возникающие в процессе применения алгоритма Евклида к щ, иъ равны qls q2,---,qn:
Щ-1 = Ч1Щ + Щ+ъ i = l,2, ...,п, ип+1 = 0.
Выберем 5 > 0 столь малым, что Vr>5 с VXo>s, и возьмем любое s е Q \ Z
такое, что - - s < 5 (легко заметить, что - = q„sZ). Пусть ип ип
I, т—такие целые, что s = —. Используя g-i,g?, ...,о,,, найдем vn, v-,,
, vn gN+, для которых
v;-i =aivi +vi+i, i = l,2,...,n,
и vnx = 1, vn = т. Индукцией по к легко доказать, что для к = 0,1, , - - 1
< 5. (13.1)
"n-fc
В самом деле, для к = 0 это очевидно; остается показать, что при 0<к<п-1из (13.1) следует
"nk1
< 5. (13.2)