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

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

 

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

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

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

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

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

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

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

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

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

Замечание

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

Пример 1

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

{T(n)=1,для0n3,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

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

{T(0)=0,T(n)=T(12n)+T(12n)+n1,для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)).

Значение

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

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

Ссылки

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