算法复杂度分析

本文主要探讨了算法的时间复杂度和空间复杂度。时间复杂度反映了算法执行时间随输入规模增长的关系,通常通过分析基本操作的执行次数来评估。常见的时间复杂度有O(1)、O(log2(n))、O(n)、O(nlog2(n))、O(n2)等,其中O(n2)及以上被认为是效率较低的。空间复杂度则是算法在运行过程中临时占用存储空间的度量。算法的空间复杂度与问题规模n有关,可以是O(1)、O(log2(n))、O(n)等。文章列举了不同复杂度级别的算法示例,并强调在算法设计时应关注时间和空间效率。
摘要由CSDN通过智能技术生成

欢迎各位童鞋交流和指教!

--------------------------------------------------------------------------------------------------------

1. 前言

         我不能创造的,我也不理解(What I cannot create, I do not understand)。——理查德·费曼( Richard Feynman

 

理解是创造的基础,最近看一些大牛给的经验,少读多想(花费少量时间理解,多花时间思考)、带着批判性的眼光、有疑问有想法要立刻记录。有的文章要精读、有的文章要略读,大部分文章都是要略读的,大致看看做了什么、结果怎么样、比之前的有哪些改进、有哪些不足,精读的是一些非常经典和top、理论分析、指导手册等。

最近在大面积的阅读论文,因为时间比较紧,想要做中文词的语义关系分类,如:同义词、反义词、上下位词和整体与部分词,想用深度学习来做,除却词典的方法,目前有比较清晰明确的想法是有关于词向量的改进方法(但还有待完善,再完善一下就去做实验),还有看到有人做一词多义、词义消歧、语义关系分类(与这个类似的),最近做的一个实验就是cnn实现文本分类的,用tensorflow和theano实现的(理解代码理解了好久,接下来会发该学习笔记),不知道大家有没有了解过词语义关系分类这方面的知识或者有什么想法,可以和我交流下吗?

         这篇笔记比较杂,记录的是一些琐碎的知识。

         人们常说,万事开头难,在入门的这一段时间我有非常深刻的感受,很多知识都是细枝末节、很琐碎的,但是它对于有些问题的理解有关键的作用。

而且还有一个很深的感触是,对于一个大块的知识,学习不是一次就能结束的,第一次学习有可能你觉得你理解了,还有可能你没看懂;但是当你隔几天想总结一下,却发现之前在某些细节上的理解有问题,你感觉这下我完全理解啦;但是当你再隔几天,学习其他的知识,忽然反应过来之前那个理解的还是有问题。。。就这样反反复复,对一个知识的认识不断的升华了。

最后,还发现一个很有趣的现象,在自然语言处理领域,中文近几年几乎没有原创性内容,都是英文出来一个模型,然后移植到中文里。。。醉了。。。

重要声明:以下学习笔记都是基于网上各大博客学习、整理而来。

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

         我们知道,对于给定的算法我们不仅要考虑数学上的正确性,例如在做基于深度学习的模型时,不仅要通过调参、调整结构等手段使结果满足我们的期望,而且还要讨论其算法复杂度,一般来说有两项内容,【时间复杂度】和【空间复杂度】。

         算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能反映出算法的优劣与否,或者说时间复杂度是总运算表达式中受n的变化影响最大的那一项(不含系数)。

         一种方法是事后统计的方法,该方法必须运行程序过后才能获得,并且依赖于计算机的硬件、软件环境因素,有事掩盖算法本身的优势,所以人们更多使用事前分析估算的方法。

         一个算法是由控制结构(顺序、分支和循环3种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。为了便于比较同一个问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本操作的原操作,以该基本操作的重复执行的次数作为算法的时间量度。

2.1. 时间复杂度 

(1)时间频度 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
(2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。(联系数学基础等价无穷小)
        T(n) 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值