Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 理解主定理_Algorithm_Master Theorem - Fatal编程技术网

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)
    的重复出现问题
  • a
    应大于或等于1。这意味着问题至少被简化为一个更小的子问题一次。至少需要一个递归
  • b
    应大于1。这意味着在每次递归时,问题的规模都会缩小到更小的规模。如果
    b
    不大于1,则意味着我们的子问题的大小不是更小
  • 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
主定理的三种情况 案例1: 现在,让我们假设操作成本在每个级别上都以一个显著的因数增加,当我们到达叶子级别时,
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))



如果您对更详细的阅读和练习示例感兴趣,请访问我的博客

为什么投票关闭此主题,而对该主题投了反对票?这个话题不是离题的。。。更好地阅读常见问题。。。我的问题涉及软件算法类…很好的解释。虽然发现了一个讲座,其中的解释更详细,但很容易理解。这是那篇文章>>