Мастер-теорема — различия между версиями
Timur (обсуждение | вклад) |
Timur (обсуждение | вклад) |
||
Строка 16: | Строка 16: | ||
</tex> | </tex> | ||
− | где <tex>a</tex> — количество подзадач, на которые мы разбиваем нашу задачу, <tex>n</tex> — размер нашей задачи, <tex dpi = "125">\dfrac{n}{b}</tex> — размер подзадачи, <tex> n ^ {c} </tex> — стоимость работы, проделанной рекурсивными вызовами, который включает в себя стоимость деления проблемы и стоимость слияния решения подзадач, <math>d</math> — начальная стоимость для данной задачи(при < | + | где <tex>a</tex> — количество подзадач, на которые мы разбиваем нашу задачу, <tex>n</tex> — размер нашей задачи, <tex dpi = "125">\dfrac{n}{b}</tex> — размер подзадачи, <tex> n ^ {c} </tex> — стоимость работы, проделанной рекурсивными вызовами, который включает в себя стоимость деления проблемы и стоимость слияния решения подзадач, <math>d</math> — начальная стоимость для данной задачи(при <tex>n = 1</tex>). |
Пусть <tex>a</tex> — <tex>\mathbb N </tex> число большее <tex>1</tex>, <tex>b</tex> — <tex>\mathbb R </tex> число большее <tex>1</tex>, <tex>c</tex> — <tex>\mathbb R^{+} </tex> число и <tex>d</tex> — <tex>\mathbb R^{+} </tex> , тогда решение данной рекурренты зависит от соотношения между <tex>a, b, c</tex> так: | Пусть <tex>a</tex> — <tex>\mathbb N </tex> число большее <tex>1</tex>, <tex>b</tex> — <tex>\mathbb R </tex> число большее <tex>1</tex>, <tex>c</tex> — <tex>\mathbb R^{+} </tex> число и <tex>d</tex> — <tex>\mathbb R^{+} </tex> , тогда решение данной рекурренты зависит от соотношения между <tex>a, b, c</tex> так: | ||
Строка 56: | Строка 56: | ||
</tex> | </tex> | ||
− | Заметим, чтобы узнать <tex>t(7)</tex> , мы должны знать <tex>t(7 | + | Заметим, чтобы узнать <tex>t(7)</tex> , мы должны знать <tex>t(\dfrac{7}{2})</tex>, чтобы узнать <tex>t(\dfrac{7}{2})</tex>, мы должны узнать <tex>t(\dfrac{7}{4})</tex>, <tex>1 < \dfrac{7}{4} < 2</tex>, тогда <tex>t(\dfrac{7}{4}) = \dfrac{35}{4}</tex> , <tex>t(\dfrac{7}{2}) = 3\cdot\dfrac{35}{4} + \dfrac{49}{4}</tex>, тогда <tex>t(7) = 3t(\dfrac{7}{2}) + 7^2 = \dfrac{329}{2}</tex> |
==== Пример 2 ==== | ==== Пример 2 ==== |
Версия 22:16, 7 мая 2015
Мастер теорема (англ. Master theorem) позволяет найти асимптотическое решение рекуррентных соотношений, которые могут возникнуть в анализе асимптотики многих алгоритмов. Однако не все рекуррентные соотношения могут быть решены через мастер теорему, ее обобщения включаются в метод Акра-Бацци[1].
Содержание
Формулировка и доказательство мастер-теоремы
Теорема (Об асимптотическом решении рекуррентного соотношения): |
В анализе асимптотики алгоритма получено соотношение такого вида:
где — количество подзадач, на которые мы разбиваем нашу задачу, — размер нашей задачи, — размер подзадачи, — стоимость работы, проделанной рекурсивными вызовами, который включает в себя стоимость деления проблемы и стоимость слияния решения подзадач, — начальная стоимость для данной задачи(при ). Пусть — число большее , — число большее , — число и — , тогда решение данной рекурренты зависит от соотношения между так:
|
Доказательство: |
Давайте рассмотрим дерево рекурсии. Всего в нем будет уровней. На каждом таком уровне, количество подзадач будет умножаться на , так на уровне будет подзадач. Также известно, что каждая подзадача на уровне размера . Подзадача размера требует дополнительных затрат, поэтому общее количество совершенных операций на уровне : Заметим, что количество операций увеличивается, уменьшается и остается константой, если увеличивается, уменьшается или остается константой соответственно. Поэтому мы должны разобрать три случая, когда больше , равен или меньше . Рассмотрим . Распишем всю работу в течение рекурсивного спуска: Откуда получаем:1. (т.к. убывающая геометрическая прогрессия)2. 3. , но |
Примеры
Примеры задач
Пример 1
Пусть задано такое рекуррентное соотношение:
Рассчитать для
.
Заметим, чтобы узнать
, мы должны знать , чтобы узнать , мы должны узнать , , тогда , , тогдаПример 2
Задано такое соотношение:
Данное соотношение подходит под первый случай
, поэтому его асимптотика совпадает с асимптотикойНедопустимые соотношения
Рассмотрим пару ошибочно-составленных соотношений:
- не является константой; количество подзадач может меняться
- не удовлетворяет условию не равно
- < 1 не может быть меньше одной подзадачи
- не положительна
Приложение к известным алгоритмам
Алгоритм | Рекуррентное соотношение | Время работы | Комментарий |
---|---|---|---|
Целочисленный двоичный поиск | По мастер-теореме | , где||
Обход бинарного дерева | По мастер-теореме | , где||
Сортировка слиянием | По мастер-теореме | , где
Источники информации
- Википедия — Мастер-теорема
- Dartmouth university — The master theorem
- Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 2-е издание.стр. 110 М.: Издательский дом "Вильямс", 2005. ISBN 5-8459-0857-4