
领域算法
文章平均质量分 87
在了解基础算法之后,我们还要学习和了解在不同专业领域有哪些特有的算法。这里不一定要求复杂度,而是要有知识面以及解决问题的思路。包括安全算法、字符串匹配、大数据处理、分布式、负载均衡、推荐、数据挖掘等领域。
毕设王同学
毕业设计、源码、论文、开发部署
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据挖掘 - 10大算法汇总
其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权 值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票, 被链接的越多,就意味着被其他网站投票越多。其缺点是: 在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效(相对的CART算法只需要扫描两次数据集,以下仅为决策树优缺点)。原创 2023-03-01 07:15:00 · 231 阅读 · 0 评论 -
推荐算法 - 汇总
基于邻域的推荐算法需要维护一个用户相似度矩阵或项目相似度矩阵, 因此对于项目的数目更新速度远远小于用户数目的增长速度的情况, 宜采用基于项目的推荐算法, 如 Amazon 建立的推荐系统正是基于项目的协同过滤推荐算法, 还有移动应用产品的推荐。Volume(数据规模)。比如通过矩阵因子分解(如LFM),我们可以把一个nm的矩阵分解为一个nk的矩阵乘以一个k*m的矩阵,这里的k可以是用户的特征、兴趣爱好与物品属性的一些联系,通过因子分解,可以找到用户和物品之间的一些潜在关联,从而填补之前矩阵中的缺失值。原创 2023-02-28 14:18:41 · 2107 阅读 · 0 评论 -
负载均衡算法 - 汇总
源地址哈希的思想是根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。所以这台机器压力会最轻。原创 2023-02-28 14:08:56 · 359 阅读 · 0 评论 -
分布式算法 - Snowflake算法
雪花算法提供了一个很好的设计思想,雪花算法生成的ID是趋势递增,不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也是非常高的,而且可以根据自身业务特性分配bit位,非常灵活。开始的41位是时间戳,41-bit位可表示2^41个数,每个数代表毫秒,那么雪花算法可用的时间年限是(1L原创 2023-02-26 07:15:00 · 546 阅读 · 0 评论 -
分布式算法 - ZAB算法
ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议。ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持 崩溃恢复 和 原子广播 协议。下面我们会重点讲这两个东西。原创 2023-02-26 07:00:00 · 446 阅读 · 0 评论 -
分布式算法 - Raft算法
不同于Paxos算法直接从分布式一致性问题出发推导出来,Raft算法则是从多副本状态机的角度提出,用于管理多副本状态机的日志复制。Raft实现了和Paxos相同的功能,它将一致性分解为多个子问题: Leader选举(Leader election)、日志同步(Log replication)、安全性(Safety)、日志压缩(Log compaction)、成员变更(Membership change)等。同时,Raft算法使用了更强的假设来减少了需要考虑的状态,使之变的易于理解和实现。原创 2023-02-25 07:45:00 · 451 阅读 · 0 评论 -
分布式算法 - Paxos算法
Paxos算法是Lamport宗师提出的一种基于消息传递的分布式一致性算法,使其获得2013年图灵奖。Paxos由Lamport于1998年在《The Part-Time Parliament》论文中首次公开,最初的描述使用希腊的一个小岛Paxos作为比喻,描述了Paxos小岛中通过决议的流程,并以此命名这个算法,但是这个描述理解起来比较有挑战性。后来在2001年,Lamport觉得同行不能理解他的幽默感,于是重新发表了朴实的算法描述版本《Paxos Made Simple》。原创 2023-02-25 07:15:00 · 647 阅读 · 0 评论 -
分布式算法 - 一致性Hash算法
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义:平衡性(Balance): 平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。原创 2023-02-24 08:00:00 · 264 阅读 · 0 评论 -
分布式算法 - Overview
Snowflake,雪花算法是由Twitter开源的分布式ID生成算法,以划分命名空间的方式将 64-bit位分割成多个部分,每个部分代表不同的含义。因为它提供了一种ID生成及生成的思路,当然这种方案就是需要考虑时钟回拨的问题以及做一些 buffer的缓冲设计提高性能。因为他是为 Zookeeper 设计的分布式一致性协议!Paxos是出了名的难懂,而Raft正是为了探索一种更易于理解的一致性算法而产生的。一致性Hash算法是个经典算法,Hash环的引入是为解决单调性(Monotonicity)的问题;原创 2023-02-24 07:00:00 · 197 阅读 · 0 评论 -
大数据处理 - Map & Reduce
MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。这样做的好处是可以在任务被分解后,可以通过大量机器进行并行计算,减少整个操作的时间。但如果你要我再通俗点介绍,那么,说白了,Mapreduce的原理就是一个归并排序。适用范围: 数据量大,但是数据种类小可以放入内存基本原理及要点: 将数据交给不同的机器去处理,数据划分,结果归约。原创 2023-02-22 08:15:00 · 296 阅读 · 0 评论 -
大数据处理 - 外(磁盘文件)排序
外排序, 即借助外部存储进行排序.适用范围: 大数据的排序,去重基本原理及要点: 外排序的归并方法,置换选择败者树原理,最优归并树。原创 2023-02-22 07:30:00 · 252 阅读 · 0 评论 -
大数据处理 - Trie树/数据库/倒排索引
正向索引的查询往往满足每个文档有序频繁的全文查询和每个单词在校验文档中的验证这样的查询。在正向索引中,文档占据了中心的位置,每个文档指向了一个它所包含的索引项的序列。其解决方法是: 用trie树统计每个词出现的次数,时间复杂度是O(n*le)(le表示单词的平准长度),然后是找出出现最频繁的前10个词。一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的。1000万字符串,其中有些是相同的(原创 2023-02-21 21:31:37 · 509 阅读 · 0 评论 -
大数据处理 - 双层桶划分
其实本质上还是分而治之的思想,重在“分”的技巧上!适用范围: 第k大,中位数,不重复或重复的数字基本原理及要点: 因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围,然后最后在一个可以接受的范围内进行。原创 2023-02-21 21:28:49 · 466 阅读 · 0 评论 -
大数据处理 - Bitmap & Bloom Filter
布隆在1970年提出了布隆过滤器(Bloom Filter),是一个很长的二进制向量(可以想象成一个序列)和一系列随机映射函数(hash function)。可用于判断一个元素是否在一个集合中,查询效率很高(1-N,最优能逼近于1)。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。优点: 占用空间小,查询快缺点: 有误判,删除困难这里有必要介绍一下False Positive和False Negative的概念:False Positive: 中文可以理解为“假阳性”,在原创 2023-02-20 08:30:00 · 386 阅读 · 0 评论 -
大数据处理 - 分治/hash/排序
分而治之/hash映射: 针对数据太大,内存受限,只能是: 把大文件化成(取模映射)小文件,即16字方针: 大而化小,各个击破,缩小规模,逐个解决hash_map统计: 当大文件转化了小文件,那么我们便可以采用常规的hash_map(ip,value)来进行频率统计。堆/快速排序: 统计完了之后,便进行排序(可采取堆排序),得到次数最多的IP。原创 2023-02-20 08:00:00 · 339 阅读 · 0 评论 -
大数据处理 - Overview
布隆过滤器有着广泛的应用,对于大量数据的“存不存在”的问题在空间上有明显优势,但是在判断存不存在是有一定的错误率(false positive),也就是说,有可能把不属于这个集合的元素误认为属于这个集合(False Positive),但不会把属于这个集合的元素误认为不属于这个集合(False Negative)适用范围: 第k大,中位数,不重复或重复的数字;分而治之/hash映射: 针对数据太大,内存受限,只能是: 把大文件化成(取模映射)小文件,即16字方针: 大而化小,各个击破,缩小规模,逐个解决。原创 2023-02-19 07:30:00 · 443 阅读 · 0 评论 -
字符串匹配 - 文本预处理:后缀树(Suffix Tree)
上述字符串匹配算法(朴素的字符串匹配算法, KMP 算法, Boyer-Moore算法)均是通过对模式(Pattern)字符串进行预处理的方式来加快搜索速度。对 Pattern 进行预处理的最优复杂度为 O(m),其中 m 为 Pattern 字符串的长度。那么,有没有对文本(Text)进行预处理的算法呢?本文即将介绍一种对 Text 进行预处理的字符串匹配算法:后缀树(Suffix Tree)。后缀树的性质。原创 2023-02-19 07:15:00 · 477 阅读 · 0 评论 -
字符串匹配 - 模式预处理:BM 算法 (Boyer-Moore)
在 1977 年,Robert S. Boyer (Stanford Research Institute) 和 J Strother Moore (Xerox Palo Alto Research Center) 共同发表了文章《A Fast String Searching Algorithm》,介绍了一种新的快速字符串匹配算法。这种算法在逻辑上相对于现有的算法有了显著的改进,它对要搜索的字符串进行倒序的字符比较,并且当字符比较不匹配时无需对整个模式串再进行搜索。原创 2023-02-18 08:45:00 · 530 阅读 · 0 评论 -
字符串匹配 - 模式预处理:KMP 算法(Knuth-Morris-Pratt)
如下算法解释主要来源于这里,但是通常很难阅读完全,我推荐你直接进入下一节图例解释部分。我们来观察一下朴素的字符串匹配算法的操作过程。如下图(a)中所描述,在模式 P = ababaca 和文本 T 的匹配过程中,模板的一个特定位移 s,q = 5 个字符已经匹配成功,但模式 P 的第 6 个字符不能与相应的文本字符匹配。此时,q 个字符已经匹配成功的信息确定了相应的文本字符,而知道这 q 个文本字符,就使我们能够立即确定某些位移是非法的。原创 2023-02-18 08:30:00 · 510 阅读 · 0 评论 -
字符串匹配 - 模式预处理:朴素算法(Naive)(暴力破解)
没有预处理阶段;滑动窗口总是后移 1 位;对模式中的字符的比较顺序不限定,可以从前到后,也可以从后到前;匹配阶段需要 O((n - m + 1)m) 的时间复杂度;需要 2n 次的字符比较;很显然,朴素的字符串匹配算法 NAIVE-STRING-MATCHER 是最原始的算法,它通过使用循环来检查是否在范围 n-m+1 中存在满足条件 P[1..m] = T [s + 1..s + m] 的有效位移 s。原创 2023-02-17 08:45:00 · 508 阅读 · 0 评论 -
字符串匹配 - Overview
如果 0≤s≤n-m,并且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则说模式 P 在文本 T 中出现且位移为 s,且称 s 是一个有效位移(Valid Shift)。字符串匹配算法通常分为两个步骤:预处理(Preprocessing)和匹配(Matching)。上述字符串匹配算法(朴素的字符串匹配算法, KMP 算法, Boyer-Moore算法)均是通过对。Knuth-Morris-Pratt算法(简称KMP)是最常用的字符串匹配算法之一。原创 2023-02-17 08:00:00 · 437 阅读 · 0 评论 -
安全算法 - 国密算法
GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数问题从sP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。总则中的知识也适用于。原创 2023-02-16 07:45:00 · 1192 阅读 · 0 评论 -
安全算法 - 加密算法
加密技术包括两个元素: 加密算法和密钥。加密算法是将普通的文本(或者可以理解的信息)与一串数字(密钥)的结合,产生不可理解的密文的步骤。密钥是用来对数据进行编码和解码的一种算法。在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。原创 2023-02-16 07:15:00 · 553 阅读 · 0 评论 -
安全算法 - 摘要算法
消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文消息摘要算法主要应用在“数字签名”领域,作为对明文的摘要算法著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体无论输入的消息有多长,计算出来的消息摘要的长度总是固定的消息摘要看起来是“伪随机的”。也就是说对相同的信息求摘要结果相同消息轻微改变生成的摘要变化会很大。原创 2023-02-15 08:45:00 · 478 阅读 · 0 评论