二叉查找树类似于下面这样。 对于其中的每个节点,左子节点的值都比它小 ,而右子节点的值都比它大 。
:B树,红黑树,堆,伸展树。
B树,红黑树,堆,伸展树。
B树,红黑树,堆,伸展树。
这个散列表的键为单词,值为包含指定单词的页面。现在假设有用户搜索hi,在这种情况下,搜索发动机需要检查哪些页面包含hi。
一个散列表,将单词映射到包含它的页面。这种数据结构被称为反向索引
Better Explained是一个杰出的网站,致力于以通俗易懂的语言阐释数学,它就傅里叶变换做了一个绝佳的比喻:给它一杯冰沙,它能告诉你其中包含哪些成分1 。换言之,给定一首歌曲,傅里叶变换能够将其中的各种频率分离出来。
如果能够将歌曲分解为不同的频率,就可强化你关心的部分,如强化低音并隐藏高音。傅里叶变换非常适合用于处理信号,可使用它来压缩音乐。为此,首先需要将音频文件分解为音符。傅里叶变换能够准确地指出各个音符对整个歌曲的贡献,让你能够将不重要的音符删除。这就是MP3格式的工作原理!
分布式算法非常适合用于在短时间内完成海量工作,其中的MapReduce基于两个简单的理念:映射(map )函数和归并(reduce )函数。
MapReduce使用这两个简单概念
Google只是比较散列值,因此不必存储你的密码!SHA被广泛用于计算密码的散列值。这种散列算法是单向的。
计算攻击者窃取了Gmail的SHA散列值,也无法据此推断出原始密码!
Simhash。如果你对字符串做细微的修改,Simhash生成的散列值也只存在细微的差别。
Google使用Simhash来判断网页是否已搜集。 老师可以使用Simhash来判断学生的论文是否是从网上抄的。
检查两项内容的相似程度时,Simhash
如何对消息进行加密,以便只有收件人才能看懂呢?
Diffie-Hellman使用两个密钥:公钥和私钥。顾名思义,公钥就是公开的,可将其发布到网站上,通过电子邮件发送给朋友,或使用其他任何方式来发布。你不必将它藏着掖着。有人要向你发送消息时,他使用公钥对其进行加密。加密后的消息只有使用私钥才能解密。只要只有你知道私钥,就只有你才能解密消息! Diffie-Hellman算法及其替代者RSA依然被广泛使用。如果你对加密感兴趣,先着手研究Diffie-Hellman算法是不错的选择:它既优雅又不难理解。
最酷的算法之一。 线性规划用于在给定约束条件下最大限度地改善指定的指标。
,假设你所在的公司生产两种产品:衬衫和手提袋。衬衫每件利润2美元,需要消耗1米布料和5粒扣子;手提袋每个利润3美元,需要消耗2米布料和2粒扣子。你有11米布料和20粒扣子,为最大限度地提高利润,该生产多少件衬衫、多少个手提袋呢? 在这个例子中,目标是利润最大化,而约束条件是拥有的原材料数量。 再举一个例子。你是个政客,要尽可能多地获得支持票。你经过研究发现,平均而言,对于每张支持票,在旧金山需要付出1小时的劳动(宣传、研究等)和2美元的开销,而在芝加哥需要付出1.5小时的劳动和1美元的开销。在旧金山和芝加哥,你至少需要分别获得500和300张支持票。你有50天的时间,总预算为1500美元。请问你最多可从这两个地方获得多少支持票?
,假设你所在的公司生产两种产品:衬衫和手提袋。衬衫每件利润2美元,需要消耗1米布料和5粒扣子;手提袋每个利润3美元,需要消耗2米布料和2粒扣子。你有11米布料和20粒扣子,为最大限度地提高利润,该生产多少件衬衫、多少个手提袋呢? 在这个例子中,目标是利润最大化,而约束条件是拥有的原材料数量。 再举一个例子。你是个政客,要尽可能多地获得支持票。你经过研究发现,平均而言,对于每张支持票,在旧金山需要付出1小时的劳动(宣传、研究等)和2美元的开销,而在芝加哥需要付出1.5小时的劳动和1美元的开销。在旧金山和芝加哥,你至少需要分别获得500和300张支持票。你有50天的时间,总预算为1500美元。请问你最多可从这两个地方获得多少支持票?
所有的图算法都可使用线性规划来实现。线性规划是一个宽泛得多的框架,图问题只是其中的一个子集。
线性规划使用Simplex算法,
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/reads/%E7%AE%97%E6%B3%95%E5%9B%BE%E8%A7%A3.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)