- •Глава 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
§18. Нижние границы сложности рандомизированных алгоритмов 127
В дальнейшем нас не будут интересовать оптимальные стратегии, однако равенство
max min М{р, q) =min max M{p,q) (18.1)
p q q p
окажется для нас очень ценным.
При фиксированной стратегии р значение minM{p,q) равно ми-
q
нимальному значению среди
/_, milPi> У_.Щ2Р1> ■■■> / ,mikPi> i i i
т.е. mm^ mijPi (в качестве стратегии q, на которой достигается ми-
разом тахМ(р, о) = max У] т.-.-о,-. Это позволяет переписать равен-
Р i j ' '
нимум, выступает некоторая чистая стратегия). Аналогичным образом max M{p,q
р
ство (18.1) в виде
max min V тир( = min max V т^аи (18.2)
p j 1—1 ' q i 1—1 ' '
i j
откуда следует, что для любых стратегий р = {ръ р2,..., рк) и q = (qls q2,---,4k) выполнено
min V т;,р;^ max Vm;,о,. (18.3)
i j
То, что исходная матрица квадратная, не играло никакой роли в выводе последней формулы, каждая из переменных i и j могла пробегать свое множество значений. Можно даже не нумеровать строки и столбцы исходной матрицы, а дать им какие-то имена. Для матриц с такого рода именованием строк и столбцов чаще используют название таблица.
Вернемся теперь от матричных игр к анализу сложности алгоритмов. Пусть имеется конечное множество .s4 алгоритмов решения некоторой задачи и конечное множество X входов фиксированного размера, и для них составлена числовая таблица, элементы которой проиндексированы элементами множества X (первый индекс) и множества .s4 (второй индекс). В качестве элемента таблицы с индексами х,А берется величина затрат (например, временных) СА(х). Если рассмотреть какие-либо распределения вероятностей на X и .s4, то в силу (18.3) будем иметь
min ЕхСА(х) s= max Е^СА(х), (18.4)
А хХ
128 Глава 4. Нижняя граница сложности. Оптимальные алгоритмы
где символами ЕX и Е^ обозначены математические ожидания, связанные с заданными (произвольными) распределениями вероятностей на X и .s4.
Будем рассматривать рандомизированный алгоритм как конечное множество детерминированных («обычных») алгоритмов с некоторым распределением вероятностей на нем, — о возможности такого взгляда на рандомизированные алгоритмы говорилось в конце § 8. Тогда можно определить усредненные затраты этого рандомизированного алгоритма для каждого входа. Фиксируя размер входа, мы можем рассмотреть сложность в худшем случае такого рандомизированного алгоритма .s4 как максимум усредненных затрат по входам данного размера, эта сложность записана в правой части неравенства (18.4). Левая же часть этого неравенства может быть интерпретирована как наименьшая из сложностей в среднем алгоритмов класса .s4, для определения этой сложности используется некоторое распределение вероятностей на X.
Мы приходим к принципу, предложенному А. Яо.
Теорема 18.1 (принцип Яо). Пусть для размера входа зафиксировано некоторое значение n, и пусть все входы размера n образуют конечное множество X, на котором задано некоторое распределение вероятностей. Пусть ,s4 — конечное множество алгоритмов, применимых к элементам множества X, и пусть на ,s4 тоже задано некоторое распределение вероятностей. Множество .s4 с этим распределением можно рассматривать как единый рандомизированный алгоритм, считая его сложностью T(n) усредненные затраты в худшем случае. Тогда, если найти некоторую нижнюю границу f(n) сложностей в среднем (в соответствии с данным распределением вероятностей на множестве X входов размера n) всех детерминированных алгоритмов класса ,s4, то, независимо от конкретного вида распределений на X и .s4, будет выполняться неравенство f(n) s= T{n).
Пример 18.1. Рассмотрим произвольную рандомизированную сортировку массивов фиксированной длины n, которую, по крайней мере теоретически, можно задать как конечное множество детерминированных алгоритмов сортировки массивов длины n с приписанными этим детерминированным алгоритмам вероятностями, в сумме дающими единицу. (Предполагаем, что это вероятностное пространство алгоритмов не зависит от конкретного входа, т. е. конкретного массива длины n.) Тогда в соответствии с принципом Яо сложность этой рандомизированной сортировки не может быть меньше чем log2n!, так как при равномерном распределении вероятностей
Задачи
129
на Пn для сложности в среднем детерминированных алгоритмов сортировки мы имеем в силу предложения 17.1 нижнюю границу log2 n\ при любом n.г
Задачи
Для обсуждавшихся в задаче 8 алгоритмов сортировки вагонов функция Зn - 1 является нижней границей их сложности, откуда следует, что тот алгоритм, который требуется указать в задаче 8, является оптимальным в рассматриваемом классе.
Для сложности класса обсуждавшихся в задаче 17 алгоритмов поиска двери в стене функция n является асимптотической нижней границей, откуда следует, что тот алгоритм, который требуется указать в задаче 17, является оптимальным по порядку сложности в рассматриваемом классе.
76. (Продолжение предыдущей задачи.) Для поиска двери мож но указать класс .s4 алгоритмов, каждый из которых определяется некоторым целым k ^ 2: путник делает k шагов вправо, и если дверь не найдена, то возвращается назад и делает k шагов влево, и опять возвращается назад, если дверь не найдена; затем делает k2 шагов вправо, возвращаясь назад в случае неуспеха, затем k2 шагов вле во и т.д. Таким образом, ^ = {A2,AЪ, ...}, и для сложности по числу шагов имеем TA (n) = Зn, если k = n, и TA (n) > Зn, если k ф n. Как следствие, в классе j4 нет оптимального алгоритма, но каждый алго ритм из этого класса является оптимальным в нем по порядку слож ности.
Указание. Пусть m таково, что km-1 <nЦkm. Возможно, что потребуется число шагов, равное 2(k + k2 +... + km) + 2(k + k2 + ... + km-1) + n.
77. Нарисовать дерево быстрой сортировки для случая n = 3, счи тая, что первый элемент всегда выбирается в качестве разбивающего.
78. Дать другое доказательство предложения 14.2. Рассмотреть последовательности из нулей и единиц, соответствующие результа там всех проводимых сравнений в процессе применения сортировки к массивам длины n (каждому массиву сопоставляется своя последо вательность).
Указание. Если некоторый алгоритм сортировки требует не более h(n) сравнений, то длина каждой из последовательностей не превосходит h(n), и общее число последовательностей не превосходит 2h n.
Дополнительные примеры применения принципа Яо можно найти в [55, гл. 2].
130 Глава 4. Нижняя граница сложности. Оптимальные алгоритмы
Аналогично предыдущей задаче, дать другое доказательство предложения 14.4.
Как уже отмечалось (со ссылкой на приложение D), n является нижней границей сложности как по числу аддитивных операций, так и по числу умножений для класса алгоритмов, вычисляющих значение полинома anxn + ... + aгx + a0 с помощью операций сложения, вычитания и умножения (при рассмотрении числа n как размера входа x, a0, aъ ..., an). Означает ли это, что при вычислении любого фиксированного полинома p(x) степени n при заданном значении переменной x потребуется не менее n аддитивных операций и n умножений? Указать такие нижние границы сложности (по числу аддитивных операций и по числу операций умножения) алгоритмов вычисления полинома 2 ( n )xk, которые растут при n —»оо существенно медленнее,
k=0
чем n.
Имеется плитка шоколада размера k х l клеток, которую требуется разломать на отдельные клетки. Каждый разлом применяется к одному куску плитки и производится по прямой линии. Затраты каждого алгоритма решения этой задачи применительно к конкретной плитке измеряются числом потребовавшихся разломов. Указать оптимальный алгоритм решения этой задачи и выписать его сложность. Числа k, l считаются параметрами размера входа алгоритмов.
Если условно изобразить элементы массива длины n точками на плоскости, соединяя отрезками те из них, которые непосредственно сравнивались в процессе некоторого алгоритма поиска, — скажем, поиска наименьшего элемента, одновременного поиска наибольшего и наименьшего элементов, поиска k-го по величине элемента (в частности, поиска медианы, т.е. |"§]-го элемента), —то получающийся граф должен быть связным, иначе мы бы ничего не могли сказать о том, как соотносятся между собой элементы из разных компонент. Показать, что для всех алгоритмов поиска, сопоставляющих указанным (неявным) образом связные графы конкретным массивам, n - 1 является нижней границей сложности по числу сравнений (как в худшем случае, так и в среднем); в частности, это верно для алгоритмов поиска медианы.
Указание. Дерево с n вершинами имеет n - 1 ребро.
83. Рассмотрим класс алгоритмов поиска k первых (меньших) по величине элементов массива без установления порядка между най денными элементами и класс алгоритмов поиска k-го по величине
Задачи
131
элемента. Как обычно, имеется в виду поиск с помощью сравнений. Доказать, что любая нижняя граница сложности по числу сравнений алгоритмов первого класса является нижней границей и для второго класса.
84. Дать доказательство предложения 14.1, построенное по той же схеме, что и доказательство предложения 15.1.
Указание. Рассмотреть тройки множеств (A, B, C), включая в A на каждом этапе алгоритма все те элементы, которые еще не сравнивались, в B — все те, которые участвовали в сравнениях и всегда оказывались меньшими, в C — все те, которые участвовали в сравнениях и в некоторых оказывались большими.
Доказать содержащееся в доказательстве предложения 15.1 утверждение, что после первого сравнения постоянно будет выполнено b^l, c^1.
В классе алгоритмов вычисления an с помощью умножений (a фиксировано, n е N) при рассмотрении n в качестве размера входа существует оптимальный алгоритм. То же самое—при рассмотрении m = A(n) в качестве размера входа.
Бинарный алгоритм возведения в степень n не является оптимальным по числу умножений и при использовании m = А(n) в качестве размера входа.
Указание. Рассмотреть алгоритм, который для всех n ф 15 работает как бинарный алгоритм, а при n = 15 — несколько быстрее (см. задачу 19), и показать, что такой алгоритм при m = 4 имеет сложность меньшую, чем бинарный.
(Продолжение задачи 87.) Является ли оптимальным по порядку сложности бинарный алгоритм возведения в степень n при использовании m = A(n) в качестве размера входа?
Рассмотренный в задаче 64 алгоритм поиска фальшивой монеты, требующий в худшем случае не более [log3 n] взвешиваний, является оптимальным для худшего случая.
Нижней границей сложности любого алгоритма деления отрезка на n равных частей с помощью циркуля и линейки (см. задачу 18) при рассмотрении числа n в качестве размера входа является,
n-1 в частности, —^—.
Отсутствие указания основания логарифма в (16.1) является корректным.
Функция log2(n + l) является нижней границей сложности в среднем алгоритмов поиска места элемента в упорядоченном массиве
132 Глава 4. Нижняя граница сложности. Оптимальные алгоритмы
длины п с помощью сравнений (считаем, что в диапазоне от 1 до п + 1 место может быть любым с одинаковой вероятностью +-).
Указание. Для доказательства воспользоваться предложением 17.1.
(Продолжение предыдущей задачи.) Алгоритм бинарного поиска является оптимальным в среднем по порядку сложности в классе алгоритмов поиска места элемента с помощью сравнений.
Алгоритм, описанный в задаче 29, является оптимальным как в худшем случае, так и в среднем.
Пусть TQS(n) и 7^pt(n) — сложности в среднем быстрой сортировки и оптимальной в среднем сортировки. Верно ли, что Гд5(п)~ ~Topt(n)? Если нет, то можно ли подобрать константу с такую, что fQ(n)~cfopt(n)?
Утверждение теоремы 17.1 перестает быть верным, если его изменить, удалив условие, что т < °° всюду на рассматриваемом вероятностном пространстве: при выполнении всех остальных условий
со
может оказаться, что т = °° при том, что X! ^fc имеет конечное зна-
fc=i чение.
Указание.
Рассмотреть
постоянные
величины
gfc
=
г к
= 1,2,...,
взяв hk = Е,к для всех к; при любом q > 1 получается противоречие с измененным утверждением.г
97. Функция log2(n + 1) является нижней границей сложности ран домизированных алгоритмов поиска места элемента в упорядочен ном массиве длины п с помощью сравнений. (Предполагается, что каждый из рассматриваемых рандомизированных алгоритмов может быть задан как конечное множество детерминированных алгоритмов поиска места элемента в упорядоченном массиве длины п, с при писанными этим детерминированным алгоритмам вероятностями, в сумме дающими единицу; при этом такое вероятностное простран ство алгоритмов не должно зависеть от конкретного входа разме ра п.)
Эта задача сообщена автору А.В.Бернштейном.