Мастер теорема

Извор: testwiki
Пређи на навигацију Пређи на претрагу

У анализи алгоритама мастер теорема представља основу за решавање рекурентних једначина које се јављају при анализи многих подели-па-владај алгоритама. Представљена је и доказана у књизи Introduction to Algorithms коју су написали Кормен (Шаблон:Јез-ен) , Лисерсон (Шаблон:Јез-ен) , Риверст (Шаблон:Јез-ен) и Стеин (Шаблон:Јез-ен). Не могу се све рекурентне једначине решити мастер теоремом. Генерализација мастер теореме обухвата Акра-Бази метод.

Увод

Разматрамо проблем који се може решити следећим рекурзивним алгоритмом:

 procedure T(n : size of problem ) defined as:
   if n < 1 then exit

Do work of amount f(n)

T(n/b) T(n/b) ...repeat for a total of a times... T(n/b) end procedure

У горњем алгоритму проблем рекурзивно делимо на низ подпроблема величине n/b. Ово се може замислити као формирање стабла у коме сваки чвор представља један рекурзивни позив, а његова деца даље рекурзивне позиве у оквиру текућег позива. Сваки од чворова обавља део посла у зависности од величине подпроблема n који му је прослеђен од родитеља и представљен са f(n). Укупан посао који обави цело дрво је сума послова које обави сваки чвор.


Овакви алгоритми могу да се представе рекурентном једначином T(n)=aT(nb)+f(n). Ова рекурзивна једначина се може сукцесивно заменити сама у себе и проширити у израз који представља укупан одрађени посао.[1]

На овај начин се, користећи мастер теорему, лако може израчунати време извршавања оваквих рекурзивних алгоритама и представити у О-нотацији без развијања рекурентне једначине.

Генерички облик

Мастер теорема решава рекурентне једначине следећег облика:

T(n)=aT(nb)+f(n),a1b>1

Константе и функције имају следећи значај:

  • n -величина проблема.
  • a -број подпроблема у рекурзији.
  • n/b -величина сваког подпроблема (Овде се претпоставља да су сви подпроблеми у суштини исте величине).
  • f (n) -цена операција обављених ван рекурзивних позива(обухвата операције дељења проблема на подпроблеме и спајања решења добијених као решења подпроблема).

Може се одредити асимптотска граница у следећа три случаја:

Први случај

Генерички облик

Ако f(n)=Θ(nc) где је c<logba (користећи О-нотацију)

следи да је:

T(n)=Θ(nlogba)

Пример

T(n)=8T(n2)+1000n2

Из горње једначине се може закључити да променљиве узимају следеће вредности:

a=8,b=2,f(n)=1000n2
f(n)=Θ(nc), где је c=2

Даље проверавамо да ли је задовољен услов првог случаја мастер теореме:

logba=log28=3, дакле: c<logba

Задовољен је услов, па из првог случаја мастер теореме следи:

T(n)=Θ(nlogba)=Θ(n3)

Према томе, дата рекурентна једначина T(n) припада Θ(n3).

Овај резултат се може потврдити директним решавањем рекурентне једначине: T(n)=1001n31000n2, под претпоставком да је T(1)=1.

Други случај

Генерички облик

Ако за неку константу k ≥ 0, важи да је:

f(n)=Θ(nclogkn) где је c=logba

следи:

T(n)=Θ(nclogk+1n)

Пример

T(n)=2T(n2)+10n

Из претходне једначине променљиве узимају следеће вредности:

a=2,b=2,c=1,f(n)=10n
f(n)=Θ(nclogkn) где је c=1,k=0

Даље проверавамо да ли је задовољен услов друог случаја мастер теореме:

logba=log22=1, дакле: c=logba

Задовољен је услов, па из другог случаја мастер теореме следи:

T(n)=Θ(nlogbalogk+1n)=Θ(n1log1n)=Θ(nlogn)

Према томе, дата рекурентна једначина T(n) припада Θ(n log n).

Овај резултат се може потврдити директним решавањем рекурентне једначине: T(n)=n+10nlog2n, под претпоставком да је T(1)=1.

Трећи случај

Генерички облик

Ако је тачно:

f(n)=Θ(nc) где је c>logba

следи:

T(n)=Θ(nc)

Пример

T(n)=2T(n2)+n2

Из претходне једначине променљиве узимају следеће вредности:

a=2,b=2,f(n)=n2
f(n)=Θ(nc), где је c=2

Даље проверавамо да ли је задовољен услов трећег случаја мастер теореме:

logba=log22=1, дакле: c>logba

Задовољен је услов, па из трћег случаја мастер теореме следи:

T(n)=Θ(nc)=Θ(n2).

Према томе, дата рекурентна једначина T(n) припада Θ(n2), што је у складу са f (n) из почетне једначине.

Овај резултат се може потврдити директним решавањем рекурентне једначине: T(n)=2n2n, под претпоставком да је T(1)=1.

Примери нерешивих једначина

Следеће једначине се не могу решити мастер теоремом[2]:

  • T(n)=2nT(n2)+nn
    a није константа
  • T(n)=2T(n2)+nlogn
    неполиномијална разлика између f(n) и nlogba (погледај испод)
  • T(n)=0.5T(n2)+n
    a<1 не може имати мање од једног подпроблема
  • T(n)=64T(n8)n2logn
    f(n) није позитивна
  • T(n)=T(n2)+n(2cosn)
    трећи случај, али није исправно

У другом примеру изнад разлика између f(n) и nlogba може се изразити односом f(n)nlogba=nlognnlog22=nnlogn=1logn. Јасно је да 1logn<nϵ за било коју константу ϵ>0. Стога, разлика није полиномијална и мастер теорема не важи.

Примена на познате алгоритме

Алгоритам Рекурентна једначина Време извршења Коментар
Бинарна претрага T(n)=T(n2)+O(1) O(logn) Примењена мастер теорема случај: c=logba, где је a=1,b=2,c=0,k=0[3]
Бинарно стабло претраге T(n)=2T(n2)+O(1) O(n) Примењена мастер теорема случај: c<logba где је a=2,b=2,c=0[3]
Оптимална претрага сортиране матрице T(n)=2T(n2)+O(logn) O(n) Примењена Akra-Bazzi theorem за p=1 и g(u)=log(u) да се добије Θ(2nlogn)
Сортирање спајањем T(n)=2T(n2)+O(n) O(nlogn) Примењена мастер теорема случај: c=logba, где је a=2,b=2,c=1,k=0

Референце

Шаблон:Reflist

Шаблон:Нормативна контрола

  1. Duke University, "Big-Oh for Recursive Functions: Recurrence Relations", -{R|http://www.cs.duke.edu/~ola/ap/recurrence.html}-
  2. Massachusetts Institute of Technology (MIT), "Master Theorem: Practice Problems and Solutions", -{R|http://www.csail.mit.edu/~thies/6.046-web/master.pdf}-Шаблон:Мртва веза
  3. 3,0 3,1 Dartmouth College, -{R|http://www.math.dartmouth.edu/archive/m19w03/public_html/Section5-2.pdf}-