首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有限自动机串匹配器

有限自动机串匹配器
EN

Stack Overflow用户
提问于 2016-04-24 08:32:55
回答 1查看 1.1K关注 0票数 3

我正在尝试使用java构建一个FA字符串匹配器。我有下面的伪码。

为了使有限自动机-匹配算法工作,必须计算转换函数.下面的算法计算转换函数,给出模式P和字母西格玛.

在上面的代码中,我不知道min(m + 1,q+ 2)来自哪里。(我确实理解为什么k= min(m + 1,q+ 2)而不是k= min(m,q+ 1 ),但为什么我们首先需要最小的m和q+1)

在5-7行之间,它将k减少一个,直到Pk成为Pqa的后缀,但我不明白Pqa代表什么。

此外,如何将第8行转换为java代码?二维数组是否足够或者我是否需要另一个数据结构。

一个相关问题:string matching with finite automata

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-24 09:20:20

在内部重复-直到循环说我们有Pq = 'abdab‘和字符串是'abdabcd',我们的字母表是abcd,我们正在寻找最好的选择,每个符号从字母表,然后存储过渡到新的状态。在以上情况下,在'a‘之前,我们应该移动到开头,'b’到最开始,c延长匹配,d符号应该在我们的初始字符串中存储指向第三个符号的指针。因此,Pqa应该从字母表中读成Pq加a字符。

编辑我们想要min of (q+2和m+1)的原因,因为我们希望向前迈出一步,我们也希望限制字符串的长度,这是显而易见的。为什么我们不能执行q+3 +4?这是因为我们只添加了一个字符,并且不可能将最佳匹配从q扩展到q+2,+3,仅用一个字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36820916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档