--Student0809-- 2023-05-14 14:33 采纳率: 0%
浏览 12

请问有关时间复杂度的问题

想问问
F(n)=O(n²)g(n)=O(n)
证明g(n)不等于O(f(n))
答案给的证明说是令f(n)等于logn=O(n²)这样做,这样合理吗
这个时间复杂度的上界需要取最小上界吗?

  • 写回答

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))$。

    至于您提到的时间复杂度的上界需要取最小上界吗,一般我们会取最紧的上界。这是因为如果一个算法复杂度的上界太宽松的话,我们无法准确地判断算法的复杂度情况,也无法对算法进行有效的优化。因此,我们通常会选取最紧的上界,以便更加准确地评估算法的复杂度。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月14日

悬赏问题

  • ¥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字节传输吗?