В этой статье мы докажем важную теорему об асимптотике большого класса «разделяек», в которых задача размера n делится на a задач в b раз меньшего размера, с «мерджем» за Θ(nc).
Мастер-теорема. Пусть имеется рекуррента:
T(n)={aT(bn)+Θ(nc),Θ(1),n>n0n≤n0
Тогда:
A. Если c>logba, то T(n)=Θ(nc).
B. Если c=logba, то T(n)=Θ(nclogn).
C. Если c<logba, то T(n)=Θ(nlogba).
Дерево рекурсии
Доказательство. Рассмотрим «дерево рекурсии» этого соотношения. В нём будет logbn уровней. На k-том уровне будет ak вершин, каждая из которых будет стоить (bkn)c операций. Просуммируем значения во всех вершинах по всем уровням:
T(n)=k=0∑logbnak(bkn)c=nck=0∑logbn(bca)k
A. Если c>logba, то ∑(bсa)k это сумма убывающей геометрической прогрессии, которая не зависит от n и просто равна какой-то константе. Значит, T(n)=Θ(nc).
B. Если c=logba, то
T(n)=nck=0∑logbn(bca)k=nck=0∑logbn1k=Θ(nclogbn)C. Если c<logba, то так как сумма прогрессии асимптотически эквивалентна своему старшему элементу,
T(n)=nck=0∑logbn(bca)k=Θ(nc(bca)logbn)=Θ(nc⋅ncalogbn)=Θ(alogbn)=Θ(nlogba)Примечание. Для более точных оценок асимптотики «мерджа» теорема ничего не говорит. Например, если мердж занимает Θ(nlogn) и задача разбивается каждый раз на две части, то асимптотика будет равна:
k=0∑lognnlog2kn=k=0∑lognn(logn−k)=nk=0∑lognk=Θ(nlog2n)
В то же время эта рекуррента под условия теоремы не попадает. Можно лишь получить неточные границы Ω(nlogn) и O(n1+ε), если подставить c=1 и c=1+ε соответственно. Заметим, что nlogn и nlog2n асимптотически меньше n1+ε, каким бы маленьким ε ни был.