| 摘要: |
| 现有的串匹配算法通常以模式长度作为滑动窗口大小.在窗口移动后,往往会丢弃掉一些已扫描正文的信息.提出了LDM(linear DAWG matching)串匹配算法,该算法将正文分为[n/m]个相互重叠、大小为2m-1的扫描窗口.在每个扫描窗口内,算法批量地尝试m个可能位置,首先使用反向后缀自动机从窗口中间位置向前扫描模式前缀;若成功,则再使用正向有限状态自动机从中间位置向后扫描剩余的模式后缀.分析证明,LDM算法的最差、最好、平均时间复杂度分别达到了理论最好结果:O(n),O(n/m),O(n(1ogσm)/m).实际性能测试也验证了平均时间复杂度最优这一理论结果.而且,对于在较大字母表下查找短模式的情况,LDM算法速度在被测试算法中最快.总之,LDM算法不但适合进行离线模式匹配,而且还特别适合需要进行在线高速匹配的应用. |
| 关键词: 后缀自动机 有限状态自动机 LDM算法 串匹配 复杂度分析 |
| DOI: |
| 分类号: |
| 基金项目:Supported bvthe National High-Tech Research and Development Plan ofChina under Grant No.2001AAl47010B(国家高技术研究发展计划(863));the Defense Pre-Research Project of the‘Ninth Five-Year-Plan'of China under Grant No.41315.7.3(国家"九五"国防预研基金) |
|
| A Time Optimal Exact String Matching Algorithm |
|
HE Long-Tao,FANG Bin-Xing,YU Xiang-Zhan
|
| Abstract: |
| Existing string matching algorithms typically set the sliding window size as the pattern length. This paper presents a Linear DAWG Matching (LDM) algorithm, which divides the text into [n/m] overlapping windows of length 2m-1. In the windows, the algorithm attempts at m positions in batches. It firstly searches pattern prefixes from middle to left with a reversed suffix automaton, shifts to next window directly when it fails, otherwise, scans the corresponding suffixes forward with a finite automaton. Theoretical analysis shows that LDM has optimal time complexities in the worst (O(m)), best (O(n/m)) and average cases (O(n(1ogσm)/m)). Experimental comparison of LDM with the existing algorithms validates this theoretical claims of average case for searching long patterns. It further reveals that LDM is also efficient for searching short patterns on large alphabets. Thus, LDM algorithm not only suits for off-line pattern matching, but also fits in high-speed online pattern matching. |
| Key words: suffix automaton finite automaton LDM (linear DAWG matching) algorithm string matching complexity analysis |