想问问
F(n)=O(n²)g(n)=O(n)
证明g(n)不等于O(f(n))
答案给的证明说是令f(n)等于logn=O(n²)这样做,这样合理吗
这个时间复杂度的上界需要取最小上界吗?
请问有关时间复杂度的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- ZML. 2023-05-14 18:21关注
关于证明 $g(n) ≠ O(f(n))$ 的问题,我们可以采用反证法来证明。
假设 $g(n)=O(f(n))$,也就是存在正常数 $C$ 和 $n_0$ 使得对于所有的 $n≥n_0$,都有 $g(n)≤Cf(n)$ 成立。
那么,我们可以将 $f(n)=n^2$ 代入上式,即可得到:
$$g(n)≤Cn^2 \quad\quad\quad\quad\quad\quad(1)$$
又因为 $g(n)=O(n)$,因此存在正常数 $C_1$ 和 $n_1$ 使得对于所有的 $n≥n_1$,都有 $g(n)≤C_1n$ 成立。
那么,我们可以将 $C$ 替换为 $C_1n_0^2$,$C_1$ 替换为 $C/n_1$,以及 $n_0=\max{n_1,n_2}$,其中 $n_2$ 是使得 $f(n)=n^2$ 在 $g(n)≤Cf(n)$ 式中成立的 $n$ 值,则有:
$$g(n)≤C_1n_0≤\frac{C}{n_1}n_0^2$$
化简后可以得到:
$$n≤\frac{C}{n_1}n_0 $$
但由于 $n_0$ 和 $n_1$ 都是常数,因此当 $n$ 很大时,上式就不再成立。也就是说,假设不成立,因此 $g(n) ≠ O(f(n))$。
至于您提到的时间复杂度的上界需要取最小上界吗,一般我们会取最紧的上界。这是因为如果一个算法复杂度的上界太宽松的话,我们无法准确地判断算法的复杂度情况,也无法对算法进行有效的优化。因此,我们通常会选取最紧的上界,以便更加准确地评估算法的复杂度。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
- ¥50 comsol温度场仿真无法模拟微米级激光光斑
- ¥15 上传图片时提交的存储类型
- ¥15 VB.NET如何绘制倾斜的椭圆
- ¥15 arbotix没有/cmd_vel话题
- ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
- ¥15 用C语言怎么判断字符串的输入是否符合设定?
- ¥15 通信专业本科生论文选这两个哪个方向好研究呀
- ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
- ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?