Основная теорема (анализ алгоритмов)
При анализе алгоритмов основная теорема для повторений по принципу «разделяй и властвуй» обеспечивает асимптотический анализ многих рекуррентных соотношений , которые встречаются при анализе алгоритмов «разделяй и властвуй» . Этот подход был впервые представлен Джоном Бентли , Доротеей Блостейн (урожденной Хакен) и Джеймсом Б. Саксом в 1980 году, где он был описан как «объединяющий метод» для решения таких повторений. [1] Название «основная теорема» было популяризировано широко используемым учебником по алгоритмам « в алгоритмы» Кормена Введение , Лейзерсона , Ривеста и Штейна .
Не все рекуррентные соотношения могут быть решены с помощью этой теоремы; к его обобщениям относится метод Акры–Бацци .
Введение [ править ]
Рассмотрим задачу, которую можно решить с помощью рекурсивного алгоритма, например следующего:
процедура p(вход x размера n ): если n < некоторая константа k : Решите x напрямую без рекурсии еще : Создайте подзадачи x n , каждая из которых имеет размер / b . Вызов процедуры p рекурсивно для каждой подзадачи Объедините результаты подзадач
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/Recursive_problem_solving.svg/359px-Recursive_problem_solving.svg.png)
Приведенный выше алгоритм рекурсивно делит проблему на несколько подзадач, каждая из которых имеет размер n / b . В его дереве решений есть узел для каждого рекурсивного вызова, а дочерними элементами этого узла являются другие вызовы, сделанные из этого вызова. Листья дерева — это базовые случаи рекурсии, подзадачи (размером меньше k ), которые не повторяются. будут дочерние В приведенном выше примере в каждом неконечном узле узлы. Каждый узел выполняет объем работы, соответствующий размеру подзадачи n, переданной этому экземпляру рекурсивного вызова и заданной выражением . Общий объем работы, выполняемой всем алгоритмом, представляет собой сумму работы, выполненной всеми узлами дерева.
Время выполнения алгоритма, такого как p выше, на входе размера n , обычно обозначается , может быть выражено рекуррентным соотношением
где настало время создать подзадачи и объединить их результаты в описанной выше процедуре. Это уравнение можно последовательно подставлять само в себя и расширять, чтобы получить выражение для общего объема проделанной работы. [2] Основная теорема позволяет преобразовать многие рекуррентные отношения этой формы в Θ-нотацию напрямую, без расширения рекурсивного отношения.
Общая форма [ править ]
Основная теорема всегда дает асимптотически точные границы повторений с помощью алгоритмов «разделяй и властвуй» , которые разбивают входные данные на более мелкие подзадачи одинакового размера, решают подзадачи рекурсивно, а затем объединяют решения подзадач, чтобы дать решение исходной проблемы. Время для такого алгоритма можно выразить путем сложения работы, которую они выполняют на верхнем уровне своей рекурсии (чтобы разделить проблемы на подзадачи и затем объединить решения подзадач), вместе со временем, затраченным на рекурсивные вызовы алгоритма. Если обозначает общее время работы алгоритма на входе размером , и обозначает количество времени, затраченное на верхнем уровне повторения, тогда время может быть выражено рекуррентным соотношением , которое принимает форму:
Здесь размер входной проблемы, количество подзадач в рекурсии, а — коэффициент, на который уменьшается размер подзадачи при каждом рекурсивном вызове (b>1). Крайне важно, и не должно зависеть от . В приведенной ниже теореме также предполагается, что в качестве базового случая повторения когда меньше некоторой границы , наименьший входной размер, который приведет к рекурсивному вызову.
Повторения этой формы часто удовлетворяют одному из трех следующих режимов, в зависимости от того, как происходит разделение/восстановление проблемы. относится к критическому показателю . (В таблице ниже используется стандартное обозначение «большая О» ).
Случай | Описание | Состояние включено в связи с , то есть | Основная теорема связана | Примеры обозначений |
---|---|---|---|---|
1 | Работа по разделению/восстановлению проблемы затмевается подзадачами.
т.е. дерево рекурсии многолистное |
Когда где
(ограничен сверху полиномом меньшей степени) |
... затем
(Термин расщепления не появляется; доминирует рекурсивная древовидная структура.) |
Если и , затем . |
2 | Работу по разделению/восстановлению проблемы можно сравнить с подзадачами. | Когда для
(диапазон ограничен полиномом критической экспоненты, умноженным на ноль или более необязательно с) |
... затем
(Граница — это член разделения, при котором журнал увеличивается на одну степень.) |
Если и , затем .
Если и , затем . |
3 | Работа по разделению/восстановлению проблемы доминирует над подзадачами.
т.е. дерево рекурсии имеет много корней. |
Когда где
(ограничено снизу полиномом большей степени) |
... это не обязательно что-нибудь даст. Кроме того, если
тогда в сумме преобладает член расщепления : |
Если и и условие регулярности выполнено, то . |
Полезное расширение варианта 2 обрабатывает все значения : [3]
Случай | Состояние включено в связи с , то есть | Основная теорема связана | Примеры обозначений |
---|---|---|---|
2а | Когда для любого | ... затем
(Граница — это член разделения, при котором журнал увеличивается на одну степень.) |
Если и , затем . |
2б | Когда для | ... затем
(Граница — это член разделения, где обратный логарифм заменяется итерированным логарифмом.) |
Если и , затем . |
2с | Когда для любого | ... затем
(Граница — это член разделения, при котором журнал исчезает.) |
Если и , затем . |
Примеры [ править ]
Пример случая 1 [ править ]
Как видно из формулы выше:
- , так
- , где
Далее мы проверим, удовлетворяем ли мы условию случая 1:
- .
Из первого случая основной теоремы следует, что
(Этот результат подтверждается точным решением рекуррентного соотношения, которое имеет вид , предполагая ).
Пример случая 2 [ править ]
Как мы видим в формуле выше, переменные принимают следующие значения:
- где
Далее мы проверим, удовлетворяем ли мы условию случая 2:
- , и, следовательно, c и равны
Итак, из второго случая основной теоремы следует:
Таким образом, данное рекуррентное соотношение был в .
(Этот результат подтверждается точным решением рекуррентного соотношения, которое имеет вид , предполагая ).
Пример случая 3 [ править ]
Как мы видим в формуле выше, переменные принимают следующие значения:
- , где
Далее мы проверим, удовлетворяем ли мы условию случая 3:
- , и, следовательно, да,
Также выполнено условие регулярности:
- , выбирая
Так следует из третьего случая основной теоремы:
Таким образом, данное рекуррентное соотношение был в , что соответствует исходной формулы.
(Этот результат подтверждается точным решением рекуррентного соотношения, которое имеет вид , предполагая .)
Недопустимые уравнения [ править ]
Следующие уравнения не могут быть решены с помощью основной теоремы: [4]
-
- а не является константой; количество подзадач должно быть исправлено
-
- неполиномиальная разница между и (см. ниже; применяется расширенная версия)
-
- не может быть менее одной подпроблемы
-
- , которое является временем комбинации, не является положительным
-
- случай 3, но нарушение регулярности.
Во втором недопустимом примере выше разница между и можно выразить соотношением . Ясно, что для любой константы . Следовательно, разница не является полиномиальной, и основная форма Главной теоремы не применима. Расширенная форма (случай 2b) применима и дает решение .
Приложение к общим алгоритмам [ править ]
Алгоритм | Рекуррентные отношения | Время выполнения | Комментарий |
---|---|---|---|
Бинарный поиск | Применить случай основной теоремы , где [5] | ||
Обход двоичного дерева | Применить случай основной теоремы где [5] | ||
Поиск оптимальной сортированной матрицы | Примените теорему Акры–Бацци для и получить | ||
Сортировка слиянием | Применить случай основной теоремы , где |
См. также [ править ]
Примечания [ править ]
- ^ Бентли, Джон Луис ; Хакен, Доротея ; Сакс, Джеймс Б. (сентябрь 1980 г.), «Общий метод решения повторяющихся задач по принципу «разделяй и властвуй»» , ACM SIGACT News , 12 (3): 36–44, doi : 10.1145/1008861.1008865 , S2CID 40642274 , заархивировано из оригинала 22 сентября 2017 г.
- ^ Университет Дьюка, «Большое спасибо за рекурсивные функции: рекуррентные отношения», http://www.cs.duke.edu/~ola/ap/recurrence.html
- ^ Чи Яп, Настоящий элементарный подход к основной повторяемости и обобщениям, Труды 8-й ежегодной конференции по теории и приложениям моделей вычислений (TAMC'11), страницы 14–26, 2011. Копия в Интернете.
- ^ Массачусетский технологический институт (MIT), «Главная теорема: практические проблемы и решения», https://people.csail.mit.edu/thies/6.046-web/master.pdf
- ^ Перейти обратно: а б Дартмутский колледж, http://www.math.dartmouth.edu/archive/m19w03/public_html/Section5-2.pdf
Ссылки [ править ]
- Томас Х. Кормен , Чарльз Э. Лейзерсон , Рональд Л. Ривест и Клиффорд Стейн . Введение в алгоритмы , второе издание. MIT Press и МакГроу-Хилл, 2001. ISBN 0-262-03293-7 . Разделы 4.3 (Основной метод) и 4.4 (Доказательство основной теоремы), стр. 73–90.
- Майкл Т. Гудрич и Роберто Тамассиа . Разработка алгоритмов: основы, анализ и примеры из Интернета . Уайли, 2002. ISBN 0-471-38365-1 . Основная теорема (включая включенную сюда версию случая 2, которая более сильная, чем версия из CLRS) находится на стр. 268–270.