算法复杂度的渐近表示法(详细版)

一个算法的时间复杂度,指算法运行的时间。

假设数据输入规模是n,算法的复杂度可以表示为f(n)的函数

一。大O记号

假设f(n)和g(n)的定义域是非负整数,存在两个正整数c和n0,使得n>n0的时候,f(n)c*g(n),则f(n)=O(g(n))。可见O(g(n))可以表示算法运行时间的上界。O(g(n))表示的函数集合的函数是阶数不超过g(n)的函数。

例如:f(n)=2*n+2=O(n)

证明:当n>3的时候,2*n +2<3n,所以可选n0=3,c=3,则n>n0的时候,f(n)<c*(n),所以f(n)=O(n)。

现在再证明f(n)=2*n+2=O(n^2)

证明:当n>2的时候,2*n+2<2*n^2,所以可选n0=2,c=2,则n>n0的时候,f(n)<c*(n^2),所以f(n)=O(n^2)。

同理可证f(n)=O(n^a),a>1

二。记号

记号与大O记号相反,他可以表示算法运行时间的下界。(g(n))表示的函数集合的函数是所有阶数超过g(n)的函数。

例如:f(n)=2*n^2+3*n+2=(n^2)

证明:当n>4的时候,2*n^2+3*n+2>n^2,所以可选n0=4,c=1,则n>n0的时候,f(n)>c*(n^2),所以f(n)=(n^2)

同理可证f(n)=(n),f(n)=(1)

三。Θ记号

Θ记号介于大O记号和记号之间。他表示,存在正常数c1,c2,n0,当n>n0的时候,c1*g(n)≤f(n)≤c2*g(n),则f(n)=Θ(g(n))。他表示所有阶数与g(n)相同的函数集合。

四。小o记号

f(n)=o(g(n))当且仅当f(n)=O(g(n))且f(n)(g(n))。也就是说小o记号可以表示时间复杂度的上界,但是一定不等于下界。

五。例子

假设f(n)=2n^2+3n+5,

则f(n)=O(n^2)或者f(n) = O(n^3)或者f(n)=O(n^4)或者……

f(n)=(n^2)或者f(n)=(n)或者f(n)=(1)

f(n)=Θ(n^2)

f(n) = o(n^3)或者f(n)=o(n^4)或者f(n)=o(n^5)或者……

注:n^2表示n的平方,以此类推。

  • 22
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络(Convolutional Neural Network, CNN)是一种常用的深度学习模型,主要用于图像处理和计算机视觉任务。下面是用公式表示卷积神经网络的算法复杂度的一种方法: 1. 前向传播的复杂度: - 假设输入特征图的尺寸为 W×H,卷积核的尺寸为 F×F,卷积层的深度为 D,卷积层的数量为 M。 - 假设每个卷积操作的计算复杂度为 O(F^2)。 - 在每个卷积层中,需要进行 W×H 个卷积操作。 - 因此,每个卷积层的计算复杂度为 O(W×H×F^2)。 - 考虑到有 M 个卷积层,整体的前向传播复杂度为 O(M×W×H×F^2)。 2. 反向传播的复杂度: - 反向传播过程中,需要计算梯度并更新网络参数。 - 假设每个参数更新操作的计算复杂度为 O(1)。 - 在每个卷积层中,需要进行 W×H 个参数更新操作。 - 因此,每个卷积层的参数更新复杂度为 O(W×H)。 - 考虑到有 M 个卷积层,整体的反向传播复杂度为 O(M×W×H)。 3. 整体复杂度: - 卷积神经网络的训练过程通常是前向传播和反向传播交替进行,直到达到收敛条件。 - 假设迭代次数为 T。 - 因此,整体的训练复杂度为 O(T×M×W×H×F^2)。 需要注意的是,以上分析是基于对卷积操作和参数更新操作的简化假设。实际情况可能因网络结构、数据集大小和训练参数等因素而有所不同。因此,上述分析只是对卷积神经网络算法复杂度的一种估计,实际评估时应结合具体问题和实验结果进行综合考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值