- •Глава 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
Глава 7. Сводимость
Непосредственно видно, что (i, j)-элемент матрицы Cnv(C12AC*2AC21) равен 1, если и только если существует ход, соединяющий вершины
V;, Vj G Уг. При этом ясно, что из V; можно добраться в Vj О;, Vj е Vx) по
ребрам графа G, если и только если существует последовательность ходов, приводящая из vt в у,-, т. е. если и только если (i, _/)-элемент матрицы
(CnV(C12AC*2AC21))*
равен 1. Обозначим эту матрицу Fn. Мы имеем
*21 ^22
для некоторых матриц F12, F21, F22, при этом матрица Fpq, р, q g {1, 2}, несет информацию о существовании путей из вершин множества Vp в вершины множества Vq. Рассуждениями, сходными с приведенными выше, можно показать, что
F12 = FnAC12AC*2, F21 = C*2AC21AFn, F22 = С*22 V (С*2 А С21 A Fn А С12 А С*2);
эти выражения удобны для вычисления матрицы С*: четыре матрицы Fp q, р, q g {1, 2}, можно найти, выполнив два построения транзи-тивно-рефлексивных замыканий, шесть умножений и два сложения матриц порядка Z:
U = С*2, V = С12 A LT, W = U А С2Ъ Fn = (CnV(VAC21))*, F12=FnAV, F21 = W AFn, F22 = UV(F21AV).
Мы указали рекурсивный переход от матриц порядка 21 к матрицам порядка Z. Учитывая, что С* = С для матрицы первого порядка, мы получаем алгоритм вычисления С* для случаев, когда порядок п матрицы равен 2к, к^О. Пусть для умножения булевых матриц используется алгоритм со сложностью В{п), которая удовлетворяет условиям 1—3, приведенным в начале этого примера. Для п = 2к мы имеем следующее соотношение, которому будет удовлетворять сложность
§ 28. Линейная сводимость
189
T(n) полученного алгоритма построения транзитивно-рефлексивного замыкания:
0, еслиk=0,
2T(2k-1) +6B(2k-1)+2·22(k-1), если k > 0.
, . О, если к = и, г
ГС25^ (ЖЗ)
В силу условия 3 имеем В (2-) ^ 4B(2fc-2) при fc ^ 2. Дополнительное использование условия 1 дает нам B(22fc-1) ^22(fc-1) при fc^ 1. Заменяя 22*-15 во второй строке соотношения (28.3) на B(2fc-1), получаем
0, еслиk=0,
2T(2k-1)+8B(2k-1),
если
k
> 0.
Г(2 )*S (28.4)
Докажем по индукции, что
r(2fcK4B(2fc), fc = 0,l,... (28.5)
Для к = 0 это неравенство очевидно, так как ГЦ) = О, ВЦ) = 1. Пусть ЬОи неравенство выполнено для к - 1. Тогда 2Т(2к-1) s= 8B(2fc-1), и, как следствие (28.4), мы получаем Т{2к) ^ 16B(2fc-1). В силу условия 3
мы имеем B(2fc-!) ^ \в{2к), откуда следует (28.5).
Если п не есть число вида 2к, то от матрицы С переходим к матрице
С'=» ,°
С (Г
порядка 2к, взяв единичную матрицу Is некоторого порядка, меньшего чем порядок матрицы С. Таким образом, порядок матрицы С' меньше, чем 2п, т. е. 2к < 2п. Из (28.5) следует, что
T(n) = r(2fc)^4B(2fc).
Так как 2к < 2п и функция В(п) —неубывающая, получаем 4B(2fc) ^ ^4В(2п). Отсюда
Т{п) s= 4B(2n) SS 4 ■ 8 • В(п) = 32В(п)
для всех п и
Т{п) = 0{В{п)), (28.6)
что и требовалось.
Из сказанного следует, что если использовать для умножения квадратных булевых матриц алгоритм со сложностью, растущей медленнее, чем п3, и удовлетворяющей условиям 1—3, то можно строить тран-зитивно-рефлексивное замыкание со сложностью, растущей медленнее, чем сложность алгоритма Уоршелла (пример 23.2). Напомним, что
190