【笔记分享】算法图解1
因本人最近在恶补数据结构与算法,学识经验有限,如有不正之处望读者指正,不胜感激;也望借此平台留下学习笔记以温故而知新。这一篇博客主要是最近刚开始接触算法图解一书,写的通俗易懂,很多图表帮忙理解,所以讲随手笔记分享至此,希望对您有所帮助。
算法图解
一些常见的大O运行时间:
说明:
广度优先搜索:
广度优先搜索的最终代码如下
狄克斯特拉算法包含的步骤(针对加权图场景)
说明:如果有负权边,就不能使用狄克斯特拉算法
NP问题:
以难解著称的问题
如何判别没办法解决的问题是不是NP完全问题呢
动态规划
递归的子集,递归部分有重叠,为了减少时间复杂度,所以将中间过程都保存下来的递归
动态规划实际应用的场景:
K最近邻算法
K最近邻算法常见应用:
推荐系统中基于用户的推荐和基于物品的推荐
将KNN用于两项基本工作:分类和回归
分类就是编组
回归就是预测一个数字
二叉查找树
对于其中每个节点,左子节点的值都比它小,右子节点的值都比它大
优势:插入和删除操作的速度很快
反向索引(倒排索引)
也就是搜索引擎的基本工作原理
并行算法
影响并行算法不能线性提高算法速度的原因有两个:
MapReduce
是一种流行的分布式算法:主要包括映射函数和归并函数两部分
Map
Reduce
布隆过滤器和HyperLogLog
是一种概率型数据结构,提供的答案有可能不对,但很可能是正确的
可能出现报错的情况,即可能指出在集合中查找某个主键是存在的,但是实际上并没有
不可能出现漏报的情况,如果布隆过滤器说集合中没有这个主键,那就一定不存在
SHA:secure hash algorithm 安全散列算法
典型应用1;可用于比较两个文件是否相同
典型应用2:计算密码的散列值