`

时间复杂度和空间复杂度的概念

阅读更多
算法复杂度 分为时间复杂度和空间复杂度。其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。
时间复杂度
1.时间频度

  一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
2.计算方法

  1. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))

  分析:随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。

  2. 在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T(n)的同数量级(它的同数量级有以下:1,Log2n ,n ,nLog2n ,n的平方,n的三次方,2的n次方,n!),找出后,f(n)=该数量级,若T(n)/f(n)求极限可得到一常数c,则时间复杂度 T(n)=O(f(n))

  例:算法:

view plaincopy to clipboardprint?

   1. for(i=1;i<=n;++i) {  
   2.     for(j=1;j<=n;++j) {  
   3.     c[i][j]=0; //该步骤属于基本操作 执行次数:n的平方 次  
   4.     for(k=1;k<=n;++k){ 
   5.                 c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //该步骤属于基本操作 执行次数:n的三次方 次  
   6.             }    
   7.  }  
   8. } 

for(i=1;i<=n;++i) { for(j=1;j<=n;++j) {    c[i][j]=0; //该步骤属于基本操作 执行次数:n的平方 次    for(k=1;k<=n;++k){ c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //该步骤属于基本操作 执行次数:n的三次方 次 }  } }

则有 T(n)= n的平方+n的三次方,根据上面括号里的同数量级,我们可以确定 n的三次方 为T(n)的同数量级

  则有f(n)= n的三次方,然后根据T(n)/f(n)求极限可得到常数c

  则该算法的 时间复杂度:T(n)=O(n的三次方)
3.分类

  按数量级递增排列,常见的时间复杂度有:

  常数阶O(1),对数阶O(log2n),线性阶O(n),

  线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),...,

  k次方阶O(nk), 指数阶O(2n) 。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
空间复杂度

  与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作:

  S(n)=O(f(n))

  我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。

Floyd:求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。

  Dijkstra:求单源、无负权的最短路。时效性较好,时间复杂度O(V^2)。可以用堆优化。

  Bellman-Ford:求单源最短路,可以判断有无负权回路(若有,则不存在最短路),时效性较好,时间复杂度O(VE)。

  SPFA:是Bellman-Ford的队列优化,时效性相对好,时间复杂度O(kE)。(k<<V)。

  宽搜:求单源无权最短路。矩阵记录法时间复杂度O(V^2);边表记录法时间复杂度O(kE)。



  稠密图单源无负权最短路:Dijkstra。

  稠密图单源有负权最短路:SPFA。

  稀疏图单源最短路:SPFA或Bellman-Ford。

  多源无负权最短路:Floyd。

  多源无权最短路:宽搜。
分享到:
评论

相关推荐

    算法的时间复杂度和空间复杂度

    相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义)

    数据结构时间复杂度和空间复杂度.pdf

    这是一个关于编程的资源,旨在帮助学习者深入了解和掌握相关概念和技能。资源提供了多样化的内容,包括详细的教程、示例代码、实践项目和练习题。它适用于各种级别的学习者,无论是初学者、中级学习者还是高级学习者...

    NOIP普及组 提高组 CSP-J CSP-S初赛 算法的时间复杂度部分题目.pdf

    从给定的文件信息中,我们可以看到该文件主要关注算法的时间复杂度,涉及到算法设计、递归式、主定理等概念。下面,我们将对这些知识点进行详细的解释和分析。 一、算法时间复杂度 算法时间复杂度是指算法执行时间...

    算法基础:算法概念,时间复杂度 ,空间复杂度

    算法基础

    Python算法中的时间复杂度问题

    在实现算法的时候,通常会从两方面考虑算法的复杂度,即时间复杂度和空间复杂度。顾名思义,时间复杂度用于度量算法的计算工作量,空间复杂度用于度量算法占用的内存空间。 本文将从时间复杂度的概念出发,结合实际...

    算法设计与分析:05 算法分析与问题的计算复杂度.pdf

    计算复杂度可以分为时间复杂度和空间复杂度两种。时间复杂度衡量了算法执行的时间,空间复杂度衡量了算法占用的存储空间。 三、时间复杂度 时间复杂度是算法执行的时间,它衡量了算法执行的速度。时间复杂度可以...

    快速排序与归并排序的时间复杂度分析

    排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的...本文主要介绍快速排序算法和归并排序算法的基本概念、原理以及具体的实现方法,并对这两种排序算法的时间复杂度进行分析。

    数据结构习题及答案

    数据、数据元素、数据结构、数据类型、抽象数据类型、逻辑结构和存储结构、算法及其设计原则、算法五个要素、 问题的规模、语句频度、时间复杂度、空间复杂度。 2.理解算法五个要素的确切含义 3.掌握计算语句频度和...

    码头扩建问题

    实验目的:通过实验理解算法的概念、算法的表示、算法的时间复杂度和空间复杂度分析;运用熟悉的编程工具对码头扩建问题进行求解,初步学会分析算法的时间复杂度 某市有一码头,每次仅容一辆船停泊装卸货,由于经常...

    第二章 2.2 算法时间复杂度例题讲解

    时间复杂度和空间复杂度 这是任何AI工程师必须要深入理解的概念。对于每一个设计出来的算法都需要从这两个方面来分析 O(N), O(N^2) : o notation #%% int a = 0, b = 0; for (i = 0; i &lt; N; i++) { # O(N)+O(N)=...

    算法设计与分析C++语言描述(陈慧南版)课后答案

    本资源主要介绍了算法设计与分析的基本概念和技术,通过C++语言描述,涵盖了算法设计的基本步骤、时间复杂度和空间复杂度的分析、算法的正确性证明等方面的知识点。 知识点1:算法设计的基本步骤 * 分析问题的需求...

    数据结构 存储表示 数据元素

    本章的重点是了解数据结构的逻辑结构、存储结构、...需要达到&lt;领会&gt;层次的内容有算法、算法的时间复杂度和空间复杂度、最坏的和平均时间复杂度等概念,算法描述和算法分析的方法、对一般的算法要能分析出时间复杂度。

    《数据结构习题解析与上机指导》参考答案.doc

    2. 选择题还考察了算法设计和分析的基本概念,如时间复杂度、空间复杂度、算法的正确性、可读性、健壮性、效率等。这些概念是算法设计和分析的基础,对于算法的设计和优化非常重要。 二、填空题 1. 填空题考察了...

    论文研究-模糊概念图知识表示及其推理机制研究.pdf

    根据改进的模糊概念图,重点研究了模糊概念图的匹配推理机制,设计了基于语义约束的匹配推理算法,并定量分析了算法的时间复杂度和空间复杂度。经过在《计算机文化基础》课程中实验测试,算法反映了考生主观题的答卷情况...

    论文研究-主观题中模糊含权概念图匹配问题研究.pdf

    根据概念类型格上概念间语义距离的概念和传统概念图的投影匹配思想,设计了模糊含权概念图中基于语义距离的投影匹配算法,并分析了算法的时间复杂度和空间复杂度。经过实验分析,该算法自动阅卷的正确性大约为90%,解决...

    算法设计与分析:第2章 算法分析基础.ppt

    在算法分析中,需要掌握算法复杂度概念,包括时间复杂度和空间复杂度。 时间复杂度是指算法执行所需的时间,以时间单位来衡量。空间复杂度是指算法执行所需的存储空间,以存储单元来衡量。 2.2 渐近表示法 渐近...

    分类超曲面算法复杂度研究

    分类超曲面算法是一种简单的基于覆盖的分类算法.实验证明该算法具有分类...其次,分析了算法的时间复杂度和空间复杂度.最后,给出了无矛盾样本集的概念,并证明当输入样本集是有限无矛盾样本集的条件下,算法一定是收敛的.

    数据结构(13).doc

    一、课程内容 1.1 基本概念和术语(0.5课时) 1.2 学习... 算法的描述和分析,要求达到"领会"层次 3.1 算法、算法的时间复杂度和空间复杂度、最坏的和平均的时间复杂度等概念 3.2 算法的时间复杂度不仅仅依赖于问题的

    二级公共基础资料1.1 算法的复杂度

    算法复杂度包括时间复杂度和空间复杂度。 名称 描述 时间复杂度 是指执行算法所需要的计算工作量 空间复杂度 是指执行这个算法所需要的内存空间 1.2 逻辑结构和存储结构 1.逻辑结构 数据的逻辑结构是对数据元素之间...

    全国计算机二级教材pdf

    算法复杂度的概念和意义(时间复杂度与空间复杂度)。 2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与 非线性结构的概念。 3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4.栈...

Global site tag (gtag.js) - Google Analytics