algorithm - 渐进地比较函数

标签 algorithm math asymptotic-complexity

我有两个函数:F1(n)=2n+20 和 F2(n)=n+1。我必须证明哪个更好。

我们的讲师解决了类似的问题。给定 F1(n)=n2 和 F2(n)=2n+20,他做了:

F2(n)/F1(n)=(2/n)+(20/n2)

他说它总是小于 22,因此 2n+20 更好。

我的疑问是如何解决这些函数之间的比较类型。我已经完成了之前在这里提出的所有问题,但不太明白。

另外如果给定(an2+bn+c)=O(n2),请帮忙选择常量c1, c2, n0 这样

c1g(n) ≤ f(n) ≤ c2g(n).

最佳答案

正如其中一条评论所述,首先需要定义什么是更好的复杂性。

您的讲师可能意味着复杂性 C(n) 优于 K(n)当且仅当 C(n) << K(n) (或使用朗道符号 C(n) = o(K(n)) )作为 n -> +Inf .

如果要比较两个复杂度F1(n)F2(n) , 一种方法是检查商 F2(n)/F1(n)收敛,如果是,收敛到哪个值。与 F2(n) ~ nF1(n) ~ n^2 , F2(n)/F1(n)收敛于0因此 F1(n)主宰F2(n)走向无穷大。你会说 F1(n)鉴于较早采用的语言约定更好。

请注意,“它 ( F2(n)/F1(n)) 总是小于 22,并且告诉我们 2n+20 更好不是渐近分析的正确方法,以防万一支配关系(o(.) 或等效的 << )(我怀疑你的讲师针对上面定义的 F1(n)F2(n) 说过。)。

在你的最后一个问题中 - 你能否定义 f(n)g(n)

关于algorithm - 渐进地比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49092662/

相关文章:

algorithm - 如何存储未知大小的顺序呈现集合的样本?

javascript - 使用 atan2() 向鼠标方向旋转一个 div

c - 寻找下一个更大元素线性时间的渐近复杂度如何?

algorithm - 用于设计 AI 的蒙特卡罗方法示例

将方程转换为 C 程序

c - 返回二叉搜索树的平均深度的函数

algorithm - 如何求解递归复杂度T(n) = T(n/3)+T(2n/3)+cn

algorithm - 大 O(n logn) 并不优于 O(n^2)

javascript - 如果数组的数组中不存在数组,则推送数组

ruby - 字符串中的回文数