toBeTheLight.github.io 荒原

阅读:《算法图解》(7)以后的路

2018-02-05
toBeTheLight

这一章是对其他算法的简单介绍。这章的大部分东西我都是不懂的Orz。

第十一章 接下来如何做

  • 二叉查找树:对于其中的每个节点,左子节点的值都比它小,而右子节点的值都比它大。二叉查找树查找查找方式几乎与二分查找一样。
  • B树?
  • 红黑树?
  • 堆?
  • 伸展树?

反向索引

反过来索引

  • 常规文档是文档===>关键字,反向索引(倒排索引)是关键字===>文档

傅里叶变换

  • 给它一杯沙冰,它能告诉你其中包含哪些成分。可使用创建音乐识别软件(分离频率)。

并行算法

  • 并行性管理开销:排序需要时间,而合并也是需要时间的。
  • 负载均衡:每个任务执行者的执行效率可能不同,如何合理的安排?

MapReduce

分布式算法 维基百科

当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

分布式算法非常适合短时间内完成海量工作,其中MapReduce基于两个简单的理念:映射(map)函数和归并(reduce)函数。

映射函数

接受一个数组,并对其中的每个元素执行同样的处理。如js中的Array.prototype.map

归并函数

理念为将很多项归并为一项。 Array.prototype.reduce

布隆过滤器和HyperLogLog

我们面临一个问题,使用散列表建立数万亿个数据的索引时,散列表会非常大,需要占用大量的存储空间。

布隆过滤器

布隆过滤器时一种概率型数据结构,提供的答案有可能不对,但很可能是正确的。当然这种可能不对是会多报但不会漏报的。

HyperLogLog

类似于布隆过滤器的算法。

SHA算法

SHA是一个散列函数,给定字符串,返回其散列值。 密码加密:sha256 + 盐

局部敏感的散列算法

SHA算法有一个特性为局部不敏感,即微小修改的散列结果是截然不同的,无法通过散列结果的相似性比较原有数据的相似性。 那么局部敏感的算法有Simhash,可比较相似性。

Diffe-Hellman 密钥交换

非对称加密

使用两个密钥:公钥和私钥。公钥公开,有人对你发送消息时,使用公钥加密,加密后的消息你使用私钥进行解密。 可扩展阅读https

线性规划

线性规划使用Simplex算法,所有的图算法都可使用线性规划来实现。


相关文章

Content