Теорема Акра-Баззи

Материал из testwiki
Перейти к навигации Перейти к поиску

 

В информатике и теории вычислимости метод Акра–Баззи, или теорема Акра–Баззи, используется для исследования асимптотического поведения рекуррентных функций, которые возникают при анализе алгоритмов типа «разделяй и властвуй», где подзадачи имеют существенно разные размеры. Данный метод является обобщением основной теоремы о рекуррентных соотношениях, которая предполагает, что подзадачи на каждом уровне рекурсии имеют одинаковый размер. Теорема названа в честь математиков Мохамада Акры и Луая Баззи.

Формулировка

Метод Акра–Баззи применяется к рекуррентным формулам вида: [1]

T(x)=g(x)+∑i=1kaiT(bix+hi(x))для x≥x0,

для которых выполнено:

  • x0=const,
  • при малых x искомая рекуррента T(x)=const=O(1), где O обозначает нотацию O-большое,
  • ai и bi являются константами ∀i∈1,k‾,
  • ai>0 ∀i∈1,k‾,
  • 0<bi<1 ∀i∈1,k‾,
  • |g′(x)|∈O(xc), где c - константа,
  • |hi(x)|∈O(x(log⁡x)2) ∀i∈1,k‾.

Асимптотическое поведение рекурренты T(x) находится путем определения значения p для которого ∑i=1kaibip=1 и последующей подстановкой этого значения в выражение: [2]

T(x)∈Θ(xp(1+∫1xg(u)up+1du)).

Под Θ здесь имеется в виду одновременное выполнение условий O-большое (ограниченность сверху) и Ω (ограниченность снизу).

Замечание

Отметим, что функции hi(x) можно рассматривать как небольшие возмущения в аргументах рекурренты T. Учитывая, что ⌊bix⌋=bix+(⌊bix⌋−bix) и что абсолютная величина ⌊bix⌋−bix всегда находится в интервале между 0 и 1, можно использовать добавки hi(x) для исключения взятия целой части аргумента. К примеру, рекуррентные формулы T(n)=n+T(12n) и T(n)=n+T(⌊12n⌋) будут, согласно теореме Акра–Баззи, иметь одинаковое асимптотическое поведение.

Пример 1

Пусть T(n) задаётся системой:

{T(n)=1,для0≤n≤3,T(n)=n2+74T(⌊12n⌋)+T(⌈34n⌉),дляn>3.

Применим метод Акра-Баззи для поиска асимптотики на T(n), так как все условия теоремы выполнены. Сначала необходимо найти значение p, решив уравнение 74(12)p+(34)p=1. В данном примере p=2. Далее, используя формулу Акра-Баззи, можно определить асимптотическое поведение следующим образом:

T(x)∈Θ(xp(1+∫1xg(u)up+1du))==Θ(x2(1+∫1xu2u3du))==Θ(x2(1+ln⁡(x)))==Θ(x2log⁡(x)).

Пример 2

Рассмотрим в качестве примера алгоритм классической сортировки слиянием. На каждом уровне рекурсии функция сортировки вызывает себя дважды на половинных наборах входных данных и выполняет слияние подмассивов, производя в худшем случае n−1 сравнение. Таким образом, рекуррентная формула для сортировки слиянием даётся системой: [3]

{T(0)=0,T(n)=T(⌊12n⌋)+T(⌈12n⌉)+n−1,дляn∈ℕ.

Применим метод Акра-Баззи для поиска асимптотики на T(n), так как все условия теоремы выполнены. Сначала необходимо найти значение p, решив уравнение (12)p+(12)p=1. В данном примере p=1. Далее, используя формулу Акра-Баззи, можно определить асимптотическое поведение следующим образом:

T(x)∈Θ(xp(1+∫1xg(u)up+1du))==Θ(x(1+∫1xuu2du))==Θ(x(1+ln⁡(x)))==Θ(xlog⁡(x)).

Значение

Метод Акра–Баззи эффективнее большинства других методов определения асимптотического поведения, поскольку он технически удобен и охватывает очень широкий класс задач. В основном данный метод применяется для оценки времени выполнения алгоритмов типа «разделяй и властвуй».

Смотреть также

Ссылки

Внешние ссылки