6 第四章 字符串匹配PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
➢ 在自然语言处理方面,信息检索是最关键的技术之一。例 如,信息检索IR(Information Retrieval)要求在一个大量的 文本集合中找出相关信息,串匹配就是它的基本技术之一。 ➢ 在网络安全方面,有一个很重要的问题,就是快速发现具 有某些特征码的有害信息,及早地防范于未然。病毒和入侵 检测NID(Network Intrusion Detection)都可以淋漓尽致 地发挥串匹配算法的优势。
大概我们最熟悉的应用是文本编辑中所使用的查找替 换,这是一种最简单的串匹配问题。
5
以下简要介绍串匹配问题的部分应用: ➢ 在生物计算领域,DNA和蛋白质序列可以看成是在特殊字 符集上的长文本(典型的DNA就是在{A,C,G,T}字符集 上),这种序列代表了人类生命的基因编码。生物基因实验 中的许多问题,比如在一个DNA链上查找某些特定特征,或 者比较两个基因序列有多大差异,都可以简单地归结为在 “文本”中查找特定的“模式”的串匹配问题。 ➢ 在信号处理领域,语音识别的一般情形可以大致描述为 确定一个语音信号是否符合某些特征。只要事先把语音信号 转化为特定形式的文本信息,我们就可以很好地应用串匹配 算法来解决这个问题。而语音识别的发展与目前非常热门的 人机交互的实现有着密切的关系。
9
模式匹配的分类
单模式 匹配的模式数目
多模式
精确匹配
模 匹配方式
式
近似匹配
匹配的具体内容
单词匹配 字符类匹配
正则表达匹配
10
文本的角度
实时(on-line)文本:文本可以动态地更新 例如:网络入侵监测
非实时(off-line)文本:被查找文本是静态的 例如:搜索引擎中查找的数据
11
➢ 单模式匹配 − 单模式匹配可定义为:在一个文本text(设长度为n)中查找 某个特定的子串pattern(设长度为m)。如果在text中找到 等于Βιβλιοθήκη Baiduattern的子串,则称匹配成功,函数返回pattern在 text中出现的位置(或序号),否则匹配失败。
8
6.后缀:两个字符串p和x,若存在字符串u(u可为空串),使 得p=ux成立x,称为p的后缀。
7.子串:两个字符串p和x,若存在字符串u,v(u,v可以为空 串),使得p=uxv成立,称x为p的子串。
8.字符集:在模式或文本中所有可能出现的字符形成的集合Σ, 记为,其大小记为|Σ|。
9.自动机(Automata): 一个包括状态集S,输入的字符 集Σ,状态转换函数δ,起始状态s0和终止状态集S1的五元 组M = {S,Σ,δ,s0,S1},我们主要讨论的是确定型有限自动 机DFA(Deterministic finite automata)。
3. 模式集:指所有需要匹配的模式形成的集合,记为
P={p1,p2,p3,…,pr},其中pi是模式集中第i个模式。记模式
集中所有模式长度的总和为|P|。 4. 最小模式长度:假设模式集中各个模式长度分别为l1,l2,…lr,
那么最小模式长度是指所有模式长度的最小值,即minlen = min{l1,l2,…lr}。 5. 前缀:两个字符串 p和x,若存在字符串v(v可为空串), 使得p=xv成立,称x为p的前缀。
串匹配问题不仅在各种实际应用中有着广泛的需要,而且 在计算机理论研究中也占有着十分重要的地位,因为它可以 不断地提出非常具有挑战性的理论问题。
7
概念
1. 文本:由若干个字符组成的有限序列,设为y={y1y2y3…yn}, 其中n为文本长度,即文本中总的字符个数。
2. 模式:也称为关键字,由若干个字符组成的有限序列 k={k1k2k3…km},其中m为模式长度,即模式中字符总数。
13
特点,扫描文本时不需要回溯,这对于处理实时输入的文本 有很大的好处。
1977年,R.S.Boyer和J.S.Moore两人设计了一种新的算 法(简称BM算法),该算法可以实现跳跃查寻,大多数情况 下只需扫描文本中的一部分字符。尽管它的时间复杂度并不 是最好,但是实际效果却常常是最快的。因此,BM算法得到 了很好的研究,衍生出许多变种,如Horspool-BM, TunedBM和QS等,这些算法至今都是最活跃的算法。
例如,如果捕获到的数据经过http协议的还原, 成为一个完整的网页;经过smtp协议还原后成为一 封完整的邮件。
4
串匹配(string matching),也叫模式匹配(pattern matching),可以简单地定义为在给定的字符流中查找出 满足某些指定属性的字符串。
这是计算机科学中最古老也最普遍的问题之一,计算机 科学中串匹配的应用可以说随处可见。近年来,随着计算机 技术(各种应用)的蓬勃发展,尤其是信息检索和生物计算 领域中的许多共同需求,极大激发了人们对串匹配算法的研 究兴趣。
➢ 多模式匹配 − 多模式匹配可定义为:在一个文本text(设长度为n)中查找 某些特定的子串patterns(设长度为m)。如果在text中找 到等于patterns中的某些子串,则称匹配成功,函数返回 pattern在text中出现的位置(或序号),否则匹配失败。
12
单模式匹配 算法
BF(Brute-Force)算法 (又称Naive算法) 是最早出现 的单关键字匹配算法,思想简单,虽然理论上的时间复杂度 很差,但是实际使用效果尚可,因此还被采用。ANSI C中提 供的strstr函数就是使用这种算法的改进版本。由于BF算法 扫描字符串时常常需要回溯,这样当文本难于随机访问时, 就显得特别不方便。
信息内容安全技术
第四章 字符串匹配
计算机网络与信息安全技术研究中心
1
2
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
3
引言
数据经过主被动获取之后,就要根据需要进行 相应的内容分析,由此,我们需要使用字符串匹配技 术。
1970年,S.A.Coovk理论上证明了串匹配问题可以在
O(m+n) 线性时间内解决,随后D.E.Knuth和V.R.Pratt仿照
S.A.Cook的证明构造了一个算法,与此同时,J.H.Morris也 得到相类似的算法,这样就产生了第一种线性时间复杂度的 模式匹配算法Knuth-Morris-Pratt 算法(简称为KMP算法)。 此种算法不仅时间复杂度良好,而且有一个非常好的