• [模式匹配] 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。两个状态机。

  • 相关阅读:
    三、瀑布流中的ajax请求详解 Confi
    显示GridControl的横向滚动条
    耳目一新的感觉(转)
    JavaScript学习笔记——变量,作用域和内存管理
    Servlet编程笔记
    JavaScript,应该选择内嵌形式还是外链形式(Inline Code Versus External Files)
    JavaScript学习笔记——Javascript基本语法
    为主机空间添加一个phpmyadmin
    关于Post中明文传送密码以及其他
    Maven原理和Maven2新特性
  • 原文地址:https://www.cnblogs.com/hugetong/p/8629306.html
Copyright © 2020-2023  润新知