- 博客(9)
- 收藏
- 关注
原创 有限自动机总结
有限自动机A用来识别字符串,它由5部分组成:1)alphabet,字符集2)states,状态集合3)init,初始状态4)trans(s, ch),状态转移函数5)end 可接受state 集合A(str) == true的意思是,A可以接受字符串str,即从初始状态init读入str所有字符之后所达到的状态属于集合end, tran(init, str) 属于 end
2016-09-26 13:07:10 6466
原创 爬虫,索引,PageRank,搜索,综合例子
indexer 主要包含:html parser,word generator, url id generator,inverted index(keyword->[docId],docs table(url, id, refCount)word generator的职责是输入一个text文本,返回一个word iterable。具体参数有,最小word长度,exclude list,
2016-09-23 16:34:56 1392
原创 再谈Parser
Parser的作用就是把一个字符串(一维,流)parse成一个数据结构。Parser的写法大概有2种方式1)递归下降(recursive descend)2)事件驱动的状态机。状态就是一些表明当前状态的变量和最终要parse出的data structure。xml parser, json parser,key value pair parser, 都是第二种方法,其中所谓
2016-09-19 22:41:10 822
原创 TrieMap 实现
最大问题是占空间,R = 256,插入百万数量级的key就 OutOfMemory了。在key的数目比较小的情况下,正如理论指出的一样,性能高于HashMap;但到了占内存比较多的时候由于影响系统整体运行,性能不如HashMap。用HashMap而不是大小为256的数组作为link的时候,占内存少的多,几千万级的都不会OutOfMemory。仔细算一下 256-way Trie的一个N
2016-09-18 23:14:48 1715
原创 AC 自动机
多pattern的匹配, 比KMP更generalpublic class ACAutomata { static final int R = 26; private class Node { Node next[] = new Node[R]; Node fail; String prefix; int count; } public Node root = new
2016-09-18 10:38:28 312
原创 树堆TreapMap 实现
测试结果居然比红黑树,AVL都好。RBT,AVL,SBT,Treap 区别只是节点信息和 maintain函数。所有的读操作都可以放在普通BST里,insert 和 delete(除了RBT)也可以,只需要扩展Node 和 maintain函数就行。import java.util.Random;public class TreapMap, Value> { private
2016-09-15 19:48:51 641
原创 SBT(size balanced tree) 和AVL 合二为一
SBT 和AVL类似,只是是基于size 进行balance的,旋转的case是一样的。public class AVLOrSBTTreeMap, Value> { public enum BF {HEIGHT, SIZE, NONE}; //balance factor private BF bf = BF.HEIGHT; public AVLOrSBTTreeMap() { }
2016-09-15 19:40:04 682
原创 基于LLRB 红黑树的 TreeMap 实现
public class LLRBMap, Value> { private static final boolean RED = true; private static final boolean BLACK = false; private class Node { Key key; Value value; Node left, right; int sz, ht;
2016-09-14 14:51:32 663
原创 基于AVL自平衡树的TreeMap实现
自平衡的插入struct node { int val; struct node* left; struct node* right; int ht; node(int v) : val(v), left(nullptr), right(nullptr) {} node() : left(nullptr), right(nullptr) {} node(i
2016-09-08 16:35:35 765
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人