Python算法设计:复杂度的分析

2018-10-1610:52:10数据结构与算法Comments3,122 views字数 803阅读模式

算法的效率可以在执行之前和执行之后的两个不同阶段进行分析。 它们如以 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/6793.html

  • 先验分析 - 这是一种算法的理论分析。通过假定所有其他因素(例如处理器速度)是恒定的并且对实现没有影响来测量算法的效率。
  • 后验分析 - 这是对算法的经验分析。 所选择的算法使用编程语言来实现。 然后在目标计算机上执行。 在此分析中,收集实际的统计数据,如运行时间和所需空间。

算法的复杂性

假设X是算法,n是输入数据的大小,算法X使用的时间和空间是决定X的效率的两个主要因素。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/6793.html

  • 时间因素 - 时间通过计算关键操作的数量来衡量,如排序算法中的比较。
  • 空间因素 - 空间通过计算算法所需的最大存储空间来测量。

算法f(n)的复杂性以算法n所需的运行时间和/或存储空间为输入数据的大小。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/6793.html

空间复杂性

算法的空间复杂度表示该算法在其生命周期中所需的存储空间量。 算法所需的空间等于以下两个组件的总和 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/6793.html

  • 固定部分,是存储某些数据和变量所需的空间,与问题的大小无关。 例如,使用的简单变量和常量,程序大小等
  • 变量部分是变量所需的空间,其大小取决于问题的大小。 例如,动态内存分配,递归堆栈空间等。

任何算法P的空间复杂度S(P)S(P)= C + SP(I),其中C是固定部分,S(I)是算法的变量部分,取决于实例特征I,下面是一个简单的例子,试图解释这个概念 -文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/6793.html

Algorithm: SUM(A, B)
Step 1 -  START
Step 2 -  C ← A + B + 10
Step 3 -  Stop

这里有三个变量ABC以及一个常量。 因此S(P)= 1 + 3。现在,空间取决于给定变量和常量类型的数据类型,并且它将相应地相乘。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/6793.html

时间复杂性

算法的时间复杂度表示算法运行完成所需的时间量。 时间要求可以定义为一个数值函数T(n),其中T(n)可以测量为步数,如果每步消耗的时间不变。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/6793.html

例如,添加两个n位整数需要n个步骤。 因此,总计算时间是T(n)= c * n,其中c是加两位所用的时间。 在这里,观察到T(n)随着输入尺寸的增加而线性增长。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/suanfa/6793.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/suanfa/6793.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定