algorithm - 如何使用数学归纳法证明a_k > 0的每一个k次多项式都属于theta(n^k)?
问题描述
问题如下:证明每个 k 次多项式 p(n) = a_k n^k + a_k-1 n^k-1 +... + a_0 且 a_k> 0,属于 theta(n^k )。
我不确定从哪里开始。
解决方案
为了证明每个 k 次多项式都是 O(n^k),我们必须证明存在常数 n0 和 c,使得对于 n > n0,a_k n^k + a_k-1 n^k-1 + … + a_0 <= c * n^k。如果我们选择 c = |a_k| + |a_k-1| + … + |a_0|,那么很容易验证 RHS 必须大于或等于 LHS;不可能,因为 LHS 中的每个项都对应于 RHS 中的一个项,该项必须大于或等于它。
为了证明每个 k 次多项式都是 Omega(n^k),我们必须证明存在常数 n0 和 c,使得对于 n > n0,a_k n^k + a_k-1 n^k-1 + … + a_0 >= c * n^k。为了证明这一点,取 c = a_k / 2。然后我们可以从两边减去 a_k/2 n^k 得到 a_k/2 n^k + a_k-1 n^k-1 + … + a_0 >= 0。这多项式至多有 k 个实根;令 n0 为多项式的最大实根。然后,对于所有 n > n0,多项式必须保持非负或非正。假设它仍然是非正数。然后 a_k/2 n^k <= a_k-1 n^k-1 + … + a_0。除以 n^k 得到 a_k/2 <= a_k-1 / n + … a_0 / n^k。这个不等式的 RHS 是一个严格递减的函数,随着 n 无限制地增加,它接近于零;因此,这种不等式一般不能成立。所以,多项式在最大根 n0 之后保持非负;因此,原始多项式被确认为 Omega(n^k),其中 c = a_k/2 且 n0 等于多项式 a_k/2 n^k + … + a_0 的最大根。
因为每个多项式同时为 O(n^k) 和 Omega(n^k),因此它也是 Theta(n^k)。
推荐阅读
- python - 尽管在 cmd 中使用 pip3 install,导入 sklearn 失败
- apache-spark - 从另一个具有所需特定列的 rdd 创建 rdd
- python - 与 PRAW 相比,如何正确处理 Async PRAW 中的多个流和异常?
- scripting - 如何在 Adobe CEP 中切换 Premiere Pro 脚本切换当前序列的播放/暂停?
- ruby-on-rails - 管理 gem 不允许查看用户
- jquery - ASP.net Core 颜色中的 jQuery PrintThis 不可见
- c - C 声明语法
- java - Java,Statements,对象创建是声明语句还是表达式语句?
- react-native - 当视图位于 React Native 中的另一个视图之上时,任何单击或按下功能都会停止工作
- cs50 - CS50:Check50 没有得到任何输出。程序对我有用