精确多模式匹配问题-关键词树、后缀树
2009-12-29 21:08
204 查看
一、多模式匹配问题
给定一组模式和一个文本,在文本中查找任一模式的全部出现信息。
输入: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模式并未在文本中出现
给定一组模式和一个文本,在文本中查找任一模式的全部出现信息。
输入: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模式并未在文本中出现
相关文章推荐
- Pyke 逻辑编程入门(8):模式匹配之“病理学问题的答案”
- 字符串多模式精确匹配(脏字/敏感词汇搜索算法) 之算法前传
- Oulipo 模式匹配问题
- 哈希算法在模式匹配问题中的应用
- Jquery contains() 精确匹配的问题
- FIRST_ROWS优化模式语言排序模糊匹配问题
- 编写lex模式匹配规则时注意的问题
- Lua模式匹配问题
- 模式匹配的问题
- 字符串多模式精确匹配(脏字/敏感词汇搜索算法) 之算法前传
- 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之B模式概述
- win7下,QT 及 QGLViewer 环境配置总结 | 版本匹配问题 | 解决debug模式下无法打开窗口
- USTC机试—字符串处理之模式匹配问题
- sed 匹配模式问题
- 串的模式匹配问题
- C语言数据结构之模式匹配字符串定位问题
- 浅谈KMP“串”的模式匹配问题
- 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之B模式概述
- php中文汉字替换与模式匹配的问题!!请大家必看!
- 重载方法调用精确匹配问题