Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Основная теорема о рекуррентных соотношениях

Из Википедии — свободной энциклопедии

Основная теорема о рекуррентных соотношениях используется в анализе алгоритмов для получения асимптотической оценки рекурсивных соотношений (рекуррентных уравнений), часто возникающих при анализе алгоритмов типа «разделяй и властвуй», например, при оценке времени их выполнения. Теорема была введена и доказана Джоном Бентли, Доротеном Хакеном и Джеймсом Хакеном в 1980 году. Теорема была популяризована в книге Алгоритмы: построение и анализ (Томас Кормен, Чарльз Лейзерстон, Рональд Ривест, Клиффорд Штайн), в которой она была приведена.

Не все рекурсивные соотношения могут быть решены с помощью основной теоремы. Существует несколько её обобщений, в том числе метод Акры — Бацци[en].

Описание

Рассмотрим задачу, которую можно решить рекурсивным алгоритмом:

function T(input n: размер задачи):
  if n < некоторая константа k:
    решить задачу относительно n нерекурсивно
  else:
    определить множество из a подзадач, каждая размера n/b
    вызвать функцию T рекурсивно для каждой подзадачи
    объединить решения
end
Дерево решений

В приведённом примере алгоритм рекурсивно разделяет исходную задачу размера n на несколько новых подзадач, каждая размером n/b. Такое разбиение может быть представлено в виде дерева вызовов, в котором каждый узел соответствует рекурсивному вызову, а ветви, исходящие из узла — последующим вызовам для подзадач. Каждый узел будет иметь a ветвей. Также в каждом узле производится объём работы, соответствующий размеру текущей подзадачи n (переданному в данный вызов функции) согласно соотношению . Общий объём работы алгоритма определяется как сумма всех работ в узлах данного дерева.

Вычислительная сложность подобных алгоритмов может быть представлена в виде рекуррентного соотношения . Его можно решить путём многократных подстановок выражения .[1]

С помощью основной теоремы возможно быстрое вычисление подобных соотношений, что позволяет получить асимптотическую оценку времени работы рекурсивных алгоритмов в нотации O(n) (Θ-нотации), не производя подстановок.

Общая форма

Основная теорема рассматривает следующие рекуррентные соотношения:

В применении к анализу алгоритмов константы и функции обозначают:

n — размер задачи.
a — количество подзадач в рекурсии.
n/b — размер каждой подзадачи. (Предполагается, что все подзадачи на каждом этапе имеют одинаковый размер.)
f (n) — оценка сложности работы, производимой алгоритмом вне рекурсивных вызовов. В неё также включается вычислительная стоимость деления на подзадачи и объединения результатов решения подзадач.

Основная теорема позволяет получить асимптотическую оценку для следующих трёх случаев:

Вариант 1

Общая форма

Если , и выполняется соотношение , тогда:

Пример

Согласно формуле, значения констант и сложности нерекурсивной части задачи:

, где .

Затем проверяем, выполняется ли соотношение 1-го варианта:

.

Следовательно,

(Для данного примера точное решение рекуррентности даёт , при условии .)

Вариант 2

Общая форма

Если для некоторой константы выполняется

, где .

Тогда

Пример

Согласно формуле, значения констант и сложности не рекурсивной части задачи:

, где .

Проверяем соотношение варианта 2:

, и следовательно, .

В соответствии с 2-м вариантом основной теоремы,

Таким образом, рекуррентное соотношение T(n) равно Θ(n log n).

(Этот результат может быть проверен точным решением соотношения, в котором , при условии .)

Вариант 3

Общая форма

Если выполняется

, где ,

а также верно, что

для некоторой константы и достаточно больших (так называемое условие регулярности), тогда

Пример

Значения констант и функции:

, где .

Проверяем, что выполняется соотношение из варианта 3:

, и, следовательно, .

Также выполняется условие регулярности:

при выборе .

Следовательно, согласно 3-му варианту основной теоремы,

Данное рекуррентное соотношение T(n) равно Θ(n2), что совпадает с f(n) в изначальной формуле.

(Этот результат подтверждается точным решением рекуррентности, в котором , при условии .)

Выражения, не решаемые основной теоремой

Следующие соотношения не могут быть решены с применением основной теоремы:[2]

  • a не является константой, для основной теоремы требуется постоянное количество подзадач.
  • Между f(n) и существует неполиномиальная зависимость.
  • a < 1, но основная теорема требует наличия хотя бы одной подзадачи.
  • f(n) является отрицательной величиной.
  • Близко к варианту 3, но не выполняется условие регулярности.

Во втором примере разница между и может быть выражена соотношением Из него видно, что для любой константы . Следовательно, разница не является полиномом, и основная теорема неприменима.

Применение к некоторым алгоритмам

Алгоритм Рекуррентное соотношение Время работы Примечание
Двоичный поиск Основная теорема, 2 вариант: , где [3]
Обход двоичного дерева Основная теорема, 1 вариант: где [3]
Алгоритм Штрассена Основная теорема, 1 вариант: , где [4]
Optimal sorted matrix search Теорема Akra — Bazzi для и для получения
Сортировка слиянием Основная теорема, 2 вариант: , где

См. также

Примечания

  1. Duke University, "Big-Oh for Recursive Functions: Recurrence Relations". Архивная копия от 22 июня 2012 на Wayback Machine.
  2. Massachusetts Institute of Technology (MIT), "Master Theorem: Practice Problems and Solutions" (недоступная ссылка).
  3. 1 2 Dartmouth College, http://www.math.dartmouth.edu/archive/m19w03/public_html/Section5-2.pdf Архивная копия от 21 апреля 2017 на Wayback Machine
  4. A Master Theorem for Discrete Divide and Conquer Recurrences. Дата обращения: 19 августа 2016. Архивировано 18 апреля 2016 года.

Литература

Эта страница в последний раз была отредактирована 4 марта 2023 в 01:12.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).