Dr.*_*ius 24
已经深入研究了这个问题.奇怪的是,搜索一个模式/字符串的最佳算法不容易外推到多字符串匹配.
该"grep的"家庭实现了非常高效的方式多字符串搜索.如果您可以将它们用作外部程序,请执行此操作.
如果您确实需要实现该算法,我认为最快的方法是重现agrep所做的事情(agrep在多字符串匹配方面表现优异!). 这是源文件和可执行文件.
而在这里,你会发现描述关于字符串匹配使用的算法,理论背景,以及大量的信息和指针的论文.
值得注意的是:Knuth,Boyer,Moore,Baeza-Yates和其他人都在大力研究多字符串匹配.如果你需要一个非常快的算法,请不要犹豫站在他们宽阔的肩膀上.不要重新发明轮子.
Ped*_*eno 14
与单个模式的情况一样,有多种算法可用于多模式匹配,您必须找到最适合您目的的算法.本文一种用于多模式搜索(存档副本)的快速算法对其中的大多数进行了回顾,包括Aho-Corasick(这是Knuth-Morris-Pratt算法的多模式版本,具有线性复杂度)和Commentz-Walter(Boyer-Moore和Aho-Corasick的组合),并引入了一个新的,它使用Boyer-Moore的想法来完成匹配多个模式的任务.
另一种基于散列的算法是该论文中没有提到的,它是Rabin-Karp算法,它具有比其他算法更大的最坏情况复杂度,但通过散列减少线性因子来补偿它.哪一个更好取决于您的用例.如果要选择最快的,可能需要实现其中的几个并在应用程序中进行比较.
| 归档时间: |
|
| 查看次数: |
19633 次 |
| 最近记录: |