2017-09-14 445 views
-4

做一个任务,并被困在了几个问题。为什么主定理不能适用

  1. T(N)= T(2π/ 5)+ N
  2. T(N)= T(2π/ 3)+ T(N/3)+ N
  3. T(N)= T(n-2)+ n

有些东西告诉我他们所有的定理都不能应用。但为什么?他们的上限是什么(大哦)?

+1

我投票结束这个问题作为题外话题,因为它的任务没有尝试和倾倒在这里。 – nullpointer

+0

忘记所有的大师定理和数学的东西,对于第三个,你可以通过常识或者通过替换的方法来解决它,你发现的答案是有意义的,因为子问题几乎不会被减少 – shole

+0

这是一个任务,是的。但我确实尝试了尝试,所以我说我相信这个定理不起作用。我来指导和理解,而不是被嘲笑。 –

回答

0

硕士定理可以应用到以下形式的任何复发

T(n)=在(N/B)+ O(N d

其中a, b和d是常数。 (还有一些其他的表达方式,但是上面的一个处理更常见的情况)。具体而言,这意味着

  • 问题大小必须由一个常数因子收缩,
  • 子问题必须全部具有相同的尺寸,
  • 必须有子问题的恒定数量,并
  • 的加性项必须是一个多项式。

这些标准排除了第二次重复(次级问题没有相同的大小),第三次(问题大小必须缩小一个常数因子)。然而,第一次复发符合所有这四个标准。它可能有助于重写为

T(n)= T(n /(5/2))+ n。

在此基础上,你在什么情况下掌握了主定理,重复解决了什么问题?

+0

对于(2)的问题,我看到它不起作用,因为有2个T,他们都有尊敬的2/3和1/3。我不知道该从哪里出发 –

+0

只有在所有子问题具有相同的大小时,主定理才适用,因此只要您看到具有多个子问题大小的事物,就可以排除应用主定理,尽管您可以解决以其他方式重现。 – templatetypedef

0

主方法仅适用于以下类型的重复发生。

T(n) = aT(n/b) + f(n) where a >= 1 and b > 1 

对于问题,

1. T(N)= T(2π/ 5)+ N

@templatetypedef已修改此递推方程,以适应主定理如

T(n) = T(n/(5/2)) + n 

我想你可以从这里解决它。

2. T(N)= T(2π/ 3)+ T(N/3)+ N

显然,这不能直接由主定理解决。我们应该尝试构建递归树并查看。递归树形图的递归调用树和工作在每次调用完成的工作量。 以下是从here

enter image description here

所以拍摄的图像,这减少至O(N * log n)的

3. T(N)= T(N-2)+ N

显然这不能直接由主定理解决。 有一个为减法和征服类型派生的修改公式。

这个link可能是有用的。

对于形式的复发,

T(n) = aT(n-b) + f(n) 

where n > 1, a>0, b>0 

如果F(N)是O(n ķ)和k> = 0,则

  1. 如果< 1则T(N )= O(N ķ
  2. 如果= 1,则T(n)的= O(N K + 1
  3. 如果a> 1,则T(n)的= O(N ķ *一个N/B

我想你可以从这里解决。

希望它有帮助!

相关问题