第四阶段我们进行深度学习(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中直接运行
本文分享自 python编程从入门到实践 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!