Мастер-теорема — различия между версиями
Shersh (обсуждение | вклад) м (→Недопустимые соотношения) |
м (rollbackEdits.php mass rollback) |
||
| (не показаны 3 промежуточные версии 3 участников) | |||
| Строка 28: | Строка 28: | ||
Заметим, что количество операций увеличивается, уменьшается и остается константой, если <tex>\left(\dfrac{a}{b^c}\right)^i</tex> увеличивается, уменьшается или остается константой соответственно. | Заметим, что количество операций увеличивается, уменьшается и остается константой, если <tex>\left(\dfrac{a}{b^c}\right)^i</tex> увеличивается, уменьшается или остается константой соответственно. | ||
| − | Поэтому решение разбивается на три случая, когда <tex> | + | Поэтому решение разбивается на три случая, когда <tex>\dfrac{a}{b^c}</tex> больше <tex>1</tex>, равна <math>1</math> или меньше <math>1</math>. Рассмотрим <tex dpi = "130">\dfrac{a}{b^c}\ = 1\Leftrightarrow a = b^c \Leftrightarrow\ \log_b a = c \log_b b \Leftrightarrow\ \log_b a = c</tex>. |
Распишем всю работу в течение рекурсивного спуска: | Распишем всю работу в течение рекурсивного спуска: | ||
| Строка 51: | Строка 51: | ||
| − | <tex> t( | + | <tex> t(n) = \begin{cases} |
| − | 2 \; t\!\left(\dfrac{ | + | 2 \; t\!\left(\dfrac{n}{2}\right) + O(n\log n) , & n > 1\\ |
1 , & n = 1 | 1 , & n = 1 | ||
\end{cases} | \end{cases} | ||
</tex> | </tex> | ||
| − | Заметим, что <tex> n\log n = O(n^c) </tex>, для любого <tex> c > 1 </tex>, что удовлетворяет 1 условию. Тогда <tex> T(n) = O(n^c) </tex>, где <tex> c > 1 </tex>, при <tex> a = 2, b = 2, \log_b a = 1</tex> | + | Заметим, что <tex> n\log n = O(n^c) </tex>, для любого <tex> c > 1 </tex>, что удовлетворяет 1 условию. Тогда <tex> T(n) = O(n^c) </tex>, где <tex> c > 1 </tex>, при <tex> a = 2, b = 2, \log_b a = 1</tex> |
==== Пример 2 ==== | ==== Пример 2 ==== | ||
Текущая версия на 19:37, 4 сентября 2022
Мастер теорема (англ. Master theorem) позволяет найти асимптотическое решение рекуррентных соотношений, которые могут возникнуть в анализе асимптотики многих алгоритмов. Однако не все рекуррентные соотношения могут быть решены через мастер теорему, ее обобщения включаются в метод Акра-Бацци[1].
Содержание
Формулировка и доказательство мастер-теоремы
| Теорема (мастер-теорема): |
Пусть имеется рекуррентное соотношения:
где , , , . Тогда асимптотическое решение имеет вид:
|
| Доказательство: |
|
Рассмотрим дерево рекурсии данного соотношения. Всего в нем будет уровней. На каждом таком уровне, количество детей в дереве будет умножаться на , так на уровне будет детей. Также известно, что каждый ребенок на уровне размера . Ребенок размера требует дополнительных затрат, поэтому общее количество совершенных действий на уровне : Заметим, что количество операций увеличивается, уменьшается и остается константой, если увеличивается, уменьшается или остается константой соответственно. Поэтому решение разбивается на три случая, когда больше , равна или меньше . Рассмотрим . Распишем всю работу в течение рекурсивного спуска: Откуда получаем:
|
Мастер-теорема имеет прямое отношение к анализу алгоритмов, так как рекуррентное соотношение можно воспринимать следующим образом: имеется задача размера , алгоритм разбивает её на подзадач размера , тратит дополнительно действий, а если размер подзадачи становится равен единице, то алгоритму требуется действий на её решение.
Из доказательства теоремы видно, что если в рекурретном соотношении заменить на и , то и асимптотика решения изменится соответствующим образом на или .
Примеры
Примеры задач
Пример 1
Пусть задано такое рекуррентное соотношение:
Заметим, что , для любого , что удовлетворяет 1 условию. Тогда , где , при
Пример 2
Задано такое соотношение:
Данное соотношение подходит под первый случай , поэтому его асимптотика совпадает с асимптотикой .
Недопустимые соотношения
Рассмотрим пару соотношений, которые нельзя решить мастер-теоремой:
-
- не является константой; количество подзадач может меняться,
-
- рассмотрим , тогда не существует такого , что , так как при , а ограничено,
-
- , однако пример можно решить следующим образом: заметим, что на шаге, размер , тогда, оценивая сумму, получаем, что ,
-
- , при составлении асимптотического решения перед каждый раз будет новый знак, что противоречит мастер-теореме.
Приложение к известным алгоритмам
| Алгоритм | Рекуррентное соотношение | Время работы | Комментарий |
|---|---|---|---|
| Целочисленный двоичный поиск | По мастер-теореме , где | ||
| Обход бинарного дерева | По мастер-теореме , где | ||
| Сортировка слиянием | По мастер-теореме , где |
См.также
Примечания
Источники информации
- Википедия — Мастер-теорема
- Dartmouth university — The master theorem
- Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 2-е издание.стр. 110 М.: Издательский дом "Вильямс", 2005. ISBN 5-8459-0857-4