多串匹配的一个SB算法。。。

    我在站军姿的时候热的不行。。只好瞎想分散注意力囧。。。莫名其妙想到了这么一个SB算法。。
多串匹配,就是有N个串,问模板串里面有没有其中一个串。。
假设模板串长度为T。。那么N次KMP显然需要至少NT的时间,不是很理想。。
然后有一个很NB的Aho-Corasick算法。。可是我过于沙茶完全不会。。。
然后就想到一个非常沙茶的算法,具体说就是先对所有串进行new lcp的预处理。。
然后把模板串的SA求出来,
然后用二分查找的办法找出跟当前串匹配长度最长的后缀,再进行检查。。
分析以下复杂度囧。。。new lcp TLogT,SA TLogT,二分查找(每次检查都是LogT的)LogT^2
总共就是TLogT+N*LogT^2…勉强能过某道多串匹配的题目囧。。。。

9 thoughts on “多串匹配的一个SB算法。。。

Leave a Reply

Your email address will not be published. Required fields are marked *