algorithm - 进一步简化并找到 c1 和 c2 (Big Theta)
问题描述
我试图找到 c1 和 c2,但在继续前进时遇到了一些困难。
这是我已经走了多远:
(21n^2 + 97n + 26) (log(1024n^2 + 100)) ∈ θ(n^2 log n)
不知道如何进一步扩展它并获得我的 c1 和 c2。
谢谢。
解决方案
对于某些 epsilon > 0 和 epsilon < 21*2,您可以将 c1 和 c2 设为 21*2 + epsilon 和 21*2 - epsilon。由于许多值都有效,因此请选择一个。例如,epsilon = 1 满足要求。因此,您可以将 43 和 41 作为常数因子。
为了证明这些将起作用,您计算
(21n^2 + 97n + 26) (log(1024n^2 + 100)) / (n^2ln(n)) --> 21*2
那么 limit 的定义告诉你有 N,这取决于你选择的 epsilon,这样对于所有 n > N,你的商将在 21*2 - epsilon 和 21*2 + epsilon 之间。所以,
(21*2 - epsilon) n^2ln(n) <= (21n^2 + 97n + 26) (log(1024n^2 + 100)) <= (21*2 + epsilon)n^2ln(n)
对于所有 n > N。
人们所做的并不是进一步扩展,而是删除无关紧要的术语,例如
21n^2ln(1024n^2)
并进一步
21*2n^2ln(n)
请注意如何根据 ln(1024n^2)=2ln(n)+ln(1024) 删除 1024。
整个缩减不是正式的证明,只是获得候选 21*2n^2ln(n) 的启发式方法,然后通过计算上述限制来验证它是否可以工作。
还要注意链接中表格中关于限制定义的列。这些限制(或 limsups)的值告诉您在正式定义中使用哪些常量。
审查限制:
记住极限的定义
lim F(n) = a
是对于所有 epsilon > 0 有 N 这样对于所有 n > N 你将有
a - epsilon <= F(n) <= a + epsilon
如果 F(n) 是分数 f(n)/g(n) 就像我们上面的分数,那么这个不等式意味着
(a - epsilon)g(n) <= f(n) <= (a + epsilon)g(n)
这就是极限的定义与不等式中的常数相关的方式。
推荐阅读
- node.js - 在 Lambda 中调用 IAM API 超时
- c++ - 在 C++ 中将 Slice 对象显式序列化为字符串或 ostream
- sql - 在运行总和中填充空值
- php - 制作图片库但为什么会出现此错误?
- python - 如何在 Django 中设置通知系统?
- amazon-web-services - 如何使用 MS Outlook 等电子邮件客户端接收来自 AWS SES 的电子邮件?
- architecture - 设计应用架构时如何选择DB?
- python - 单击一个按钮并更改 MainWindow
- powershell - 删除权限时自动回答是
- java - Junit 与 lambdas 和流图