第四阶段我们进行深度学习(AI),本部分(第一部分)主要是对底层的数据结构与算法部分进行详尽的讲解,通过本部分的学习主要达到以下两方面的效果:
1.对开发中常见的算法能应用自如,让你在跳槽找工作中“算法题”不再是阻碍你“钱途”的拦路虎。
2.我们不需要调参数的调参攻城狮,我们要做正真的自己的AI模型。
3.在此立个flag,年底推出两款AI作品【1.作诗AI小牛,2.聊天AI小新新】
4.本部分预计40篇左右。
最近在忙别的事情,有段时间没有更新啦,今天我又回来了。我们接着上次的话题继续聊,不过本次侧重的是度量的几个维度。
1.最好、最坏情况时间复杂度
最好情况时间复杂度就是,在最理想的情况下,执行一段代码的时间复杂度。比如一个数组其中有10个元素,我们要找一个元素,当要查找的元素正好是这个数组的第一个元素,这个时候对应的时间复杂度就是最好情况下的时间复杂度。
最坏情况时间复杂度就是,在最糟糕的情况下,执行一段代码的时间复杂度。正如上面的例子,若要找的这个元素不在这个列表中或者在最后的一个位置,则我们就需要把整个数组遍历一遍才行,所以这种最糟糕情况下对应的时间复杂度就是最坏情况复杂度。
2.平均情况时间复杂度
我们从上面的第一条中可以感知,最好情况时间复杂度和最坏情况时间复杂度对应的都是极端情况下的代码复杂度,发生的概率其实并不大。为了更好表示平均情况下的复杂度,我们需要引入另一个概念:平均情况下时间复杂度,我们简称平均时间复杂度。
我们就上面的例子分析一下平均情况下的时间复杂度,我们要查找的变量设为X,其在数组中的位置有n+1中情况:在数组的0~n-1位置中和不在数组中。我们把每种情况下需要查找的遍历的元素个数累加起来,然后再除以n+1,就可以得到需要遍历的元素个数的平均值,即:(1+2+3+.....+n+n)/(n+1)=n(n+3)/2(n+1)
我们通过上节知道,时间复杂度的大O标记法中,可以省略掉系数、低阶、常量,所以,化简后可得平均时间复杂度就是O(n).
好了,今天的分享就到此结束啦。
如果你觉得公众号的内容不错,可以推荐于身边的朋友,谢谢诶!
注意:1.欢迎大家把自己的答案在最下面进行留言,或者后台留言。
2.此系列练习运行环境为python2.7或者3.6都是可以的,对于还未装开发环境的小伙伴请留言,视人数多少会为大家讲解环境的搭建。
3.代码是可以直接复制在编译器中直接运行的,在查看的时候可以通过滑动屏幕来查看。
4. 1.作诗AI小牛,2.聊天AI小新新,敬请期待,到时源码奉上。
5.本部分的算法代码我会用c语言或者python语言直接给出实例,可以在pycharm中直接运行
本文分享自 python编程从入门到实践 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!