- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DFA有限状态自动机的
字符串模式匹配中DFA的应用;POJ1204 Word Puzzles;将问题抽象;思考…;确定性有限状态自动机DFA(deterministic finite automata) ;确定性有限状态自动机; 单词前缀树(trie);单词前缀树(trie);Trie树用途例子:如何求字符串的所有不同子串;单词前缀树(trie);前缀指针;如何高效的构造前缀指针;如何高效的构造前缀指针;如何在建立好的DFA上遍历;回到原问题;回到原问题;最纯粹的Trie图题目;#include iostream
#include vector
#include queue
using namespace std;
#define LETTERS 26
int nNodesCount = 0;
struct CNode
{
CNode * pChilds[LETTERS];
CNode * pPrev;
bool bStopNode; //是否是终止节点(危险节点)
void Init() {
memset(pChilds,0,sizeof(pChilds));
bStopNode = false;
pPrev = NULL;
}
};
CNode Tree[200]; //10个模式串,每个10个字符,每个字符一个节点,也只要100个节点;void Insert( CNode * pRoot, char * s)
{
for( int i = 0; s[i]; i ++ ) {
if( pRoot-pChilds[s[i]-a] == NULL) {
pRoot-pChilds[s[i]-a] =
Tree + nNodesCount;
nNodesCount ++;
}
pRoot = pRoot-pChilds[s[i]-a];
}
pRoot-bStopNode = true;
};void BuildDfa( )
{
for( int i = 0;i LETTERS ;i ++ )
Tree[0].pChilds[i] = Tree + 1;
Tree[0].pPrev = NULL;
Tree[1].pPrev = Tree;
dequeCNode * q;
q.push_back(Tree+1);
while( ! q.empty() ){
CNode * pRoot = q.front();
q.pop_front();; for( int i = 0; i LETTERS ; i ++ ) {
CNode * p = pRoot-pChilds[i];
if( p) {
CNode * pPrev = pRoot-pPrev;
while( pPrev ) {
if( pPrev-pChilds[i] ) {
p-pPrev =
pPrev-pChilds[i];
if( p-pPrev-bStopNode )
p-bStopNode = true;
//自己的pPrev指向的节点是危险节点,则自己也是危险节点
break;
}
else
pPrev = pPrev-pPrev;
}
q.push_back(p);
}
}
} //对应于while( ! q.empty() )
};bool SearchDfa(char * s)
{
CNode * p = Tree + 1;
for( int i = 0; s[i] ;i ++ ) {
while(true) {
if( p-pChilds[s[i]-a]) {
p = p-pChilds[s[i]-a];
if( p-bStopNode )
return true;
break;
}
else
p = p-pPrev;
}
}
return false;
};int main()
{
nNodesCount = 2;
int M,N;
scanf(%d%d,N,M); //N个模式串,M个句子
for( int i = 0;i N; i ++ ) {
char s[20];
scanf(%s,s);
Insert(Tree + 1,s);
}
BuildDfa();
for( int i = 0 ;i M;i ++ ) {
char s[200];
scanf(%s,s);
co
您可能关注的文档
- China English的.ppt
- chp03语句和流程控值钠.ppt
- chp05_颜色的度量体的系.ppt
- chp4存储器-2的.ppt
- chp6作业答案的.ppt
- chp4存储器-1的.ppt
- chroot最佳实践的.doc
- cht02-MIS的技术基吹摹.ppt
- CICS概述及命令的.ppt
- CISCO第一学期第6章的测验 英文版.doc
- 6.1 国家权力机关 课件(共21张PPT)(含音频+视频)6.pptx
- 5.1 根本政治制度 课件(共 25 张ppt )-2025年统编版道德与法治八年级下册 (4)(含音频+视频).pptx
- 5.3社会历史的主体 2025年统编版高中政治必修4(共25张PPT)(含音频+视频).pptx
- 4《各种各样的叶》 课件(共32张PPT)-科学一年级下册(人教鄂教版2025)(含音频+视频).pptx
- 5.2薪火相传有继承课件(共33张PPT) 2025年统编版高中政治选择性必修2(含音频+视频)124.pptx
- 6.3 动手做(二) 课件(共19张PPT)2025年北师大版一年级数学下册(含音频+视频).pptx
- 人教版必修二Unit 1 Cultural Heritage Reading and Thinking 课件(共15张PPT)(含音频+视频).ppt
- 7.1《风景谈》课件(共41张PPT)(含音频+视频)8.pptx
- 5.1 人要自强 课件(共22张PPT)-2025年统编版道德与法治七年级下册 (1)(含音频+视频).pptx
- 5.2 基本政治制度 课件(共 30 张ppt )-2025年统编版道德与法治八年级下册 (2)(含音频+视频).pptx
文档评论(0)