我有一个函数 $ f(m,n)$ 时间复杂度 $ t(m,n)$以复制关系为特征

$$ \ begin {aligh} t(m,\ n)&= 2t \ bigl(\ frac {m} {2},\ frac {n} {2} \ bigr)+ c_0 \ log n + c_1。\\ t(m,\ 1)&= t \ bigl(\ frac {m} {2},1 \ bigr)+ c_1 \\ t(0,\ n)&= 1 \\ t(m,\ 0)&= 1 \结束{align} $$

我可以看到for for for for for for span class=“math-container”> $ m $ ,这是 $ o(n)$ ,对于固定 $ n $ ,这是 $ o(m)$ 。但我没有看到我如何获得表达的表达,这些表达式在变量 $ m $ $ n$

如何解决这个问题,以找到 $ m $ $ n $

有帮助吗?

解决方案

为简单起见, $ m= 2 ^ $ $ n= 2 ^ b $ $ c_0= 1 $ $ c_1= 0 $ ,并且基本情况是 $ t(1,\ cdot)= t(\ cdot,1)= 0 $ 。然后 $$ t(2 ^ a,2 ^ b)= 2t(2 ^ {a-1},2 ^ {b-1})+ b= 4t(2 ^ {a-2},2 ^ {b-2}) + B + 2(B-1)=Cdots $$ Summardands的数量是 $ c=min(a,b)$ ,并使用我们获得的这个表示法 \ begin {align} t(2 ^ a,2 ^ b)&= b + 2(b-1)+ 4(b-2)+ cdots + 2 ^ {c-1}(b-c + 1)\\&= (1 + 2 + \ cdots + 2 ^ {c-1})b - 2 ^ 1(1) - 2 ^ 2(2) - \ cdots - 2 ^ {c-1}(c-1)\\&= (2 ^ C-1)B - 2 ^ C C + 2(2 ^ C-1)\\&= 2 ^ C(B + 2-C) - (B + 2)。 \结束{对齐} 换句话说, $$ t(2 ^ a,2 ^ b)= \ begin {案例} 2 ^ {b + 1} - (b + 2)&\ text {if} a \ geq b,\\ (b + 2)(2 ^ a-1) - a2 ^ a&\ text {if} b \ geq a。 \结束{案例} $$ 当<跨越类=“math-container”> $ m \ geq n $ 时,这会给 $ t(m,n)=theta(n)$ ,当<跨度类=“math-container”> $ n> m $ 时,我们得到 $ t(m,n)=theta(m \日志(n / m)+ m)$

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top