KMP算法之DFA画法,非常简单

前几天看了关于KMP算法的资料,一直不知道这个DFA怎么画,后来搞明白了,今天有时间就把自己理解的写出来以供大家参考。

看这个需要你对KMP有点了解,我只讲怎么画这个DAF图,其它基础知识你们再去看资料了。



我就直接先把算法第四章的图搬上来了,然后开始一步步说怎么画


第一步:

因为A匹配所以若果是A就可以到状态1,B,C就还是状态0。那么结果就是1 0 0;

第二步:

因为就两个字母A和B,中间没有了,所以就复制j=0时的状态为 1 0 0,然后又因为B是匹配的可以进入到下一个状态,所以就把B的那一个更新为2,结果就是 1 2 0

第三步:

因为有三个字母了,就把第1个字母B和第0个字母匹配,因为第0个字母是A,匹配失败,所以还是把j=0的状态复制过来得到 1 0 0,  然后又因为A是匹配的可以进入到下一个状态,所以就把A的那一个更新为3,结果就是 3 0 0

第四步:

现在就是有四个字母了,就把中间的B,A和第0个字母进行比较,先用B和第0个字母比较,因为第0个字母是A,所以失败。再用A和第0个字母比较,显然比较成功,那么就进入状态1,因为状态是从0开始的,现在就把j=1的值复制过来得到1  2  0,然后又因为B是匹配的可以进入到下一个状态,所以就把B的那一个更新为4,结果就是 1  4  0

<
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值