- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
bf算法—— 匹配子串
失效函数是根据转向函数建立的。首先,我们定义状态转移图中状态s的深度为从状态0到状态s的最短路径。 例如图1 a)起始状态的深度是0,状态1和3的深度是1,状态2,4,和6的深度是2,等等。 图1 a) d(0) = 0; d(1) = d(3) = 1; d(2) = d(6) = d(4) = 2 d(8) = d(7) = d(5) = 3; d(9) = 4 计算思路:先计算所有深度是1的状态的失效函数值,然后计算所有深度为2的状态,以此类推,直到所有状态(除了状态0,因为它的深度没有定义)的失效函数值都被计算出。 计算方法:用于计算某个状态失效函数值的算法在概念上是非常简单的。首先,令所有深度为1的状态s的函数值为f(s) = 0。假设所有深度小于d的状态的f值都已经被算出了,那么深度为d的状态的失效函数值将根据深度小于d的状态的失效函数值来计算。 为了计算深度为d状态的失效函数值,我们考虑每个深度为d-1的状态r,执行以下步骤: Step1:如果对所有状态a的g(r, a) = fail,那么什么都不做 Step2:否则,对每个使得g(r, a) = s存在的状态s,执行以下操作 记state = f(r)。 零次或者多次令state = f(state),直到出现一个状态使得g(state, a) != fail(注意到,因为对任意字符a,g(0, a) != fail,所以这种状态一定能够找到) Step3:记f(s) = g(state, a) 以上图a)为例说明计算的失效函数f; 先令f(1) = f(3) = 0,因为1和3是深度为1的状态。 计算深度为2的状态2,6和4的失效函数。 计算f(2),令state = f(1) = 0;由于g(0, e) = 0,得到f(2) = 0。 计算f(6),令state = f(1) = 0;由于g(0, i) = 0,得到f(6) = 0 。 计算f(4),令state = f(3) = 0; 由于g(0, h) = 1,得到f(4) = 1。 按这种方式继续,最终得到了如图1 b) 所示的失效函数f。 在计算失效函数的过程中,也更新了输出函数。当求出f(s) = s,时,我们把状态s的输出和状态s,的输出合并到一起。对于上文中的例子,从图1 a) 我们求出f(5) = 2。这时,把状态2的输出集,也就是{he},增加到状态5的输出集中,这样就得到了新的输出集合{he, she}。最终各状态的非空输出集如图 c) 所示。 算法2:建立失效函数f。 输入:转向函数g和部分的输出函数output。 输出:失效函数f和完整的输出函数output。 方法: 建立失效函数f的伪代码 转向函数的构建 图1中树型自动机的状态有0, 1, …, 9。某个状态(通常是0状态)被指定为起始状态。 转向函数把一个由状态和输入字符组成的二元组映射成另一个状态或者一条失败消息。 图1 a) 的状态图代表转向函数g。比如,从0到1标记着h 的边表示g(0, h) = 1,如果缺省箭头则表示失败。可见,对除e和i之外的其他输入字符,都有g(1, h) = fail。所有的树型有限自动机都有一个共同的特点,即对任何输入字符a, 都有g(0, a) != fail。我们将看到,转向函数在0状态上的这种性质确保每个输入字符都可以在状态机的一个操作循环内被处理。 举个例子,记树型有限自动机为状态机M。状态机M利用图1的函数去处理输入文本“ushers”,下图显示了M在处理文本串时产生的状态转移情况。 考虑M在状态4,且当前输入字符为e时的操作循环。由于g(4, e) = 5,状态机进入状态5,文本指针将前进到下一个输入字符,并且输出output(5)。这个输出表明状态机已经发现输入文本的第四个位置是“she”和“he”出现的结束位置。在状态5上输入字符r,状态机M在此次操作循环中将产生两次状态转移。由于g(5, r) = fail,M进入状态2 = f(5)。然后因为g(2, r) = 8,M进入状态8,同时前进到下一个输入字符。在这次操作循环中没有输出产生。 图4 扫描“ushers”时的状态转换序列 记s为状态机的当前状态,a为输入文本T的当前输入字符。树型有限自动机的一次操作循环可以定义如下: 如果g(s, a) = s,,那么树型有限自动机将做一个转向动作。自动机进入状态s,而且T的下一个字符变成当前的输入字符。另外,如果output( s
您可能关注的文档
- 薰衣草精油微胶囊化研究 - 纺织科技进展.pdf
- 城市交通干线的模糊综合评价 - 哈尔滨工业大学学报(社会科学版).pdf
- 按常用字频排列的简体字仓颉码表.pdf
- 铑催化四氢呋喃开环碘代硅基化反应研究.pdf
- 毕业设计题目补充3[2010-12-30].doc
- 上汽荣威营销效果价值评估与研究.pdf
- 第六章文件系统6.1 文件系统的概念.pdf
- 基于ofdm 的认知无线网络资源分配 - 南京大学学报(自然科学).pdf
- 航空动力学航空航天业的成形生产力.pdf
- 覆膜滴灌对玉米光合特性、物质积累及水分利用效率的影响 - 玉米科学.pdf
- 我国制造业上市公司信用风险评估模型探究.pdf
- 利用prospect+sail 模型反演植物生化参数的植被 - 应用生态学报.pdf
- 我在梅里脚下盖房子-3 - rare.doc
- cqc11-386101-2017无动力类游乐设施产品联盟认证规则.pdf
- 看品牌和购物者营销团队友谊的小船怎样变巨轮 - tns.pdf
- 基于强度折减的离散单元法在岩质边坡稳定性分析中 - 长江科学院院报.pdf
- 目录、文件共享和保护.ppt
- 基于关联数据的一致性和时效性清洗方法 - 计算机学报.pdf
- 全球化形象与环保形象对消费行为意向的影响 - 地理学报.pdf
- 渗透结晶型混凝土裂缝自修复材料试验研究 - 隧道建设.pdf
文档评论(0)