一、多模式匹配问题
给定一组模式和一个文本,在文本中查找任一模式的全部出现信息。
输入:k个模式的集合p1,p2,...,pk,以及文本t=t1...tm
输出:所有位置i(1<=i<=m)的信息,使得与模式pj(1<=j<=k)相同的t的子字符串从位置i开始
二、使用关键词树
含有模式p1,p2,....,pk的集合的关键词树是一个根部标记的树,其满足如下条件:
1)树的每条边都被字母表的一个字母标记。
2)从同一顶点延伸出的任意2条边都有不同的标记。
3)模式集合中的每个模式pi(1<=i<=k)都是沿着某条路径从根到叶的顺序进行拼写的。
三、使用后缀树
文本t=t1...tm的后缀树是一个根部标记的且含有m片叶子的树
1)每条边由文本中的一个子字符串标记。
2)每个内部顶点(根节点除外)至少含有2个孩子。
3)从同一顶点出发的任意2条边起始于不同的字母。
4)文本t的每个后缀是依根部到某片叶子的路径拼写的。
将模式p穿过后缀树的线串定义为p沿着T中唯一路径的字符的匹配。如果这个匹配过程终止于P的所有字符都匹配上了,则称该字符串为完全线串;如果匹配半途终止,则称其为不完全线串。如果一个模式的线串是完全的,它会终止于T中的某个顶点或边。
算法:
SUFFIXTREEPATTERNMATCHING(p,t)
构建要匹配的文本t的后缀树
模式P在后缀树中的线串
if 线品是完全的
output 每个p匹配叶子在树的位置
else
output模式并未在文本中出现
本文介绍了一种多模式匹配问题的解决方法,通过构建关键词树和后缀树来提高搜索效率。关键词树能快速查找多个模式,而后缀树则用于文本中的模式匹配。这两种树结构都利用了树形结构的特点来实现高效的模式匹配。
1211

被折叠的 条评论
为什么被折叠?



