[模式匹配] AC 自动机 模式匹配

 

广义的模式匹配:

https://en.wikipedia.org/wiki/Pattern_matching

 

字符串模式匹配:

https://en.wikipedia.org/wiki/String_searching_algorithm

 

  单模式匹配算法:

 

    BF / KMC 算法

    https://zhuanlan.zhihu.com/p/24649304

 

  使用自动机(NFA、DFA)的模式匹配算法:

  TRIE树

  最著名的AC 

    https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm

  号称比AC还快的WM

    https://en.wikipedia.org/wiki/Bitap_algorithm

正则表达式:

  https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

常用实现:

  posix兼容,perl兼容。

 

常用库:

  PCRE

 

NLP入门之形式语言与自动机学习:

https://zhuanlan.zhihu.com/p/28678040

https://zhuanlan.zhihu.com/p/28754354

https://zhuanlan.zhihu.com/p/28856459 

 

一本教材: 《形式语言与自动机理论

https://book.douban.com/subject/2179488/

 

其他:

https://zhuanlan.zhihu.com/p/30009083

https://zhuanlan.zhihu.com/p/20693609

 

 

https://book.douban.com/subject/2038862/

http://blog.jqian.net/post/ac-automation.html

http://www.cnblogs.com/zzqcn/p/3525636.html

 

AC算法原始论文->AC算法的简单代码->AC算法的优化改进->正则表达式如何构造成NFA(Thompson/Glushkov)->hyperscan原理

 

这个写的挺好的:

https://blog.csdn.net/21aspnet/article/details/8172359

 

我的思考

光从模式匹配这个问题本身,我在想subject和pattern是不是可以对等调换的呢?

即编译了一堆subject然后去匹配一堆pattern,和编译了一堆pattern然后去匹配一堆subject?

这个问题的答案是:是的。分别叫NFA,DFA。两个状态机。

 

转载于:https://www.cnblogs.com/hugetong/p/8629306.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值