關於字串的好文章

小弟季義欽發表於2012-10-17

上交的july的文章: http://blog.csdn.net/v_july_v/article/details/6897097

他從 字首樹(Trie樹),到字尾樹(suffix樹),再談到自動機(automation machine)和KMP。

都是解決字串的經典方法。有興趣的同學可以仔細研讀。


=========== 字尾樹 與 KMP等演算法 ====================

字尾樹(SuffixTree)的文字匹配演算法字尾樹(SuffixTree)是一種特殊的Trie,它的用途非常廣泛,其中一個主要的應用是作文字匹配,也像KMP等演算法一樣,它也是空間換時間的一個典範。利用SuffixTree做文字匹配與其他的模式匹配演算法比如KMP和Boyer-Moore演算法的主要區別是,字尾樹文字匹配演算法是對文字T做預處理,而KMP演算法是對模式串P做預處理。因此字尾樹常用於文字靜態,而模式串動態的場合;而KMP等演算法常用於文字動態,模式串靜態的場合。設T的長度為n,P的長度為m,一般情況下m<n。在預處理中,用SuffixTree匹配的複雜度為O(n),而KMP和Boyer-Moore的複雜度為O(m)。可是預處理結束後,KMP等演算法的複雜度為O(n),字尾樹匹配演算法的複雜度只有O(m),這是令人驚歎的效率!


相關文章