为什么要掌握算法 建议可以去读下吴军老师的《数学之美》、《计算之魂》,以及高德纳的《计算机程序设计艺术》,就会知道算法在当今这个世界的重大作用。 算法与数据结构,这两个词常被一起谈及,因为目前计算机很多算法,其实就依赖于数据结构才能实现。 就以我比较熟悉的搜索为例 在爬虫爬取所有网页的阶段,就会用到图论的知识,如何不重复地遍历图中所有节点。 海量数据如何存储,以及如何读取,google的三驾马车就是为了解决这些问题而存在的,这其中也包含了很多算法的知识 建立索引的时候,如何对索引进行有效的压缩,这个又涉及到了霍夫曼编码 搜索的纠错与ANN召回,如何判断你的搜索词与目标搜索词的编辑距离 除了提到的这些,还有很多部分也做了算法与工程上的优化。
算法的衡量指标 关于算法的衡量指标,最常见的就是时间复杂度与空间复杂度,我们常见的各种算法其实时空复杂度都是很好分析的。 而除却这两个通用的指标之外,算法更多层面是为业务服务的,业务的指标就比较多种多样了,比如成本指标、召回准确率等 工程上没有绝对的最优,更多都是取舍。
参考文档 https://zh.m.wikipedia.org/zh-hans/时间复杂度https://zh.m.wikipedia.org/zh-hans/空间复杂度