
算法
文章平均质量分 85
wxshi_java
喜欢研究深入的java技术
展开
-
Aho-Corasick算法
Aho-Corasick Algorithm 简称简称AC算法,通过将模式串预处理为确定有限状态自动机,扫描文本一遍就能结束。其复杂度为O(n),即与模式串的数量和长度无关;与其相当的就是Wu-Manber algorithm了(由吳昇博士跟 UdiManber所提出)。 AC算法的主要思想就是构造的有限状态自动机,根据有限状态自动机会根据输入进行模式串匹配。有限状态自动机会随着字符的输入而发原创 2015-12-28 16:04:29 · 2060 阅读 · 0 评论 -
KMP算法(Knuth-Morris-Pratt ),java实现KMP算法
KMP算法(Knuth-Morris-Pratt ),java实现KMP算法原创 2015-12-02 11:14:16 · 1120 阅读 · 0 评论 -
BM算法(Boyer-Moore) (JAVA实现)
BM算法时间上也是O(M+N),而且可以跳着search,但不适合characterset 太小的状况; BM算法主要涉及两个主要步骤:BadCharacter rule 和 Good Suffix rule,并且右后往前比对。 1.建立字符表,坏字符规则(BadCharacter rule): 思想: 字符表中的每个字符在匹配的的规则字符串(pattern)是否出现过,若没有出现,原创 2015-12-14 23:43:08 · 6682 阅读 · 0 评论 -
Levenshtein Distance算法(java实现)
所谓Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,操作包括一切你使用的手段将一个字符串转换成另一个字符串,比如插入一个字符、删除一个字符..等等;操作次数越少,说明两个字符串距离Levenshtein Distance越小,表示两个字符串越想似。 应用最广泛的的当然就是DNA序列比对了。 此处算法思想用一个“代价表”表示(我这里这么称呼,因为比对过程中产原创 2015-12-17 14:09:26 · 6532 阅读 · 0 评论 -
Kmean算法
Kmeans算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。Kmeans算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。 假设要把样本集分为K个类别,算法描述如下: (1)适当选择K个聚类的初始中心; (2)在第K次迭代中,对任意一个样本,求其到K个中心的距离,将该样本归到距离原创 2016-01-04 15:11:10 · 1873 阅读 · 0 评论