- •Глава 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
Глава 5. Битовая сложность
редкий пример, когда низкие временные затраты сочетаются с малым расходом памяти.
Алгоритм Уоршелла построения замыкания ориентированного графа имеет битовую временную сложность 2n3 + n, где n = \ V \ — число вершин графа. Пространственная сложность этого алгоритма ограничена константой.
При рассмотрении |V|, |E| в качестве двух параметров размера входа сказанное сохраняет силу, так как затраты алгоритма Уоршелла не зависят от числа ребер заданного входного графа.
Задачи
Исследовать битовую сложность вычисления величины 1 + + 2 + ... +n последовательными сложениями. Размером входа считать битовую длину m целого числа n.
Для временной битовой сложности «сверхнаивного» умножения (пример 19.1) при использовании параметров mъ m2 верна оценка сверху O(2тах{m1'm2}тах{m1,m2}), а оценка Q(.2max{m^m}max{m1,m2}) неверна.
Указание. Неверна оценка П(2тах{mьm2}тах{m1,m2}): она противоречила бы оценке O(2m2m{), так как для любого N > 0 существуют m1,m2>N такие, что m1 = 2m2.
Определение чисел Фибоначчи, данное в § 10, позволяет вычислить Fn, выполнив n — 1 сложение. Битовая сложность этого алгоритма допускает оценку O{n2) при рассмотрении n в качестве размера входа.
Обосновать использованный в доказательстве предложения 21.1 переход от оценки T*^(.mъm2) = O{{mг - m2 + 1)(m2 + 1)) к T^* (mъ m2) = O{{mг -m2 + 1)m2).
Можно ли усилить предложение 21.2, заменив приведенные там оценки O(logalogb), O(log2a) на e(logalogb), 6(log2a)?
Рассмотрим m = А(n) в качестве размера входа алгоритма вычисления факториала (пример 20.1). Верна ли для соответствующей временной битовой сложности оценка O(2mm)?
К числу, первоначально равному нулю, прибавляется шаг за шагом по единице до получения значения 2n - 1, n ^ 0. При этих сложениях потребуется 2n - n - 1 переносов единицы в старший разряд.
Пусть p — простое, a и b — произвольные целые, k — натуральное. Тогда (a + b)pk=apk +bpk (mod p).
Задачи
155
106. а) Аддитивная группа кольца Zk является циклической, в ка честве образующей этой группы может выступать любой класс, со держащий число I, взаимно простое с к.
б) Пусть р—простое, тогда мультипликативная группа поля Zp, т. е. группа всех ненулевых элементов по умножению, является циклической.
107. Если число р—простое, а к—неотрицательное целое, мень шее р, то (£)=0 (mod р).
Указание. Предварительно показать, что р не делит /с!.
108. Индукцией по а доказать малую теорему Ферма.
Указание. Использовать равенство ар = (1 + (а - 1))р и предыдущую задачу.
109. Имеет место следующая китайская теорема об остатках: пусть кък2,...,кп—взаимно простые натуральные числа (моду ли); тогда для любых Ъъ Ъ2,..., Ъп е Z найдется /eN такое, что / = = b; (mod ki), i = 1, 2,..., п. (Задача восстановления числа по остаткам обсуждалась в древних китайских математических трактатах.) Дать конструктивное доказательство этой теоремы, т. е. доказательство, содержащее в себе алгоритм построения подходящего / (каждый такой алгоритм может быть назван китайским алгоритмом).
Указание. Пусть k = k1k2...kn и g; = fc/fc;, i = l,2,...,n. При всех i = l,2, ... ..., п числа fc; и g; взаимно просты, поэтому расширенным алгоритмом Евкли-
п
да можно определить h{ так, что h;g; = 1 (mod fc;) и положить /= Xi ^j^jSj.
110. Исходя из того, что значение полинома /(х) в точке х = а равно по теореме Безу остатку от деления /(х) на х-а, установить параллелизм между интерполяционной формулой Лагранжа и форму лой для значения /, данной в указании к задаче 109.
111. Битовая сложность китайского алгоритма, эскизно обрисован ного в указании к задаче 109 и основывающегося на расширенном алгоритме Евклида, наивном делении и наивном умножении, допус кает оценку 0(log2fc), если в качестве размера входа рассмотреть к, и оценку 0{т2), если в качестве размера входа рассмотреть битовую длину т числа к.
Указание. По поводу сложности вычисления g см. пример 20.2; сложность этапа вычисления всех g; допускает оценку ОI J] log g log кЛ и т. д.
156