算法导论阅读笔记

您所在的位置:网站首页 1的表示法 算法导论阅读笔记

算法导论阅读笔记

2024-06-01 07:41| 来源: 网络整理| 查看: 265

算法导论阅读笔记——渐进表示法(1)

1渐进表示法的作用: 在表示算法的复杂度时一般使用的是与输入规模n有关的函数来表示算法的空间或者时间复杂度(以下以时间复杂度为例) 时间的复杂度的很脸标准就是对n的输入 程序运行所需的时间,当然这个时间是一个变化的时间,就算是同样规模的数据 ,其所用的时间也可能不同。举例说明的话 比如对于搜索一个输入数据时,假设搜索一项用时为1 ,当搜索的结果项,刚好在输入的数据的开头时,很明显 这时输入的用时是一个常数的时间 为1,当结果在末尾时 所需的时间便是n。 当要显性 简便地表示出或者比较一个算法的复杂度时,我们更倾向于使用一种更为优雅的方式,而不是将一个算法复杂度表示为5 n3+n+5这种比较冗余的式子(这样并不优雅) 当输入比较大时 多项式中低阶的项对于算法的复杂度影响不大 比如在n>100时 上式中的三阶项可能是二阶和一阶项的上万倍 所以这个时候 我们省略了低阶项 。 同样 我们比较两个算法的复杂度时 ,我们更多的是比较算法的增长速度 比如n3与n2时 我们会忽略掉前边的系数 因为在n很大时 系数的影响不会太大 更为重要的是其阶数 (对于一些比较简单的 比如幂函数 只要比较幂即可 但是对于其他函数 可以使用 两个函数之比 趋于正无穷来判断 什么?不会? 自己去翻翻高数课本) 所以 我们可以优雅地表示一个算法的复杂度了 2.大O表示法: 当我们评估一个算法复杂度时 像1中所说的 我们会根据输入情况不同 得到不同的复杂度。当我们遇到最坏情况时 我们用大O来表示。比如一个算法复杂度最坏的情况下为5 n3+n+5时 我们可以知道这个算法的复杂度为O(n3) 而更为精确的数学含义表示为 对于正的常数c(任取一个)存在n0 有f(n)n0时成立 则可以表示为f(n)属于O(g(n)) 所以 我们会发现 原来O表示的这玩意是满足上述判别式的f(n)的集合 但是 我们更喜欢表示为f(n)=O(g(n)) 这个等号便不是一般的等号 (至少不可以反转 )表示属于的含义 当O(g(n))出现在计算式中时 我们会把O(g(n))看作是O(g(n))这个集合的一个元素(注意 这两个大O表示不同哦) 我们值测量一个程序的复杂度时 更为关注的是在最坏情况下的复杂度 所以大O表示法更为广泛 3.大Ω表示法 与O类似 表示最好情况 自行推算 今日先写这么多 下次继续写



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3