当前位置: 首页 > 文档资料 > Python 数据结构 >

Algorithm Analysis

优质
小牛编辑
136浏览
2023-12-01

算法分析

算法的效率可以在实现之前和实现之后的两个不同阶段进行分析。 他们是以下 -

  • A Priori Analysis - 这是对算法的理论分析。 通过假设所有其他因素(例如,处理器速度)是恒定的并且对实现没有影响来测量算法的效率。

  • A Posterior Analysis - 这是一种算法的实证分析。 所选算法使用编程语言实现。 然后在目标计算机上执行此操作。 在此分析中,收集了所需的运行时间和空间等实际统计数据。

算法复杂度

假设X是算法, n是输入数据的大小,算法X使用的时间和空间是决定X效率的两个主要因素。

  • Time Factor - 时间是通过计算关键操作的数量来测量的,例如排序算法中的比较。

  • Space Factor - 通过计算算法所需的最大内存空间来测量空间。

算法f(n)的复杂性给出算法所需的运行时间和/或存储空间,以n为输入数据的大小。

空间复杂性

算法的空间复杂度表示算法在其生命周期中所需的存储空间量。 算法所需的空间等于以下两个组件的总和 -

  • 固定部分,是存储某些数据和变量所需的空间,与问题的大小无关。 例如,使用的简单变量和常量,程序大小等。

  • 变量部分是变量所需的空间,其大小取决于问题的大小。 例如,动态内存分配,递归堆栈空间等。

任何算法P的空间复杂度S(P)是S(P)= C + SP(I),其中C是固定部分,S(I)是算法的可变部分,它取决于实例特征I.是一个试图解释这个概念的简单例子 -

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

这里我们有三个变量A,B和C以及一个常数。 因此,S(P)= 1 + 3.现在,空间取决于给定变量和常量类型的数据类型,并且它将相应地相乘。

时间复杂度 (Time Complexity)

算法的时间复杂度表示算法运行完成所需的时间量。 时间要求可以定义为数值函数T(n),其中T(n)可以作为步数来测量,条件是每个步骤消耗恒定的时间。

例如,添加两个n位整数需要n步。 因此,总计算时间是T(n)= c * n,其中c是添加两个比特所花费的时间。 在这里,我们观察到T(n)随着输入大小的增加而线性增长。