Algorithm 理解主定理
一般形式:Algorithm 理解主定理,algorithm,master-theorem,Algorithm,Master Theorem,一般形式:T(n)=aT(n/b)+f(n) 所以我必须比较n^logb(a)和f(n) 如果n^logbaf(n)是情况1和T(n)=Θ(n^logb(a)) 如果n^logbaf(n)是情况2和T(n)=Θ((n^logb(a))(logb(a)) 对吗?还是我误解了什么 那么案例3呢?什么时候适用?我想你误解了。 如果n^logba>f(n)是情况1,T(n)=Θ(n^logb(a)) 在这里,你不应该担心f(n),因此,你得到的是T(n)=Θ(n^logb(a))。 f(n)是T(n)的
T(n)=aT(n/b)+f(n)
所以我必须比较n^logb(a)和f(n)
如果n^logba
f(n)
是情况1和T(n)=Θ(n^logb(a))
如果n^logba
f(n)
是情况2和T(n)=Θ((n^logb(a))(logb(a))
对吗?还是我误解了什么
那么案例3呢?什么时候适用?我想你误解了。 如果n^logba>f(n)是情况1,T(n)=Θ(n^logb(a)) 在这里,你不应该担心f(n),因此,你得到的是T(n)=Θ(n^logb(a))。 f(n)是T(n)的一部分,如果得到结果T(n),那么该值将包含f(n)。 所以,没有必要考虑这一部分。 如果您不清楚,请告诉我。解决复发的主定理 反复出现在解决复杂问题的分而治之策略中 它解决了什么问题?
- 它解决了形式
的重复出现问题T(n)=aT(n/b)+f(n)
应大于或等于1。这意味着问题至少被简化为一个更小的子问题一次。至少需要一个递归a
应大于1。这意味着在每次递归时,问题的规模都会缩小到更小的规模。如果b
不大于1,则意味着我们的子问题的大小不是更小b
对于相对较大的f(n)
值必须为正值n
n
的问题需要解决。在每个步骤中,问题可分为a
子问题,每个子问题的大小较小,其中大小减小了b
上述简单的表述意味着大小n
的问题可分为大小相对较小的a
子问题n/b
同样,上面的图表显示,当我们多次划分问题时,每个子问题都会非常小,可以在固定的时间内解决
对于下面的推导,考虑<代码> log <代码>为基础<代码> b<代码> < < 让我们假设
H
是树的高度,然后H=logn
。叶数=a^logn
- 第1级完成的总工作量:
f(n)
- 第2级完成的总工作量:
a*f(n/b)
- 一级完成的总工作量:
a*a*f(n/b2)
- 最后一级完成的总工作量:
。这等于叶数*θ(1)
n^loga
f(n)
的值变得多项式小于n^loga
。然后,总体运行时间将主要由最后一级的成本决定。因此T(n)=θ(n^loga)
案例2:
让我们假设每个级别的操作成本大致相等。在这种情况下,f(n)
大致等于n^loga
。因此,总运行时间将是总级别数的f(n)
倍
T(n)=θ(n^loga*logn)
其中k
可以是=0
。其中,logn
是k>=0的树的高度
案例3:
让我们假设每个级别上的操作成本在每个级别上都减少了一个显著的因素,当我们到达叶子级别时,f(n)
的值变得多项式大于n^loga
。那么,总体运行时间将主要取决于第一级的成本。因此T(n)=θ(f(n))
如果您对更详细的阅读和练习示例感兴趣,请访问我的博客为什么投票关闭此主题,而对该主题投了反对票?这个话题不是离题的。。。更好地阅读常见问题。。。我的问题涉及软件算法类…很好的解释。虽然发现了一个讲座,其中的解释更详细,但很容易理解。这是那篇文章>>