2012年5月4日

BM字符串匹配算法

摘要: 在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前相当有效又容易理解的一种,一般情况下,比KMP算法快3-5倍。BM算法在移动模式串的时候是从左到右,而进行比较的时候是从右到左的。BM算法实际上包含两个并行的算法,坏字符算法和好后缀算法。这两种算法的目的就是让模式串每次向右移动尽可能大的距离(j+=x,x尽可能的大)。几个定义:例主串和模式串如下:主串 : mahtavaatalomaisema omalomailuun模式串: maisemaomaloma好后缀:模式串中的aloma为“好后缀”。坏字符:主串中的“t”为坏字符。好后缀算法如果程序匹配了一个好后缀, 并且在 阅读全文

posted @ 2012-05-04 19:57 梦想Sky 阅读(7204) 评论(1) 推荐(1) 编辑

ZBox字符串匹配算法

摘要: Zbox 的意思:一个字符串 S ,它的子串 S[i..n], 用 Z[i] 表示 S[i..n] 与 S 精确匹配的最长前缀的长度。如:abcdabce , Z[5] = 3。如图 1:1 2 3 4 5 6 7 8 a b c d a b c e |___| |___| zbox那么如何把 S中所有的 Z[i]找出来呢?并且让它的时间是线性的。如图 2: |____|___|_____________|____|___|______|1 22 31100 121 130 n k'|_g_| k Z[100] = 31,求 Z[121] = ?可以看出,因为 Z[100] = 31, 阅读全文

posted @ 2012-05-04 16:53 梦想Sky 阅读(1178) 评论(0) 推荐(0) 编辑

导航