前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI_第一部分 数据结构与算法(2.时间与空间复杂度分析)

AI_第一部分 数据结构与算法(2.时间与空间复杂度分析)

作者头像
python编程从入门到实践
发布2019-10-22 15:02:23
5570
发布2019-10-22 15:02:23
举报
文章被收录于专栏:python编程军火库

第四阶段我们进行深度学习(AI),本部分(第一部分)主要是对底层的数据结构与算法部分进行详尽的讲解,通过本部分的学习主要达到以下两方面的效果:

1.对开发中常见的算法能应用自如,让你在跳槽找工作中“算法题”不再是阻碍你“钱途”的拦路虎。

2.我们不需要调参数的调参攻城狮,我们要做正真的自己的AI模型。

3.在此立个flag,年底推出两款AI作品【1.作诗AI小牛,2.聊天AI小新新】

4.本部分预计40篇左右。

今天我们来一起探讨一下复杂度相关的问题,提到时间复杂度,不知各位第一反应是什么,比如:不就是用时间换取空间,或者用空间来换取时间吗,恩恩,你说的呢不能算错。

问题1:什么是算法的复杂度分析?

我呢,从一下几个方面进行一下阐述:

其一,复杂度描述的是算法的执行时间(或者所占内存或者磁盘的空间)与数据的规模的增长之间的一种关系。

其二,它是要解决:how to 让计算机更加的快速且省存储空间的情况下解决你所设定的问题。

其三,评估其性能的指标:时间复杂度和空间复杂度。

问题2:为什么要进行算法的复杂度分析?

其一,与测试工程师在实际的生产环境中做的测试相比较而言,复杂度的分析不需要执行环境、且易操作、几乎没成本。so,作为开发工程师做复杂度的分析也是很容易实现的。

其二,还是我开篇说的那就话,从此你就会远离垃圾代码,让你在程序员中与众不同!

问题3:如何进行算法的复杂度分析?

其一,使用大O表示法

算法的执行时间与每行代码的执行次数成正比,用T(n)=O(f(n)),进行表示,其中T(n)表示算法执行总的时间,f(n)表示每行代码执行的总的次数,n代表数据的规模。

其二,算法复杂度分析准则:

1.单段代码的时间复杂度看执行次数最多的那一条或者几条:比如:for 或者while循环中的语句。

2.若有很多的代码,则分析最大循环嵌套的部分:比如代码的第1行到10行 中只有一个for循环,在14到30行之间存在for循环中嵌套for循环,则此时就要去分析的for循环嵌套for循环的这部分内容。

3.嵌套代码求乘积:比如递归调用的代码,多重循环的代码。

4.多个规模的情况使用加法法则处理。

其三,常见的算法复杂度:

多项式阶:随着数据的规模的增长,算法的执行时间和所占空间,按照多项式的比例增长。eg:

O(1) 常数阶 O(logn) 对数阶 O(n) 线性阶 O(nlogn) 线性对数阶 O(n^2) 平方阶 O(n^3)立方阶

常用的基本就包含这些。

非多项式阶:随着数据的规模的增长,算法的执行时间与所占空间暴增,这种的代码就性能极差了。

主要包括:

O(2^n) 指数阶 O(n!) 阶乘阶

好了,本期的内容到此结束,期待你的反馈!

如果你觉得公众号的内容不错,可以推荐于身边的朋友,谢谢诶!

注意:1.欢迎大家把自己的答案在最下面进行留言,或者后台留言。

2.此系列练习运行环境为python2.7或者3.6都是可以的,对于还未装开发环境的小伙伴请留言,视人数多少会为大家讲解环境的搭建。

3.代码是可以直接复制在编译器中直接运行的,在查看的时候可以通过滑动屏幕来查看。

4. 1.作诗AI小牛,2.聊天AI小新新,敬请期待,到时源码奉上。

5.本部分的算法代码我会用c语言或者python语言直接给出实例,可以在pycharm中直接运行

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python编程从入门到实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档