Master Theorem je nástroj používaný na riešenie rekurentných vzťahov, ktoré vznikajú pri analýze algoritmov rozdeľuj a panuj. Hlavná veta poskytuje systematický spôsob riešenia rekurentných vzťahov vo forme:
T(n) = aT(n/b) + f(n)
- kde a, b a f(n) sú kladné funkcie a n je veľkosť problému. Hlavná veta poskytuje podmienky, aby riešenie recidívy bolo v tvare O(n^k) pre nejakú konštantu k, a dáva vzorec na určenie hodnoty k.
- Pokročilá verzia Master Theorem poskytuje všeobecnejšiu formu vety, ktorá dokáže zvládnuť rekurentné vzťahy, ktoré sú zložitejšie ako základná forma. Pokročilá verzia Master Theorem dokáže zvládnuť recidívy s viacerými pojmami a zložitejšími funkciami.
- Je dôležité poznamenať, že hlavná veta nie je použiteľná pre všetky recidívy a nemusí vždy poskytnúť presné riešenie danej recidívy. Je to však užitočný nástroj na analýzu časovej zložitosti algoritmov rozdeľuj a panuj a poskytuje dobrý východiskový bod pre riešenie zložitejších recidív.
Master Theorem sa používa na určenie doby chodu algoritmov (algoritmov rozdeľ a panuj) v zmysle asymptotických zápisov.
Zvážte problém, ktorý je vyriešený pomocou rekurzie.
function f (input x size n) if (n else divide x into a subproblems of size n/b call f recursively to solve each subproblem Combine the results of all sub-problems>
Vyššie uvedený algoritmus rozdeľuje problém na a podproblémy, každý veľkosti n/b, a rekurzívne ich riešiť, aby sa vypočítal problém a práca navyše vykonaná na probléme je daná f(n), t. j. čas na vytvorenie podproblémov a spojenie ich výsledkov vo vyššie uvedenom postupe.
Takže podľa hlavnej vety môže byť čas spustenia vyššie uvedeného algoritmu vyjadrený ako:
T(n) = aT(n/b) + f(n)>
kde n = veľkosť problému
a = počet čiastkových problémov v rekurzii a a>= 1
n/b = veľkosť každého čiastkového problému
f(n) = náklady na prácu vykonanú mimo rekurzívnych hovorov, ako je rozdelenie na podproblémy a náklady na ich kombinovanie na získanie riešenia.
Nie všetky rekurentné vzťahy je možné vyriešiť pomocou hlavnej vety, t.j
- T(n) nie je monotónne, napr.: T(n) = sin n
- f(n) nie je polynóm, napr.: T(n) = 2T(n/2) + 2n
Táto veta je pokročilou verziou hlavnej vety, ktorú možno použiť na určenie doby trvania algoritmov rozdelenia a panovania, ak má opakovanie nasledujúci tvar: -

kde n = veľkosť problému
a = počet čiastkových problémov v rekurzii a a>= 1
n/b = veľkosť každého čiastkového problému
b> 1, k>= 0 a p je reálne číslo.
potom
- ak a> bk, potom T(n) = θ(nlogba)
- ak a = bk, potom
(a) ak p> -1, potom T(n) = θ(nlogbalogp+1n)
(b) ak p = -1, potom T(n) = θ(nlogbaloglogn)
(c) ak p <-1, potom T(n) = θ(nlogba)
- Ak k, teda
(a) ak p>= 0, potom T(n) = θ(nklogpn)
(b) ak p < 0, potom T(n) = θ(nk)
Analýza časovej zložitosti –
- Príklad-1: Binárne vyhľadávanie – T(n) = T(n/2) + O(1)
a = 1, b = 2, k = 0 a p = 0
bk= 1. Takže a = bka p> -1 [Prípad 2.(a)]
T(n) = θ(nlogbalogp+1n)
T(n) = θ(logn) Príklad-2: Zlúčiť triedenie – T(n) = 2T(n/2) + O(n)
a = 2, b = 2, k = 1, p = 0
bk= 2. Takže a = bka p> -1 [Prípad 2.(a)]
T(n) = θ(nlogbalogp+1n)
T(n) = θ(nlogn) Príklad-3: T(n) = 3T(n/2) + n2
a = 3, b = 2, k = 2, p = 0
bk= 4. Takže, a k a p = 0 [Prípad 3.(a)]
T(n) = θ(nklogpn)
T(n) = θ(n2)
Príklad-4: T(n) = 3T(n/2) + log2n
a = 3, b = 2, k = 0, p = 2
bk= 1. Takže a> bk[Prípad 1]
T(n) = θ(nlogba)
T(n) = θ(nlog23)
Príklad-5: T(n) = 2T(n/2) + nlog2n
a = 2, b = 2, k = 1, p = 2
bk= 2. Takže a = bk[Prípad 2.(a)]
T(n) = θ(nlogbalogp+1n)
T(n) = θ(nlog22log3n)
T(n) = θ(nlog3n)
Príklad-6: T(n) = 2nT(n/2) + nn
Toto opakovanie nie je možné vyriešiť pomocou vyššie uvedenej metódy, pretože funkcia nie je v tvare T(n) = aT(n/b) + θ(nklogpn)
Cvičné otázky GATE –
- GATE-CS-2017 (Sada 2) | Otázka 56
- GATE IT 2008 | Otázka 42
- GATE CS 2009 | Otázka 35
Tu je niekoľko dôležitých bodov, ktoré treba mať na pamäti, pokiaľ ide o hlavnú vetu:
- Rekurencie rozdeľuj a panuj: Hlavná teoréma je špeciálne navrhnutá na riešenie vzťahov opakovania, ktoré vznikajú pri analýze algoritmov rozdeľuj a panuj.
- Forma rekurencie: Hlavná veta platí pre rekurentné vzťahy v tvare T(n) = aT(n/b) + f(n), kde a, b a f(n) sú kladné funkcie a n je veľkosť problému.
- Časová zložitosť: Hlavná veta poskytuje podmienky na to, aby riešenie recidívy bolo v tvare O(n^k) pre nejakú konštantu k a dáva vzorec na určenie hodnoty k.
- Pokročilá verzia: Pokročilá verzia Master Theorem poskytuje všeobecnejšiu formu vety, ktorá dokáže zvládnuť rekurentné vzťahy, ktoré sú zložitejšie ako základná forma.
- Obmedzenia: Hlavná veta nie je aplikovateľná na všetky recidívy a nemusí vždy poskytnúť presné riešenie danej recidívy.
- Užitočný nástroj: Napriek svojim obmedzeniam je Master Theorem užitočným nástrojom na analýzu časovej zložitosti algoritmov rozdeľuj a panuj a poskytuje dobrý východiskový bod pre riešenie zložitejších recidív.
- Doplnené o ďalšie techniky: V niektorých prípadoch môže byť potrebné doplniť hlavnú vetu o ďalšie techniky, ako je substitučná metóda alebo metóda iterácie, aby sa úplne vyriešil daný vzťah opakovania.