suffix automachine-陈立杰讲稿学习笔记
来源:互联网 发布:淘宝宝贝分类源代码 编辑:程序博客网 时间:2024/05/17 05:11
在回答什么是suffix auto machine前我们需要先知道什么是auto machine。
什么是自动机?一个FSN(有限状态自动机)就是一个具有识别字符串S对于自动机A是true还是false;即当s属于alpha,判断trans(state,ch)是否等于end;
structSAM_Node
{
SAM_Node*fa,*next[CHAR];intlen;
intid,pos;
SAM_Node(){}
SAM_Node(int_len){
fa= 0;
len= _len;memset(next,0,sizeof(next));
}};
SAM_NodeSAM_node[MAXN*2], *SAM_root, *SAM_last;intSAM_size;
SAM_Node*newSAM_Node(intlen)
{
SAM_node[SAM_size] =SAM_Node(len);SAM_node[SAM_size].id= SAM_size;return&SAM_node[SAM_size++];
}
SAM_Node*newSAM_Node(SAM_Node*p){
SAM_node[SAM_size] = *p;SAM_node[SAM_size].id= SAM_size;return&SAM_node[SAM_size++];
}
voidSAM_init(){
SAM_size = 0;
SAM_root = SAM_last = newSAM_Node(0);SAM_node[0].pos= 0;
}
voidSAM_add(intx,intlen){
SAM_Node*p = SAM_last, *np = newSAM_Node(p->len+1);np->pos= len;
SAM_last = np;for(;p && !p->next[x];p = p->fa)p->next[x] = np;
if(!p){
np->fa= SAM_root;
return;}
SAM_Node*q = p->next[x];if(q->len== p->len+ 1){
np->fa= q;
return;}
SAM_Node*nq = newSAM_Node(q);nq->len= p->len+ 1;
q->fa= nq;
np->fa= nq;
for(;p && p->next[x] == q;p = p->fa)p->next[x] = nq;
}
voidSAM_build(char*s){
SAM_init();
intlen =strlen(s);for(inti = 0;i < len;i++)
SAM_add(s[i] -'a',i+1);
}
//加入串后进行拓扑排序。charstr[MAXN];
inttopocnt[MAXN];SAM_Node*topsam[MAXN*2];
intn =strlen(str);SAM_build(str);memset(topocnt,0,sizeof(topocnt));for(inti = 0;i < SAM_size;i++)
topocnt[SAM_node[i].len]++;for(inti = 1;i <= n;i++)
topocnt[i] += topocnt[i-1];for(inti = 0;i < SAM_size;i++)
topsam[--topocnt[SAM_node[i].len]] = &SAM_node[i];
- suffix automachine-陈立杰讲稿学习笔记
- 业务学习讲稿
- suffix tree学习
- 优秀课件笔记之中国园林艺术讲稿
- 【学习点滴-hadoop】 初识hadoop-讲稿
- AC-自动机(AC-Automachine)
- 4.26 讲稿
- Suffix Trees
- SUFFIX TREE
- Suffix Tree
- suffix array
- suffix tree
- suffix arrary
- 如何学习C++(面向对象和windows编程第一节课讲稿)
- 为什么要学习计算机知识(英语专业文化基础第一节课讲稿-部分)
- 深度学习国外经典教程——大师带你入门(视频、PPT讲稿)
- 评审报告讲稿
- 早会演讲稿
- JZOJ5379. 【NOIP2017提高A组模拟9.21】Victor爱数字 数位DP
- 记录我的网安生涯
- Spring Boot —— 图片上传生态类
- VBA7种遍历方法
- 优秀免费资源300+
- suffix automachine-陈立杰讲稿学习笔记
- shell脚本-分支语句
- LegacyPackageDeleteObserver----Android中的变态设计
- cmake(1) 生成库文件
- HTML5的基本元素
- 去哪儿网前端面试
- 进程间通信——共享内存
- 函数模板和类模板
- 在CCS中使用printf函数输出的问题和解决过程